交易API文档

2024-09-07 20:48:36 bone

签名方法

  • 获取所有post 请求内容,不包括字节类型参数,如文件、字节流,剔除 sign 字段,剔除值为空的参数;
  • 按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推;
  • 将排序后的参数与其对应值,组合成 参数=参数值 的格式,并且把这些参数用 & 字符连接起来,此时生成的字符串为待签名字符串。
  • >>>加签原理<<<见开发指引

必填参数说明

M = 必填
O = 非必填
C= 条件必填

公共请求参数

所有请求都必须添加公共参数。
变量名必填限制类型说明
req_idO-String请求流水号,2023-08-06新增字段,可为空,不入库,用于定位联调时的参数问题,
org_idO-String代理商机构号,填写机构号后请使用代理商秘钥进行加签与验签
mchidM-String商户号
appidO-String应用APPID
methodM-String接口名称
charsetM-String编码格式,请求使用的编码格式,如utf-8,gbk,gb2312等
sign_typeM-String签名方法,目前仅支持RSA2
timestampM-String请求时间,请传入当前请求时间的时间戳,10位时间戳格式,如:1688885536,时间戳时区为北京时间,误差上下不允许超过60s
versionM-String版本号,调用的接口版本,固定为:1.0
biz_contentM-String业务参数集合,json格式,最大长度不限,除公共参数外所有业务参数都必须放在这个参数中传递
signM-String商户请求参数的签名串

请求地址

参数获取路径:请登录商户后台-系统设置-开发设置获取,地址后缀请添加/
请求地址拼接method
如使用交易下单接口:
如请求地址为:https://www.baidu.com
拼接后为:https://www.baidu.com/pay.order/create

1、统一交易下单接口

1.1接口说明

支持支付宝拉码支付、公众号支付、服务窗支付、银联JS支付、微信小程序支付。
注意:由于微信与支付宝不对间联机构开放H5支付功能权限,如果您使用的是间联渠道将无法使用微信H5与支付宝H5,如需使用H5请调用其他支付方式 例如:【微信小程序H5支付=wechatLiteH5

支付宝H5调用方式:
可使用扫码获取支付链接后,直接使用浏览器打开该链接即可自动调起支付宝H5支付
如果是APP内或者部分浏览器无法打开的情况下,可使用js调起支付宝客户端后进行支付
方法一:alipays://platformapi/startapp?appId=20000067&url=支付url例:alipays://platformapi/startapp?appId=20000067&url=https://www.baidu.com
方法二:alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=支付url
例:alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https://www.baidu.com

银联云闪付H5调用方式:
可使用扫码获取支付链接后,使用js调起云闪付客户端后进行支付
upwallet://html/' +payurl.replace('https://','').replace( 'http://’,'')
其中payurl为获取的支付链接

1.2请求方式

POST

1.3接口名称

method = pay.order/create

1.4业务参数

