创建代收订单
TIP
POST baseUrl
+ /api/payIn
请求参数
参数名 | 必选 | 类型 | 字段说明 | 示例值 |
---|---|---|---|---|
mobileMoneyPhone | Y | string(32) | 移动钱包号 | 721323213 |
currency | Y | string(32) | 货币代码 | TZS |
payType | Y | int | 支付产品类型 810 | |
amount | Y | decimal(20,0) | 金额(整数),最小1000,最大5000000 | 10000 |
reusableStatus | Y | boolean | NormalUssd使用 | false |
mchOrderNo | Y | string(32) | 商户订单号(不允许重复) | mch12345 |
expireTime | Y | long | 过期时间(单位:秒)默认3600不一定有效,部分通道支持 秒 | 3600 |
notifyUrl | Y | string(250) | 回调地址 | https://merchant.com/webhooks |
nonceStr | Y | string(32) | 随机字符串 | 1863484722378907648 |
remark | Y | string(32) | 备注 (请使用英文字符或不带重音的西语) | remark |
realName | Y | string(64) | 用户姓名限制最长64个字符 | Jeck-Ma (名字在前-姓在后 中间使用 - 字符隔开 例子 嘉诚-李 |
phone | Y | string(32) | 手机号 | +255xxxxxxx |
email | Y | string(64) | 邮箱 | example@maildomain.com |
请求示例
bash
curl -L 'baseUrl/api/payIn' \
-H 'MerchantId: 1002001' \
-H 'Sign: A6FC73F7D22EC8B4A064C8FFCC592CBF' \
-H 'Content-Type: application/json' \
-d '{"nonceStr":"xxxxxxxx","currency":"TZS","payType":888,"amount":20000,"reusableStatus":false,"mchOrderNo":"orderxxxxxxxxxxxxx","expireTime":10000,"notifyUrl":"https://xxxxxxxxx.com/callback","remark":"xxxxx","realName":"jack","phone":"747258206","email":"jack@gmail.com","idType":"1","idCard":"19770602000000000123","mobileMoneyPhone":"7472512345"}'
1
2
3
4
5
2
3
4
5
响应参数
参数名 | 类型 | 说明 |
---|---|---|
merchantId | long | 商户Id |
mchOrderNo | string(32) | 商户订单号 |
orderNo | string(32) | 平台订单号 |
payCode | string(32) | 请忽略 |
payUrl | string(250) | 请忽略 |
payDeskUrl | string(250) | 请忽略 |
amount | decimal(20,0) | 金额 |
orderFee | decimal(20,0) | 手续费 |
响应示例
json
{
"msg": "SUCCESS",
"code": 200,
"data": {
"merchantId": "1002001",
"mchOrderNo": "orderxxxxxxxxxxxxx",
"orderNo": "PAYINxxxxxxxxxxxxxxxx",
"payCode": null,
"payUrl": null,
"payDeskUrl": null,
"amount": 20000,
"orderFee": 300
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
json
{
"msg": "Payin_Order_Error",
"code": 500
}
1
2
3
4
2
3
4
查询代收订单
API EndPoint
POST baseUrl
+ /api/payInQuery
请求参数
参数名 | 必选 | 类型 | 示例值 | 字段说明 |
---|---|---|---|---|
mchOrderNo | N | string(32) | 1386556575370063873 | 商户订单号 |
orderNo | N | string(32) | PAYIN8551843837024997376 | 平台订单号 |
nonceStr | Y | string(32) | 9459931608 | 随机字符串 |
TIP
我们建议优先使用orderNo(平台订单号),平台订单号和商户订单号至少需要传递一个。
请求示例
bash
curl -L 'baseUrl/api/payInQuery' \
-H 'MerchantId: 1002001' \
-H 'Sign: A6FC73F7D22EC8B4A064C8FFCC592CBF' \
-H 'Content-Type: application/json' \
-d '{"mchOrderNo":"1386556575370063873","nonceStr":"9459931608","orderNo":"PAYIN8551843837024997376"}'
1
2
3
4
5
2
3
4
5
响应参数
参数名 | 类型 | 字段说明 |
---|---|---|
merchantId | int | 商户Id |
mchOrderNo | string(32) | 商户订单号 |
orderNo | string(32) | 平台订单号 |
channelOrderNo | string(32) | 渠道订单号 |
payType | string(32) | 代收PayType枚举 |
payCode | string(32) | 支付码 |
payUrl | string(250) | 付款二维码 |
amount | decimal(20,0) | 金额 |
fee | decimal(20,4) | 手续费 |
orderStatus | string(32) | 代收订单状态枚举 |
completionTime | date | 完成时间 |
响应示例
json
{
"msg": "SUCCESS",
"code": 200,
"data": {
"merchantId": "1002001",
"mchOrderNo": "1386556575370063873",
"orderNo": "PAYIN8551843837024997376",
"payType": "43",
"payCode": "",
"payUrl": "https://m.dana.id/link/pay?bizNo=202412021112128001101660361270",
"payDeskUrl": "https://idpaydesk2.brcashypro.com/views/pay.html?PAYIN8551843837024997376",
"amount": "20000",
"fee": "1700",
"orderStatus": "PAYING",
"completionTime": null,
"nonceStr": null
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
json
{
"msg": "SUCCESS",
"code": 200,
"data": {
"merchantId": "1002001",
"mchOrderNo": "1386556575370063873",
"orderNo": "PAYIN8551843837024997376",
"payType": "43",
"payCode": "",
"payUrl": "https://m.dana.id/link/pay?bizNo=202412021112128001101660361270",
"payDeskUrl": "https://idpaydesk2.brcashypro.com/views/pay.html?PAYIN8551843837024997376",
"amount": "20000",
"fee": "1700",
"orderStatus": "SUCCESS",
"completionTime": "2024-12-02 15:40:50",
"nonceStr": null
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
代收订单结果通知
异步通知请求
通知地址由商户提供
POST Merchant NotifyUrl
异步通知请求参数
参数名 | 类型 | 说明 |
---|---|---|
merchantId | int | 商户Id |
mchOrderNo | string(32) | 商户订单号 |
orderNo | string(32) | 平台订单号 |
amount | decimal(20,2) | 金额 |
fee | decimal(20,4) | 手续费 |
payUrl | string(32) | 收银台Url |
payDeskUrl | string(250) | 收银台地址 |
payType | string(32) | 代收PayType枚举 |
orderStatus | string(32) | 代收订单状态枚举 |
completionTime | date | 完成时间 |
nonceStr | string(32) | 随机字符串 |
patchOrderNo | string(32) | 关联的原订单的平台订单号 |
patchMchOrderNo | string(32) | 关联的原订单的商户订单号 |
orderType | string(32) | API=API接口 MCH=商户后台 DESK=收银台 PATCH=补单 |
异步通知请求示例
bash
curl -L 'merchant.com/webhooks/payin' \
-H 'MerchantId: 1002001' \
-H 'Sign: A6FC73F7D22EC8B4A064C8FFCC592CBF' \
-H 'Content-Type: application/json' \
-d '{"amount":20000.00,"completionTime":"2024-12-02 12:07:06","fee":2500.0000,"mchOrderNo":"1386503284355244033","merchantId":"3002120","nonceStr":"1733116026894","orderNo":"PAYIN8551790545658687488","orderStatus":"SUCCESS","payCode":"OR.GPNQR..INOPROID_BS","payType":"41","payUrl":"https://payurl.com"}'
1
2
3
4
5
2
3
4
5
json
{
"amount": 1000.0,
"completionTime": "2024-11-24 21:56:55",
"fee": 2.0,
"mchOrderNo": "order_xxxxxxxxxxxxxx",
"merchantId": "1012345",
"nonceStr": "1732507016285",
"orderNo": "PAYIN1234500000000001",
"orderStatus": "SUCCESS",
"orderType": "API",
"patchMchOrderNo": "order_xxxxxxxxxxxxxx",
"patchOrderNo": "PAYIN1234500000000001",
"payCode": "60088888888888",
"payType": "69",
"payUrl": "https://xxxxx.xxxx.com/xxx/xx/xxx"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
json
{
"amount": 1000.0,
"completionTime": "2024-11-24 21:56:55",
"fee": 2.0,
"mchOrderNo": "order_xxxxxxxxxxxxxx",
"merchantId": "2004015",
"nonceStr": "1732507016285",
"orderNo": "PAYIN1234500000000002",
"orderStatus": "SUCCESS",
"orderType": "PATCH",
"patchMchOrderNo": "order_xxxxxxxxxxxxxx0001",
"patchOrderNo": "PAYIN1234500000000001",
"payCode": "60088888888888",
"payType": "69"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TIP
fee
和 completionTime
仅在订单成功支付时有值。completionTime
的格式为 yyyy-MM-dd HH:mm:ss
。
关于orderType
为PATCH
时的补充说明
用户不按照订单金额付款或者重复付款会出现补单订单,此时补单订单的orderType
为PATCH
:
orderNo
是针对这笔订单新生成的平台订单号。patchOrderNo
为关联的原订单的平台订单号,patchMchOrderNo
为关联的原订单的商户订单号。mchOrderNo
为关联的原订单的商户订单号(带序列号标识)。注意,此时回调返回的mchOrderNo
末尾会增加序列号标识,用于区分多笔部分还款的订单。
例如您的商户订单号是MCH20230088
,当产生第一笔部分支付时,我们会在原订单的商户订单号mchOrderNo
末尾增加序列号00001
,您收到的回调的mchOrderNo
就是MCH2023008800001
,以此类推。
当发生补单行为时,我们的机器人也会在对应的商户群进行通知,通知会包含所有您需要的信息。
订单的orderType
为API
时:
patchOrderNo
和orderNo相同patchMchOrderNo
和mchOrderNo相同
此时上述参数没有额外的意义。
TIP
Http响应状态码为200、301或302表示已正常发送回调,其它状态码我们会认为回调失败。回调失败后会在1,2,4,8,16,32,64,128,256,512分钟
重试,一共重试回调10次。