接入 API 的基本流程是:
确保密钥的安全性,API_KEY通过技术QQ聊天私下获取。
商户节点号(PlatID):10001
交易Key(API_KEY):4c56ff4ce4aaf9573aa5dff913df997a
测试登录帐号:test
测试登录密码:123456
API调用时,需要传入Sign(用 API_KEY 对其请求参数签名后的结果)
签名(计算Sign参数)方法如下:
代码示例:
List lstOrder=new ArrayList();
lstOrder.add("PlatID");
lstOrder.add("NodeOrderID");
lstOrder.add("Phone");
lstOrder.add("Fee");
lstOrder.add("CallBackUrl");
lstOrder.add("TransType");
lstOrder.add("QQType");
lstOrder.add("IP");
Map paramMap=new HashMap();
//商户节点ID
paramMap.put("PlatID", "10001");
//商户订单号
paramMap.put("NodeOrderID",Sequence.GetSeq());
//充值手机号
paramMap.put("Phone", "13752520707");
//充值金额,以分为单位,10元
paramMap.put("Fee", "1000");
//回调地址
paramMap.put("CallBackUrl", "http://*******");
//Q币充值,默认00,话费充值,默认01
paramMap.put("TransType", "01");
//Q币类型 1000 Q币 1001 全国币 1456:会员 1455:红钻 1454:蓝钻 1453:黄钻 1452:绿钻 1451:粉钻 1460:紫钻
paramMap.put("QQType", "1000");
//客户端远程IP地址
paramMap.put("IP", "113.119.132.169");
String mekey="";
String []strArray=(String[]) lstOrder.toArray(new String[lstOrder.size()]);
Arrays.sort(strArray);
List lstSort=Arrays.asList(strArray);
for(int i=0;i《lstSort.size();i++)
{
mekey +=paramMap.get(lstSort.get(i));
}
mekey +=SignKey;
//签名加密
String Sign =MD5.md5(mekey).toUpperCase();
接口地址:http://http://127.0.0.1:16756//Recharge.json
接口用途:提交充值订单。
请求方式:HTTP GET/HTTP POST
返回格式:JSON
特别说明:
该接口返回的是下单结果,并不代表充值结果,因为充值过程需要提交到第三方平台异步处理。要获取最终的充值结果,请通过充值结果回调通知,或通过订单状态查询接口查询。
正常情况下(请求参数合法),通过该接口提交订单会立即返回下单成功,如遇到第三方平台维护或系统维护的情况,会立即返回下单失败。
请求参数说明:
参数名 | 是否必须 | 描述 |
---|---|---|
PlatID | 是 | 商户节点ID,由平台商分配 |
NodeOrderID | 是 | 商户订单号,商户提交过来唯一订单号,例如20170315140124700939 |
Phone | 是 | 充值手机号 |
Fee | 是 | 充值金额,单位以分 |
CallBackUrl | 否 | 回调地址,订单成功或失败,平台商自动回调商户的系统进行通知 |
TransType | 是 | Q币充值,默认00,话费充值,默认01 (Q币充值,则QQType必须传值,01话费充值,可为空) |
QQType | 否 | Q币类型 1000 Q币 1456:会员 1455:红钻 1454:蓝钻 1453:黄钻 1452:绿钻 1451:粉钻 1460:紫钻 |
IP | 是 | 商户获取客户端IP地址,充值IP地址 |
SoftwareType | 否 | 软件类型,值为:Other、 Android、Iphone、Web、 Win Phone |
IMSI | 否 | APP充值,获取sim卡序列号 |
IMEI | 否 | APP充值,获取手机序列号 |
Attach | 否 | 回调也相应传回 |
Area | 否 | 游戏区域 |
AreaName | 否 | 游戏区域名称 |
Server | 否 | 游戏服务器 |
ServerName | 否 | 游戏服务器名称 |
Sign | 是 | 对请求参数的签名值,详见签名方法 |
返回结果说明:
{
success = true | false (仅代表下单结果)
errorCode = 错误代码
errorMsg = 错误描述
data = 下单成功子JSON信息,仅在接口调用成功(success=true)时返回
{
NodeOrderID = 商户提交过来订单号
InnerOrderID = 平台内部订单号
Fee = 充值金额
OrderTime = 订单处理时间
}
}
返回示例:
错误返回:
{
"errorCode":"1001",
"errorMsg":"该笔订单已经存在,不能重复下单",
"success":false
}
正确返回:
{
"data":
{
"NodeOrderID":"20170315140124700939",
"InnerOrderID":"20170315140124700940",
"Fee":"100","OrderTime":"20160331143824"
},
"errorCode":"0000",
"errorMsg":"",
"success":true
}
如果提交订单时指定了回调通知地址(Recharge.json 中的 CallBackUrl 参数),那么订单处理完成后,充充会把订单信息及充值结果以参数的形式,请求该地址通知给你。
你的回调地址在处理完充充的请求后,应当输出“success”,以告知充充你已经收到通知。
回调请求方式为:HTTP GET
在回调请求时,充充会把回调参数签名,签名算法与请求充充接口中的一致(详见签名方法),你可以通过验证签名值来确认回调请求的合法性。
回调参数说明:
参数名 | 描述 |
---|---|
PlatID | 商户节点号,由平台商分配 |
NodeOrderID | 商户提交过来唯一订单号,例如20170315140124700939 |
Phone | 充值手机号 |
Fee | 充值金额,单位以分 |
ResultTime | 订单结果时间,YYYYMMDDHHMMSS |
InnerOrderID | 平台商产生的内部订单号 |
TransState | 订单充值结果,0000 (充值成功) | 0001 (处理中) | 其它失败 |
Attach | 商户传入的附加参数 |
Sign | 对回调参数的签名值,详见签名方法 |
接口地址:http://http://127.0.0.1:16756//QueryDetail.json
接口用途:查询充值订单状态。
请求方式:HTTP GET/HTTP POST
返回格式:JSON
请求参数说明(注意:订单状态有效保留7天):
参数名 | 是否必须 | 描述 |
---|---|---|
PlatID | 是 | 商户节点号,由平台商分配 |
NodeOrderID | 是 | 商户订单号/平台订单,传其中任何1个即可,二选一 |
InnerOrderID | 是 | |
Sign | 是 | 对请求参数的签名值,详见签名方法 |
返回结果说明:
{
success = true | false (仅代表下单结果)
errorCode = 错误代码
errorMsg = 错误描述
data = 下单成功子JSON信息,仅在接口调用成功(success=true)时返回
{
NodeOrderID = 商户提交过来订单号
InnerOrderID = 平台内部订单号
Fee = 充值金额
OrderTime = 订单处理时间
}
}
返回示例:
错误返回:
{
"errorCode":"1001",
"errorMsg":"该笔订单已经存在,不能重复下单",
"success":false
}
充值处理中返回:
{
"errorCode":"0001",
"errorMsg":"订单处理中,请再次查询",
"success":true
}
充值成功返回:
{
"data":
{
"NodeOrderID":"20170315140124700939",
"InnerOrderID":"20170315140124700940",
"Fee":"100","OrderTime":"20160331143824"
},
"errorCode":"0000",
"errorMsg":"充值成功",
"success":true
}
接口地址:http://http://127.0.0.1:16756//QueryFee.json
接口用途:库存余额查询。
请求方式:HTTP GET/HTTP POST
返回格式:JSON
请求参数说明:
参数名 | 是否必须 | 描述 |
---|---|---|
PlatID | 是 | 商户节点号,由平台商分配 |
QueryDate | 是 | 查询时间,时间格式yyyyMMddHHmmss |
Sign | 是 | 对请求参数的签名值,详见签名方法 |
返回结果说明:
{
success = true | false (仅代表查询结果)
errorCode = 错误代码
errorMsg = 错误描述
storeFee = 库存余额,单位是元,仅在接口调用成功(success=true)时返回
}
返回示例:
错误返回:
{
"errorCode":"1019",
"errorMsg":"无此渠道节点或系统异常",
"success":false
}
查询成功返回:
{
"errorCode":"0000",
"errorMsg":"查询余额成功",
"success":true,
"storeFee":102083.20204
}
错误码(errorCode) | 含义(errorMsg) |
---|---|
0000 | 成功 |
0001 | 处理中,需要调用查询接口 |
1013 | 该笔订单已经存在,不能重复下单 |
9999 | 签名错误 |
1003 | 商户节点ID为空 |
1004 | 商户订单号为空 |
1005 | 充值手机号为空 |
1006 | 充值金额为空 |
1007 | 回调地址为空 |
1008 | IP地址为空 |
1009 | 签名为空 |
1010 | 传入商户节点号不正确 |
1011 | 交易类型为空 |
1012 | IP地址效验错误 |
1014 | Json解析错误 |
1015 | 充值金额不存在 |
1016 | 未配置汇率 |
1017 | 库存不足或其它错误 |
1018 | 交易订单充值失败 |
1019 | 无此渠道节点或系统异常 |