更新时间:2024-11-22 17:35:27
文档编号 | LC-DEP-240315001 | 保密等级 | 普通 |
---|---|---|---|
作者 | 郝龙潘、陈江勇 | 最后修改日期 | 2024-03-20 |
审 核 人 | 林道银 | 最后审批日期 | 2024-03-25 |
批 准 人 | 林喆 | 最后批准日期 | 2024-03-25 |
修订记录
日期 | 修订说明 | 修订人 |
---|---|---|
2024-04-15 | 新增产业支付预下单,查询,退款,退款查询,通知回调等api | 郝龙潘 |
2024-05-25 | 增加产业支付小程序支付方式 | 陈江勇 |
2024-10-12 | 4.2产业支付小程序支付接口增加微信B2b支付方式。pay_type=200 | 艾青松 |
调用API必须遵循以下规则:
为保证交易安全性,采用HTTPS传输,Content-type均为application/json
采用POST方法提交
提交和返回数据都为JSON格式
统一采用UTF-8字符编码
先判断协议字段返回,再判断业务返回,最后判断交易状态
MD5
接口中每一个字段(key_sign字段除外),以字典顺序排序之后,按照key1=value1&key2=value2.....&access_token="令牌"的顺序,进行拼接。对得到的字符串进行MD5签名/验签;
备注:无值null不参与签名,赋值的空字符串参与签名;
示例请求参数
:
{
"pay_ver": "201",
"pay_type": "020",
"service_id": "018",
"merchant_no": "839305812000286",
"terminal_id": "30616969",
"terminal_trace": "201811231154130000",
"terminal_time": "20181123115413",
"user_id": "2088002405630000",
"total_fee": "1",
"order_body": "",
"attach": "",
"payer_acct_name": "某某科技有限公司",
"key_sign": ""
}对应签名串
:
string1="attach=&merchant_no=839305812000286&order_body=&pay_type=020&pay_ver=201&payer_acct_name=***科技有限公司&service_id=018&terminal_id=30616969&terminal_time=20181123115413&
terminal_trace=201811231154130000&total_fee=1&user_id=2088002405630000" ;
待签名字符串:
string2=string1+"&access_token=xxxxxxxx";
通过摘要算法取得签名字符串: key_sign=md5(string2)
该接口返回的redirect_url字段地址,用于下方场景内执行地址跳转
使用场景:
场景一:微信和支付宝内的H5页面或者公众号场景。
场景二:app支付场景。
/pay/open/pretransfer
POST
请求参数
参数名称 | 类型 | 长度 | 必填 | 说明 |
---|---|---|---|---|
pay_ver | String | 3 | Y | 接口业务版本号, 可用值201 |
service_id | String | 3 | Y | 接口类型,当前类型 018 |
pay_type | String | 3 | Y | 支付方式:010 微企付020 支付宝商转 |
merchant_no | String | 15 | Y | 商户号 |
terminal_id | String | 8 | Y | 终端号 |
terminal_trace | String | 32 | Y | 终端流水号,可填写商户系统的业务订单号,多次请求时不可使用同一个值 |
terminal_time | String | 14 | Y | 终端交易时间,yyyyMMddHHmmss ,全局统一时间格式 |
total_fee | String | 12 | Y | 金额,单位分 |
order_confirm | String | 1 | N | 是否需要订单确认,传0:不需要确认订单。传1:需要确认订单,即需要确认后才会进行清算。不传默认不需要确认订单,pay_type=020时可用。 |
payer_acct_name | String | 100 | O | 限制付款人账户名称,传入则校验实际付款人和传入的一致性( pay_type=020时,若user_id传支付宝登录账号,此字段必传) |
user_id | String | 32 | O | 支付宝付款人标识, pay_type=020时必传。 模式1:传支付宝登录账号时(支持邮箱和手机号格式),配合payer_acct_name字段,可指定人员支付。 模式2:传支付宝user_id。适用于用户在支付宝内打开H5或者公众号后,获取用户user_id后发起支付。支付宝获取用户userid:https://opendocs.alipay.com/fw/api/105942 |
scene_type | String | 32 | O | 支付场景 APP:APP场景 |
timeout_express | String | 4 | N | 订单交易关闭时间 ,默认5分钟,需在规定时间内完成支付,超时支付的银行会进行退回。上限:360min |
order_body | String | 128 | N | 订单描述(官方账单里显示为商品名称),禁止使用+,空格,/,?,%,#,&,=这几类特殊符号 |
notify_url | String | 256 | N | 外部系统通知地址。4.5产业支付回调通知 |
attach | String | 128 | N | 附加数据,原样返回 |
key_sign | String | 32 | Y | 签名字符串,拼装所有非空参数(字典序)+令牌,UTF-8编码,32位md5加密转换。签名测试页 |
响应参数
参数名称 | 类型 | 长度 | 必填 | 说明 |
---|---|---|---|---|
return_code | String | 2 | Y | 响应码:01成功 ,02失败,响应码仅代表通信状态,不代表业务结果 |
return_msg | String | 128 | Y | 返回信息提示,“预支付请求成功”,“预支付请求失败”等 |
key_sign | String | 32 | Y | 签名串 签名测试页 |
result_code | String | 2 | N | 业务结果:01成功 ,02失败 |
merchant_name | String | 40 | N | 商户名称 |
merchant_no | String | 15 | N | 商户号 |
terminal_id | String | 8 | N | 终端号 |
terminal_trace | String | 32 | N | 终端流水号,商户系统的订单号,系统原样返回 |
terminal_time | String | 14 | N | 终端交易时间,yyyyMMddHHmmss,全局统一时间格式,系统原样返回 |
total_fee | String | 12 | N | 金额,单位分 |
order_status | String | 4 | N | 状态:0-未转账 1-成功 2-失败 3-支付中 4-撤销 5-退款成功 6-退款失败 7-超时 8-退款中 |
order_send_time | String | 14 | N | 订单发送时间,yyyyMMddHHmmss |
out_trade_no | String | 32 | N | 平台唯一订单号 |
channel_order_no | String | 64 | N | 渠道订单号 |
attach | String | 128 | N | 附加数据,原样返回 |
redirect_url | String | 1024 | N | 微信企业付和支付宝企业付返回链接路径,可重定向 |
/pay/open/minipretransfer
POST
微企付支付场景说明:取接口返回的mini_program参数,用于调用微信小程序跳转功能。
jump() {//按钮点击跳转方法,可自定义方法名
wx.navigateToMiniProgram({
appId: '接口返回的mp_appid',
path: '接口返回的mp_path地址',
envVersion: '接口返回的mp_version值',
success(res) {
// 打开成功,可修改成自己的业务逻辑
}
})
}
官方参考地址:https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html
支付宝场景说明:取接口返回的mini_program参数,用于调用支付宝的小程序跳转功能。
因用户第一次在商户使用支付宝的产业付时,需要进行签约授权,后续在商户再次支付时不用在签约,可直接进行付款,故此接口会根据用户是否是第一次支付而返回不同的参数。当path_type字段返回是1时,代表需要用户进行授权,当path_type字段返回是2时,代表需要跳转到支付页面。具体操作方式如下:
当path_type字段返回1时,操作方式:打开mp_path字段返回的授权链接
1、引入支付宝小程序基础库
2、支付宝开放平台控制台 开发设置 >openURL 配置, 申请添加https://ur.alipay.com白名单
3、小程序内编写下方代码进行授权链接跳转
my.ap.openURL({
url: '接口返回的mp_path字段地址', //url地址
success: (res) => {
console.log('openURL success', res)
},
fail: (err) => {
console.log('openURL success', err)
}
});
官方参考地址:https://opendocs.alipay.com/mini/04iy2y
当path_type字段返回2时,操作方式:跳转到mp_path字段返回的小程序地址
jump() {//按钮点击跳转方法,可自定义方法名
my.navigateToMiniProgram({
appId:'接口返回的mp_appid', //固定值,请勿修改
path:'接口返回的mp_path地址',
success: (res) => {
console.log(JSON.stringify(res))//可修改成自己的业务逻辑
},
fail: (res) => {
console.log(JSON.stringify(res))//可修改成自己的业务逻辑
}
});
},
官方参考地址:https://opendocs.alipay.com/mini/api/yz6gnx
微信B2b支付场景说明:取接口返回的mini_program参数,用于调用微信官方接口。
调用微信官方接口:wx.requestCommonPayment(Object object)官方接口文档:https://developers.weixin.qq.com/miniprogram/dev/api/payment/wx.requestCommonPayment.html
请求参数
参数名称 | 类型 | 长度 | 必填 | 说明 |
---|---|---|---|---|
pay_ver | String | 3 | Y | 接口内业务逻辑兼容版本号,可用值202 |
pay_type | String | 3 | Y | 支付方式,180 微企付190 支付宝商转200 微信B2b支付 |
service_id | String | 3 | Y | 接口类型,当前类型020 |
merchant_no | String | 15 | Y | 商户号 |
terminal_id | String | 8 | Y | 终端号 |
device_no | String | 32 | N | 商户侧门店或者终端编号,请先与运营同事确认是否在扫呗平台配置过映射,若没有配置映射,请勿传值,否则支付会报错。 |
terminal_trace | String | 32 | Y | 终端流水号,可填写商户系统的业务订单号,多次请求时不可使用同一个值 |
terminal_time | String | 14 | Y | 终端交易时间,yyyyMMddHHmmss,全局统一时间格式 |
total_fee | String | 10 | Y | 金额,单位分,小于2147483647 |
sub_appid | String | 16 | Y | 支付完成前端回跳小程序appid |
open_id | String | 16 | N | 支付宝付款人的open_id ,支付宝场景时必填 |
front_url | String | 128 | O | 微企付场景下,支付完成后前端回跳小程序路径,路径和参数内容由开发者设置,受环境限制目前腾讯微企付在 iOS 里使用 wx.navigateBackMiniProgram ,在 Android 里使用wx.navigateToMiniProgram 回跳到你的小程序,建议路径为订单详情或结果页,onShow 时查询最新的订单状态按需展示 注:此参数微企付支付方式时必传 |
timeout_express | String | 3 | N | 订单交易关闭时间(单位分,不传默认5)。 如果小程序有设置订单失效时间的,建议和订单失效时间设置一致 |
order_body | String | 128 | N | 订单描述,显示在订单详情页面,禁止使用+,空格,/,?,%,#,&,=,【这几类特殊符号 |
notify_url | String | 256 | N | 外部系统通知地址4.10回调通知 |
attach | String | 128 | N | 附加数据,原样返回 |
key_sign | String | 32 | Y | 签名串《2.4签名算法》 签名测试页 |
响应参数
参数名称 | 类型 | 长度 | 必填 | 说明 |
---|---|---|---|---|
return_code | String | 2 | Y | 响应码:01 成功 ,02 失败,响应码仅代表通信状态,不代表业务结果 |
return_msg | String | 128 | Y | 返回信息提示,“预支付请求成功”,“预支付请求失败”等 |
key_sign | String | 32 | Y | 签名串《2.4签名算法》 签名测试页 |
result_code | String | 2 | N | 业务结果:01 成功 ,02 失败 |
pay_type | String | 3 | N | 支付方式,180 微企付,190 支付宝商转 |
merchant_name | String | 40 | N | 商户名称 |
merchant_no | String | 15 | N | 商户号 |
terminal_id | String | 8 | N | 终端号 |
device_no | String | 32 | N | 商户终端设备号(商户自定义,如门店编号),必须在平台已配置过 |
terminal_trace | String | 32 | N | 终端流水号,商户系统的订单号,系统原样返回 |
terminal_time | String | 14 | N | 终端交易时间,yyyyMMddHHmmss,全局统一时间格式,系统原样返回 |
total_fee | String | 12 | N | 金额,单位分 |
out_trade_no | String | 32 | N | 平台唯一订单号 |
path_type | String | 2 | N | 支付宝支付方式时返回,mp_path字段链接类型,1:表示授权链接2:表示支付宝小 程序跳转链接(支付宝支付方式时,需要进行判断。若值为1,执行mp_path链接的跳转,若值为2,使用小程序跳转方式) |
mini_program | String | 32 | Y | 小程序跳转参数 |