公共请求参数内的biz_content业务参数集合,json格式
变量名必填限制类型说明
channel_codeO-String支付渠道代码,支付渠道代码,请查看后台商户进件管理内,填写后将只轮训该渠道下进件的子商户号
trade_typeM-String支付方式编码,请查看支付方式
pay_channel_idO-String通道ID,可在商户后台→通道列表内查看,留空则为商户池轮询模式
out_trade_noM-String商户订单号,由商家自定义,15-64个字符,仅支持字母、数字、下划线且需保证全局不重复(我司系统内唯一)
total_amountM-String订单金额,单位为元,精确到小数点后两位,取值范围:[0.01,100000000] 。
subjectM-String订单标题,注意:不可使用特殊字符,如 /,=,& 等,禁止使用与商品无关的内容也只能是商品名称相关的内容,禁止有任何诱导规避投诉的内容
attachO-String附加参数,原样返回
sub_appidC-String微信公众号/小程序APPID,原生支付必传
user_idC-String用户标识,微信openid 支付宝userid 银联云闪付upUserId,微信公众号/小程序,支付宝生活号/小程序/js,云闪付JS,原生支付必传项
notify_urlM-String支付结果异步通知地址,外网可访问地址
return_urlO-String支付完成跳转地址,仅支持非原生支付,快捷支付,网银等支持同步跳转的支付类型
client_ipM-String支付用户的真实ip地址,目前仅支持传入ipv4地址,不支持识别ipv6,请不要传入商户服务器的ip地址,系统将会风控鉴权
channe_expendC-String渠道拓展参数,请查看下面具体参数
time_expireO-String订单失效时间格式10位时间戳,如不传默认为30分钟后自动失效
fund_process_typeC-int分账标识,0=订单不分账,1=订单分账,不传默认为不分账,如果是订单分账则,分账串必传,该字段与后台设定默认分账渠道关联,如后台有默认分账规则,则以本次请求接口为准将会忽略系统默认分账规则,如为不分账,系统将会自动调用系统内设定的默认分账
divide_detailC-String分账详情,JSON字符串,具体参考下方说明
auth_codeC-String扫码设备读出的条形码或者二维码信息,反扫必传
channe_expend 参数表
变量名必填限制类型说明
is_rawO-String是否原生支付,1=原生支付,0=非原生支付,默认非原生支付,支付类型为wechatPub ,wechatLite,alipayLite ,alipayPub 可选项,其他无效
wechat_h5_typeO-String微信H5支付方式,1=原生支付,2=小程序H5,3=微信客服H5支付,不填写默认跟随我司系统默认支付方式,支付类型为wechatWap 可选项,其他无效
bank_card_noO-String支付银行卡号,使用汇付斗拱渠道 支付类型为:银联H5(unionOnline)时必传
pay_sceneO-String场景类型(目前仅汇付斗拱渠道有效),01=A通道,02=B通道,03=非盈利行业费,04=缴费行业费率,05=保险行汪费率,06=行业(蓝海绿洲)活动场景费率,07=校园餐饮费率,08=K12中小幼费率,09=非在线教培行业费率
divide_detail[]参数表 JSON字符串(数组)
变量名必填限制类型说明
accountM-String分账用户id,分账用户渠道分账账号,须提前报备
amountM-String分账金额单位元,保留两位小数,不能超过渠道限额分账总比例
fee_flagO-String手续费承担方是否手续费承担方,N-否,Y-是,手续费承担方有且只能有一个
descriptionO-String分账说明

1.5返回参数

变量名必填限制类型说明
codeMstring返回状态码1 - 成功,非1 - 失败
msgCstring返回错误信息
dataMstring业务返回参数,请查看下方具体参数
data参数表
变量名必填限制类型说明
mchidMstring商户号
out_trade_noMstring商户订单号
trade_noMstring平台订单号
total_amountMstring订单金额
float_amountMstring实际支付金额
payurlCstring订单支付URL
payInfoCstringJS支付信息串
trade_typeMstring支付方式

2、支付结果

2.1、支付结果通知

由于诸多因素都会影响到支付结果的通知,推送可能存在延迟,并且不能保证100%推送成功。故强烈建议主接交易查询接口,并且需要做好系统重复通知的幂处理方案,以免造成重复入账。
POST Content-Type: text; charset=utf-8
通知参数
所有通知参数除空值与签名串外均需要加入验签字段,通知参数后期可能会根据情况增加,在验证签名时请注意
接收到通知结果并处理成功后 需返回“success”或者全部大写

回调验签注意请使用平台公钥进行验签,通知的所有参数除去空值与sign值外均需要加入验签字段,禁止固定写死验签字段,验签方法可参考支付宝官方的demo进行,

验签失败一般有以下几个原因
1.把商户公钥当平台公钥填写到系统了,检查是否填错回调验签是需要配置平台公钥的
2.拼接字符串有问题,查看下是否是所有通知参数除空值与签名串外均需要加入验签字段,
3.一般按照加签规则进行反推即可
参数名变量名必填限制类型说明
商户号mchidMstring交易商户号
签名方法sign_typeM10string一般为RSA2
商户订单号out_trade_noM32string商户提交的订单号
机构订单号trade_noM10string机构订单号
通道订单号channel_order_snMstring微信、支付宝、等通道的订单号
订单金额total_amountM32string
通道IDpay_channel_idM64string
支付渠道代码channel_codeMstring
支付类型trade_typeMstring
订单分账标识fund_process_typeMstring
订单标题subjectMstring
附加字段attachMstring
通知时间notify_timeMstring
订单状态order_statusMstringPROCESSING=订单待支付,SUCCESS=订单支付成功,TIME_OUT=订单已过期,FAIL=订单支付失败,CLOSE=订单关闭,CALL_FAIL=支付成功未返回
签名signMstring

2.2、交易结果查询

