发起付款接口
注意:所有参数和返回值均使用“utf-8”编码。
跳转支付页接口URL:
https://api.sdpay.cc/pay
传参方式:Get/Post
请求参数:
# | 参数名 | 含义 | 类型 | 说明 |
---|---|---|---|---|
1 | app_id | app_id | int | 必填。接口后台获取 |
2 | order_no | 商户订单号 | string(64) | 必填。商户自己的订单号,请确保唯一 |
3 | trade_name | 商品名称 | string(64) | 可为空,建议设置成相对固定值,原样返回 |
4 | pay_type | 支付类型 | string(8) | 必填。详见下面的支付类型列表。“any”表示在任意,“bank”表示任意银行 |
5 | order_amount | 订单金额 | float | 必填。订单金额 |
6 | order_uid | 商户自定义客户号 | string(64) | 你们网站的用户唯一标识,可以是用户ID,用户名等,原样返回 |
7 | payer_name | 付款人名称 | string(64) | 可忽略,若需验证付款人则设置并参与签名 |
8 | sign | 签名 | string(32) | 必填,原始字符,不能使用urlencode处理。md5(app_id=10088&order_no=123456&trade_name=test&pay_type=wechat&order_amount=10.00&order_uid=abc[&payer_name=张三]&接口密钥) |
注意:1、创建订单时如果同一个用户(order_uid)存在相同商品(trade_name)、相同金额(order_amount)、相同支付渠道(pay_type)且未支付未过期的订单,那么继续使用这个订单(用户多次点击付款订单金额不会变化,减少二维码占用)。注意设置order_uid,避免串单。
注意:2、接口密钥在安全上非常重要,一定不要显示在任何网页代码、网址参数中。只可以放在服务端。计算sign时,先在服务端计算好,把计算出来的sign传出来。严禁在客户端计算sign,严禁在客户端存储接口密钥。
关于返回“支付通道忙”:1、没有上传与支付渠道(pay_type)相同类型且符合金额的二维码;2、所有的可用的二维码被其他未支付的订单占用。
支付类型列表:
# | 名称 | 代码 | 类型 | 说明 |
---|---|---|---|---|
1 | 支付宝 | alipay | 扫码 | |
2 | 微信 | 扫码 | ||
3 | 云闪付 | unionpay | 扫码 | |
4 | 通用码 | unvrsl | 扫码 | |
5 | 工商银行 | icbc | 银联转账 | |
6 | 工银商户 | icbcq | 扫码 | |
7 | 农业银行 | abc | 银联转账 | |
8 | 农业银行-收款码 | abcq | 扫码 | |
9 | 中国银行 | boc | 银联转账 | |
10 | 中国银行-收款码 | bocq | 扫码 | |
11 | 建设银行 | ccb | 银联转账 | |
12 | 建设银行-收款码 | ccbq | 扫码 | |
13 | 招商银行 | cmb | 银联转账 | |
14 | 招商银行-收款码 | cmbq | 扫码 | |
15 | 浦发银行 | spdb | 银联转账 | |
16 | 浦发银行-收款码 | spdbq | 扫码 | |
17 | 广发银行 | gdb | 银联转账 | |
18 | 广发银行-收款码 | gdbq | 扫码 | |
19 | 交通银行 | bocom | 银联转账 | |
20 | 交通银行-收款码 | bocomq | 扫码 | |
21 | 中信银行 | citic | 银联转账 | |
22 | 中信银行-收款码 | citicq | 扫码 | |
23 | 民生银行 | cmbc | 银联转账 | |
24 | 民生银行-收款码 | cmbcq | 扫码 | |
25 | 兴业银行 | cib | 银联转账 | |
26 | 兴业银行-收款码 | cibq | 扫码 | |
27 | 光大银行 | ceb | 银联转账 | |
28 | 光大银行-收款码 | cebq | 扫码 | |
29 | 华夏银行 | hxb | 银联转账 | |
30 | 华夏银行-收款码 | hxbq | 扫码 | |
31 | 邮政储蓄 | psbc | 银联转账 | |
32 | 邮政储蓄-收款码 | psbcq | 扫码 | |
33 | 北京银行 | bccb | 银联转账 | |
34 | 北京银行-收款码 | bccbq | 扫码 | |
35 | 平安银行 | pab | 银联转账 | |
36 | 平安银行-收款码 | pabq | 扫码 | |
37 | 特殊二维码 | special | 扫码 |
如果支付页接口URL后面加“?format=json”参数,那么返回结果就是 json 格式的,此方式需要开发者自己展示付款二维码
Json请求的返回格式:
{ "status":"1", //付款请求结果(只有为1的时候才有其他的值) "msg":"付款即时到账,未到账可联系我们", //提示给用户的文字信息,会根据不同场景,展示不同内容 "no":"20190930104010012345", //系统生成的订单号 "pay_type":"wechat", //支付类型:详见上面的支付类型列表 "order_amount":"10.00", //订单金额 "pay_amount":"10.00", //用户实际支付金额 "qr_money":"10.00", //使用的二维码的金额,如果为0表示使用的是任意金额二维码,具体金额需要用户输入 "qr":"wxp://f2f2f057706h5f088", //二维码内容 "qr_img":"data:image/jpg;base64,/9j/4QD0W...", //二维码图片的base64数据 "did":"10001", //该订单分配到的设备(手机)编号 "expires_in":"300", //二维码剩余有效秒数 "return_url":"https://www.abc.com/return_url" //接口回调网址 }
付款成功异步通知
用户付款成功后,我们会向接口的 异步通知网址 发送通知。您的服务器需返回“success”,就表示回调已收到,返回数据不要包含任何其它HTML代码。如果返回其它数据,会再通知5次。
传参方式:Post
参数内容:
# | 参数名 | 含义 | 类型 | 说明 |
---|---|---|---|---|
1 | no | 系统订单号 | string(32) | 系统生成的订单号 |
2 | order_no | 商户订单号 | string(64) | 商户自己的订单号,请确保唯一 |
3 | trade_name | 商品名称 | string(64) | 和请求时一样,原样返回 |
4 | pay_type | 支付类型 | string(8) | 支付宝=alipay 微信支付=wechat |
5 | order_amount | 订单金额 | float | 订单金额 |
6 | pay_amount | 实际支付金额 | float | 表示用户实际支付的金额。一般会和order_amount值一致,如果同时存在多个用户支付同一金额,就会和order_amount存在一定差额,差额一般在1-2分钱上下,越多人同时付款,差额越大。 |
7 | order_uid | 商户自定义客户号 | string(64) | 和请求时一样,原样返回 |
8 | payer_name | 付款人名称 | string(64) | 若后台设置验证付款人名称,才返回此字段并参加签名 |
9 | sign | 签名 | string(32) | md5(no=654321&order_no=123456&trade_name=test&pay_type=wechat&order_amount=10.00&pay_amount=10.00&order_uid=abc[&payer_name=张三]&接口密钥) |
注意:建议将发货的操作放在此页面下。
付款成功同步跳转
用户付款成功后,我们会在先通过上面的接口,通知您服务器付款成功,再过1-2秒后将用户跳转到接口的 return_url 网址。
传参方式:Get
参数内容:
# | 参数名 | 含义 | 类型 | 说明 |
---|---|---|---|---|
1 | no | 系统订单号 | string(32) | 系统生成的订单号 |
2 | order_no | 商户订单号 | string(64) | 商户自己的订单号,请确保唯一 |
3 | trade_name | 商品名称 | string(64) | 和请求时一样,原样返回 |
4 | pay_type | 支付类型 | string(8) | 支付宝=alipay 微信支付=wechat |
5 | order_amount | 订单金额 | float | 订单金额 |
6 | pay_amount | 实际支付金额 | float | 表示用户实际支付的金额。一般会和order_amount值一致,如果同时存在多个用户支付同一金额,就会和order_amount存在一定差额,差额一般在1-2分钱上下,越多人同时付款,差额越大。 |
7 | order_uid | 商户自定义客户号 | string(64) | 和请求时一样,原样返回 |
8 | payer_name | 付款人名称 | string(64) | 若后台设置验证付款人名称,才返回此字段并参加签名 |
9 | sign | 签名 | string(32) | md5(no=654321&order_no=123456&trade_name=test&pay_type=wechat&order_amount=10.00&pay_amount=10.00&order_uid=abc[&payer_name=张三]&接口密钥) |
注意:请不要将发货操作放在此页面下,用户提前关闭网页可能导致发货失败,此页面一般仅用于显示支付结果