1. 话费做单API文档
快猫API文档
  • 话费做单API文档
    • 公共技术规范
    • 签名&异步回调代码示例
    • 话费做单
      • 查询订单信息
      • 分页查询订单
      • 查询是否匹配到订单
      • 上报做单结果
      • 查看做单库存信息
      • 话费帮充申请下单
      • 查看所有渠道及运营商编码
    • 权益帮充接口
      • 查询订单信息
      • 分页查询订单
      • 查询是否匹配到订单
      • 上报做单结果
      • 查看做单库存信息
      • 权益帮充申请下单
      • 所有渠道及产品
    • 餐饮代下单
      • 餐饮代下单-查询
      • 餐饮代下单-发起退款
      • 餐饮代下单下单
  1. 话费做单API文档

签名&异步回调代码示例

一、签名规则源码片段示例:#

// 组装签名参数
Map<String,Object> map=new TreeMap();
map.put("goodsId",goodsId);
map.put("account",account);
map.put("orderNo",orderNo);
map.put("ip",ip);
map.put("notifyUrl",notifyUrl);
......
 
// 拼接签名结果
String queryTime=System.currentTimeMillis()+"";
String sign=getSignAddQueryTime(map,queryTime,key);
String token=sign+","+memberId+","+tokenQueryTime;
 
// 设置请求头数据
HttpResponse httpResponse= HttpRequest.post("https://api.xianzhuanxia.com/api/......")
        .timeout(20000)
        .header("Auth_Token", Base64.encode(token))
        .body(JSONUtil.toJsonStr(map))
        .contentType(ContentType.JSON.getValue())
        .execute();
 
// 提供签名方法参考
public static String getSignAddQueryTime(Map<String, Object> params, String queryTime, String key) {
    try {
        StringBuffer pram = new StringBuffer();
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            if (ObjectUtil.isNotEmpty(entry.getValue())) {
                if (entry.getValue() instanceof BigDecimal) {
                    pram.append(entry.getKey())
.append("=")
.append(((BigDecimal) entry.getValue()).stripTrailingZeros().toPlainString());
                } else {
                    pram.append(entry.getKey()).append("=").append(entry.getValue());
                }
            }
        }
        pram.append("queryTime=" + queryTime + "key=").append(key);
        return md5(pram.toString()).toLowerCase();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

二、异步回调示例#

// 组装签名参数
Map<String,Object> map=new TreeMap();
map.put("orderNumber",req.getOrderNumber());
map.put("memberId",req.getMemberId());
map.put("goodsId",req.getGoodsId());
map.put("account",req.getAccount());
map.put("faceValue",req.getFaceValue());
map.put("price",req.getPrice());
map.put("status",req.getStatus());
......
 
// 签名
String localSign= getSign(map,key);
if (!StrUtil.equals(localSign, req.getSign()))//说明签名无效
{
    return "签名无效";
}
 
// 提供异步回调签名方法参考
public static String getSign(Map<String, Object> params, String key) {
    try {
        Map<String, Object> treeMap = new TreeMap<>(params);
 
        StringBuffer pram = new StringBuffer();
        for (Map.Entry<String, Object> entry : treeMap.entrySet()) {
            if (ObjectUtil.isNotEmpty(entry.getValue())) {
                if (entry.getValue() instanceof BigDecimal) {
                    pram.append(entry.getKey())
.append("=")
.append(((BigDecimal) entry.getValue()).stripTrailingZeros().toPlainString());
                } else {
                    pram.append(entry.getKey()).append("=").append(entry.getValue());
                }
            }
        }
        pram.append("key=").append(key);
        log.info("签名原始信息" + pram.toString());
        return md5(pram.toString()).toLowerCase();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
上一页
公共技术规范
下一页
查询订单信息
Built with