API 文档
优质
小牛编辑
137浏览
2023-12-01
API文档
请求参数(Get请求方式传参)
签名规则可参考文档MD5签名规则。对接过程中出现签名问题可通过签名排查工具进行自排查,其他问题,可参考文档 常见问题 处理
参数 | 是否必须 | 参数类型 | 限制长度 | 参数说明 |
---|---|---|---|---|
uid | yes | string | 255 | 用户唯一性标识,唯一且不可变 |
credits | yes | long | 20 | 本次兑换扣除的积分 |
itemCode | no | string | 255 | 自有商品商品编码(非必须字段) |
appKey | yes | string | 255 | 接口appKey,应用的唯一标识 |
timestamp | yes | string | 20 | 1970-01-01开始的时间戳,毫秒为单位。 |
description | yes | string | 255 | 本次积分消耗的描述(带中文,请用utf-8进行url解码) |
orderNum | yes | string | 255 | 兑吧订单号(请记录到数据库中) |
type | yes | string | 255 | 兑换类型:alipay(支付宝), qb(Q币), coupon(优惠券), object(实物), phonebill(话费), phoneflow(流量), virtual(虚拟商品),game(游戏), hdtool(活动抽奖),sign(签到)所有类型不区分大小写 |
facePrice | no | Integer | 11 | 兑换商品的市场价值,单位是分,请自行转换单位 |
actualPrice | yes | Integer | 11 | 此次兑换实际扣除开发者账户费用,单位为分 |
ip | no | string | 255 | 用户ip,不保证获取到 |
no | string | 255 | 直冲商品Q币商品,QQ号码回传参数,其他商品不传该参数 | |
phone | no | string | 255 | 直冲类话费商品手机号回传参数,非话费商品不传该参数 |
alipay | no | string | 255 | 支付宝充值商品支付宝账号参数回传,非支付宝商品不传该参数 |
waitAudit | no | boolean | 是否需要审核(如需在自身系统进行审核处理,请记录下此信息) | |
params | no | string | 255 | 详情参数,不同的类型,请求时传不同的内容,中间用英文冒号分隔。(支付宝类型带中文,请用utf-8进行解码) 实物商品:返回收货信息(姓名:手机号:省份:城市:区域:街道:详细地址)、支付宝:返回账号信息(支付宝账号:实名)、话费:返回手机号、QB:返回QQ号 |
sign | yes | string | 255 | MD5签名,详见签名规则 |
特别提醒:
1.params中实物商品收货地址为四级地址,包含省:市:区:街道。但是直辖市地域因为没有省份,显示为:城市:城市:地区:街道。该参数可能存在二级地址或三级地址为空的情况,不建议开发者做地址库映射
2.请求参数里面的qq,phone,alipay 参数只在直冲类商品,Q币,话费,支付宝商品对应参数回传,其他类商品扣积分请求不传该参数。
响应参数
参数 | 是否必须 | 参数类型 | 限制长度 | 参数说明 |
---|---|---|---|---|
status | yes | string | 255 | 扣积分结果状态,回复ok或者fail (不要使用0和1) |
errorMessage | no | string | 255 | 出错原因 |
bizId | yes | string | 255 | 开发者的订单号(唯一且不重复,如果失败情况,该值可以不传) |
credits | yes | long | 20 | 用户积分余额 |
请按JSON格式返回结果。
响应示例
成功:
{
"status":"ok",
"errorMessage":" ",
'bizId':"20140730192133033",
"credits":"100"
}
失败:
{
"status":"fail",
"errorMessage":"失败原因(显示给用户)",
"credits":"0"
}
代码示例
java
如无法下载,请复制地址浏览器打开:https://github.com/duiba-Tech/duiba-java-sdk/archive/master.zip
@RequestMapping("/consume")
@ResponseBody
public String consume(HttpServletRequest request) {
CreditTool tool = new CreditTool(appKey, appSecret);
boolean success = false;
String errorMessage = "";
String bizId =null;
Long credits=0L;
try {
CreditConsumeParams params = tool.parseCreditConsume(request);
bizId = todo(); //开发者业务订单号,保证唯一不重复
credits = getCredits(); // getCredits()是根据开发者自身业务,获取的用户最新剩余积分数。
success = true;
} catch (Exception e) {
success = false;
errorMessage = e.getMessage();
e.printStackTrace();
}
CreditConsumeResult ccr = new CreditConsumeResult(success);
ccr.setBizId(bizId);
ccr.setErrorMessage(errorMessage);
ccr.setCredits(credits);
return ccr.toString();//返回扣积分结果json信息
}
php
2.PHP开发包 【点击下载】
/*
* 积分消耗请求的解析方法
* 当用户进行兑换时,兑吧会发起积分扣除请求,开发者收到请求后,可以通过此方法进行签名验证与解析,然后返回相应的格式
* 返回格式为:
* {"status":"ok","credits":"10","bizId":"no123546","errorMessage":""} 或者
* {"status":"fail","credits":"10","errorMessage":"余额不足"}
*/
function parseCreditConsume($appKey,$appSecret,$request_array){
if($request_array["appKey"] != $appKey){
throw new Exception("appKey not match");
}
if($request_array["timestamp"] == null ){
throw new Exception("timestamp can't be null");
}
$verify=signVerify($appSecret,$request_array);
if(!$verify){
throw new Exception("sign verify fail");
}
$ret=$request_array;
return $ret;
}
3.Python开发包【点击下载】
/*构建扣积分请求解析*/
def credits_consurme(self, request_params):
if self.appKey != request_params['appKey']:
raise Exception("appKey not match !")
elif request_params["timestamp"] == '':
raise Exception("timestamp can't be null ! ")
elif self.signVerify(self.appSecret, request_params) == False:
raise Exception("sign verify fail! ")
else:
return request_params