目录

API 文档

优质
小牛编辑
130浏览
2023-12-01

API文档

请求参数(Get请求方式传参)

签名规则可参考文档MD5签名规则。对接过程中出现签名问题可通过签名排查工具进行自排查,其他问题,可参考文档 常见问题 处理

参数是否必须参数类型限制长度参数说明
uidyesstring255用户唯一性标识,唯一且不可变
creditsyeslong20本次兑换扣除的积分
itemCodenostring255自有商品商品编码(非必须字段)
appKeyyesstring255接口appKey,应用的唯一标识
timestampyesstring201970-01-01开始的时间戳,毫秒为单位。
descriptionyesstring255本次积分消耗的描述(带中文,请用utf-8进行url解码)
orderNumyesstring255兑吧订单号(请记录到数据库中)
typeyesstring255兑换类型:alipay(支付宝), qb(Q币), coupon(优惠券), object(实物), phonebill(话费), phoneflow(流量), virtual(虚拟商品),game(游戏), hdtool(活动抽奖),sign(签到)所有类型不区分大小写
facePricenoInteger11兑换商品的市场价值,单位是分,请自行转换单位
actualPriceyesInteger11此次兑换实际扣除开发者账户费用,单位为分
ipnostring255用户ip,不保证获取到
qqnostring255直冲商品Q币商品,QQ号码回传参数,其他商品不传该参数
phonenostring255直冲类话费商品手机号回传参数,非话费商品不传该参数
alipaynostring255支付宝充值商品支付宝账号参数回传,非支付宝商品不传该参数
waitAuditnoboolean是否需要审核(如需在自身系统进行审核处理,请记录下此信息)
paramsnostring255详情参数,不同的类型,请求时传不同的内容,中间用英文冒号分隔。(支付宝类型带中文,请用utf-8进行解码) 实物商品:返回收货信息(姓名:手机号:省份:城市:区域:街道:详细地址)、支付宝:返回账号信息(支付宝账号:实名)、话费:返回手机号、QB:返回QQ号
signyesstring255MD5签名,详见签名规则

特别提醒:

1.params中实物商品收货地址为四级地址,包含省:市:区:街道。但是直辖市地域因为没有省份,显示为:城市:城市:地区:街道。该参数可能存在二级地址或三级地址为空的情况,不建议开发者做地址库映射
2.请求参数里面的qq,phone,alipay 参数只在直冲类商品,Q币,话费,支付宝商品对应参数回传,其他类商品扣积分请求不传该参数。

响应参数

参数是否必须参数类型限制长度参数说明
statusyesstring255扣积分结果状态,回复ok或者fail (不要使用0和1)
errorMessagenostring255出错原因
bizIdyesstring255开发者的订单号(唯一且不重复,如果失败情况,该值可以不传)
creditsyeslong20用户积分余额

请按JSON格式返回结果。

响应示例

成功:
{
    "status":"ok",
    "errorMessage":" ",
    'bizId':"20140730192133033",
    "credits":"100"
}
失败:
{
    "status":"fail",
    "errorMessage":"失败原因(显示给用户)",
    "credits":"0"
}


代码示例

java

点击下载(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