此接口查询有频率限制,10秒内同一笔订单号限制查询一次,如超出限制系统将会对访问IP对该接口的调用做封禁10分钟处理,当天多次超出以封禁次数*10做封禁时间处理
2.2.1请求方式
POST
2.2.2接口名称
method = pay.order/query
2.2.3业务参数
公共请求参数内的biz_content业务参数集合,json格式
变量名必填限制类型说明
out_trade_noC-String商户订单号,与平台订单号二选一
trade_noC-String平台订单号,与商户订单号二选一
2.2.4返回参数
变量名必填限制类型说明
codeMstring返回状态码1 - 成功,非1 - 失败
msgCstring返回错误信息
dataMstring业务返回参数,与支付结果通知参数一致

3、退款

3.1订单退款

3.1.1接口说明
系统支持对已支付订单进行多笔不同金额的退款,需保证商户退款订单号不重复,退款金额不允许超过订单金额,异步通知地址为预留字段,后期将会增加退款成功后同步通知到商户服务器
3.1.2请求方式
POST
3.1.3接口名称
method = pay.order/refund
3.1.4业务参数
公共请求参数内的biz_content业务参数集合,json格式
变量名必填限制类型说明
refund_amountM-String退款金额
refund_reasonM-String退款说明
out_refund_noM-String商户退款请求流水号,不可重复
out_trade_noC-String商户订单号,与trade_no平台订单号二选一
trade_noC-String平台订单号,与out_trade_no商户订单号二选一
notify_urlC-String异步通知地址
3.1.5返回参数
变量名必填限制类型说明
codeMstring返回状态码1 - 退款请求成功,非1 - 失败
msgCstring返回错误信息
dataMstring业务返回参数,请查看下方具体参数
data参数表
变量名必填限制类型说明
mchidMstring商户号
trade_noMstring商户订单号
refund_amountMstring本次退款金额
refund_reasonMstring退款说明
out_refund_noMstring退款流水号
refund_noMstring退款订单号
ins_refund_snCstring机构退款流水号

3.2退款查询

3.2.1接口说明
系统支持对已支付订单进行多笔不同金额的退款,需保证商户退款订单号不重复,退款金额不允许超过订单金额,异步通知地址为预留字段,后期将会增加退款成功后同步通知到商户服务器
3.2.2请求方式
POST
3.2.3接口名称
method = pay.order/refundQuery
3.2.4业务参数
公共请求参数内的biz_content业务参数集合,json格式
变量名必填限制类型说明
out_trade_noC-String商户订单号,与trade_no平台订单号二选一
trade_noC-String平台订单号,与out_trade_no商户订单号二选一
out_refund_noM-String商户退款请求流水号
3.2.5返回参数
data参数表
变量名必填限制类型说明
mchidMstring商户号
out_refund_noMstring商户退款订单号
refund_noMstring平台退款订单号
ins_refund_snMstring机构退款订单号
channel_refund_snMstring通道退款订单号
refund_amountMstring退款金额
refund_reasonMstring退款说明
refund_statusMstring退款状态
out_trade_noMstring商户订单号
trade_noMstring平台订单号

4、支付类型

支付方式字段字段说明
支付宝alipayPc支付宝电脑
alipayApp支付宝APP
alipayQr支付宝当面付
alipayWap支付宝H5
alipayLite支付宝小程序
alipayPub支付宝生活号
alipayScan支付宝反扫
微信wechatQr微信扫码
wechatPub微信公众号支付
wechatLite微信小程序支付
wechatScan微信反扫
wechatWap微信H5支付
wechatLiteH5微信小程序H5支付
银联unionApp银联云闪付APP
unionQr银联云闪付扫码
unionWap银联云闪付H5支付
unionScan银联云闪付反扫
unionOnline银联H5支付
快捷quickPay快捷支付
网银obB2c个人网银支付
obB2b企业网银支付
数字人民币dcpay数字货币支付
QQqqQrQQ扫码支付
qqWapQQH5支付

4、错误码(code错误码解决方法)

code码错误说明解决方法
0通用请求错误请查看msg错误说明,根据提示解决
1请求成功接口请求成功
1001请求接口地址异常接口参数method异常,请检查该参数是否异常
1002当前请求方法不存在接口参数method不存在,请检查该参数是否异常
1003当前请求方法限制IP当前客户端IP不在设置的IP白名单内,请检查客户端IP或设置IP白名单