卡接商户代收付文档
商户对接代收付API文档
1.基本说明
(1)数据格式。所有请求和返回都采用POST,数据格式都是JSON。服务器返回的数据格式为:
{
code:xx, //表示成功或者失败,0表示处理成功,非0表示失败,
msg:xxx, //成功返回success,失败返回失败原因
data:xxx //真正有用的交互数据,是一个JSON对象,
异步通知时
会带上签名sign,只有data里面的数据参与签名。
}
(2)签名。对于所有待签名参数,对所有参数{key=value}采用字典序排序,然后以&符号拼接成一个字符串source,最后拼上md5key,source与md5key之间不需要任何符号相连。对于异步通知的回调,请勿采用写死参数的方式来验证签名,由于系统的更新,可能会有参数的增减,请对所有参数进行动态排序再签名。
示例,待签名参数:
{
merchNo:”tom”,
orderNo:”11111”,
amount:”100.00”,
currency:”INR”,
}
source=”amount=100.00¤cy=INR&merchNo=tom&orderNo=11111”
sign=MD5(source + md5_key)
(3)异步通知。代收和代付都会有异步通知。异步通知地址请在商户后台提前设置, 否则没有通知。代收仅通知成功的订单;代付无论订单是失败还是成功,都会有通 知。
(4)订单状态。
参数名 | 订单状态 | 说明 |
---|---|---|
orderState | 0 | 初始化 |
1 | 成功 | |
2 | 失败 | |
3 | 处理中 | |
4 | 关闭 | |
5 | 打款退回 |
2. 代收
2.1 代收下单
请求地址: 商户对接API/api/payIn参数列表:
参数 | 备注 | 类型 | 必填 |
---|---|---|---|
merchNo | 商户号 | String | Y |
orderNo | 订单号 | String(10,35) | Y |
amount | 金额,如100.00 | String | Y |
currency | 币种 | String | Y |
sign | 签名 | String | Y |
Request body:
{
"amount":"100.00",
"orderNo":"11111",
"merchNo":"tom",
"sign":"fb66a23f90594e0b6d382ea881d8809f",
"currency":"INR",
}
Success Response Body:
{
"msg":"success",
"code":0,
"data":{
"amount":"100.00",
"orderNo":"11111",
"code_url":"http://abc.com", //支付地址\
"merchNo":"tom",
"sign":"2ddd056fec77842acc1f7c022a4641f6",
"currency":"INR"
}
}
Fail Response Body:
{
“code” : 500,
“msg” : “下单失败!”
}
2.2 代收异步通知
如果订单支付成功,会以POST方式通知到商户后台设置的代收通知地址。
{
"code":0,
“msg”:”success”,
"data":{
"realAmount":"100.00", //实际支付金额
"amount":"100.00",
"businessNo":"9999999", //平台订单号 UTR
"orderNo":"11111",
"merchNo":"tom",
"orderState":"1"
}
}
(代收请以订单金额amount回调,不是真实金额realmoAmount。因为有时候我们会给玩家优惠)
2.3 代收查询
请求地址商户对接API/api/payIn/query请求参数:
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
merchNo | 商户号 | String | Y |
orderNo | 商户订单号 | String | Y |
sign | 签名 | String | Y |
Request body:
{
"orderNo":"11111",
"merchNo":"tom",
"sign":"0b6d3f90594e3821d8809ffb66a2ea88"
}
Success Response Body:
{
"code":0,
“msg”:”success”,
"data":{
"amount":"100.00",
"businessNo":"9999999", //平台订单号 UTR
"orderNo":"11111",
"merchNo":"tom",
"sign":"2ff91e80776eaee5d68fc0cf4b4faae1",
"orderState":"1"
}
}
Fail Response Body:
{
"code":500,
"msg":"订单不存在!"
}
3. 余额查询
请求地址:商户对接API/api/balance请求参数:
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
merchNo | 商户号 | String | Y |
timestamp | 时间戳毫秒 | String | Y |
currency | 币种 | String | Y |
sign | 签名 | String | Y |
Request body:
{
"currency":"INR",
"merchNo":"tom",
“timestamp”:”1696514427876”
"sign":"4fff69664b1c76d3d37d852e192113a1"
}
Success Response Body:
{
"code":0,
“msg”:”success”,
"data":{
"currency":"INR",
"balance":"8888.00",
"merchNo":"tom"
}
}
Fail Response Body:
{
“code” : 500,
“msg” : “INR not exist!”
}
4. 代付
4.1 代付下单
请求地址:商户对接API/api/payOut参数列表:
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
merchNo | 商户号 | String | Y |
orderNo | 订单号 | String(10, 35) | Y |
amount | 金额,如900.00 | String | Y |
currency | 币种 | String | Y |
acctName | 收款人姓名 | firstName@lastName | Y |
acctCode | 银行编码/IFSC/GCASH/ PAYMAYA | String | Y |
acctNo | 银行账号/GCASH/PAYMAYA/UPI等账号 | String | Y |
mobile | 收款人手机 | String | Y |
sign | 签名 | String | Y |
{
"amount": "100.00",
"orderNo": "22222",
"merchNo": "tom",
"acctCode": "GCASH",
"mobile": "09678888898",
"acctNo": "09064321778",
"acctName": "james@bron",
"sign": "48418c2213eddf85f89c77471557de1a",
"currency": "INR"
}
Success Response Body
{
"code": 0,
"msg": "代付订单已受理!",
"data":
{
"amount": "100.00",
"orderNo": "22222",
"merchNo": "tom",
“orderState”: “0”
}
}
{
“code” : 500,
“msg” : “下单失败!”
}
4.2 代付回调
代付最终处理结果会以POST方式, 通知到商户在后台设置的代付通知地址,商户需要返回 "ok" 字符串证明收到通知,否则系统会多次进行通知。Request body:
{
"code":0,
"msg":"success",
"data":{
"amount":"100.00",
"businessNo":"8888888", //平台订单号,仅成功订单才有
"orderNo":"22222",
"merchNo":"tom",
"sign":"d6a7d013c500bf7addcc336cba5b5bb9",
"orderState":"1",
“msg”:”accountNo error” //失败原因,仅在失败订单出现
}
}
4.3 代付查询
请求地址:商户对接API/api/payOut/query请求参数:
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
merchNo | 商户号 | String | Y |
orderNo | 商户订单号 | String | Y |
sign | 签名 | String | Y |
Request body:
{
"orderNo":"22222",
"merchNo":"tom",
"sign":"e43a19e73a2fd6cac1d85dd1dea3c5d9"
}
Success Response Body:
{
"code":0,
"msg":"success",
"data":{
"amount":"100.00",
"businessNo":"8888888", //平台订单号,仅成功订单才有
"orderNo":"22222",
"merchNo":"tom",
"sign":"d6a7d013c500bf7addcc336cba5b5bb9",
“msg”:”accountNo error” //失败原因,仅在失败订单出现
"orderState":"1"
}
}
Fail Response Body:
{
“code” : 500,
“msg” : “订单不存在!”
}