发起付款接口


注意:所有参数和返回值均使用“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 微信 wechat 扫码
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=张三]&接口密钥)

注意:请不要将发货操作放在此页面下,用户提前关闭网页可能导致发货失败,此页面一般仅用于显示支付结果