合单支付- 微信公众号、小程序
1、修订记录
版本号 |
日期 |
说明 |
作者 |
0.1 |
2021/08/26 |
新接口参数定义 |
宁华雄 |
0.2 |
2021/12/27 |
支持国密 |
王晶 |
2、业务说明
(1)场景说明
1、在电商场景中存在多个商家的多笔订单一次支付,即用户提交一笔订单中包含多个子商户订单信息,用户确认无误后一笔支付订单总金,合单支付款项分别进入子商户各自的账户
(2)接口说明
1、该接口支持微信公众号、微信小程序支付,通过参数”is_minipg“区分; 2、调用接口前,商户需要先在微信侧申请公众号或小程序的APPID等参数; 3、商户调用该接口生成预支付交易单,银盛支付将返回预支付参数; 4、商户根据返回的预支付参数,通过JSAPI唤起支付。
3、请求地址
4、请求参数说明
4.1公共请求参数
参数 |
类型(字节长度) |
必填 |
参数说明 |
method |
String(128) |
Y |
接口名称 固定值ysepay.online.combine.weixin.pay |
partner_id |
String(20) |
Y |
在银盛支付开设的服务商商户号,请联系客户经理提供 |
timestamp |
String(19) |
Y |
发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" 示例值:2014-07-24 03:07:50 |
charset |
String(10) |
Y |
商户网站使用的编码格式,如UTF-8、GBK、GB2312等,默认值 UTF-8 |
sign_type |
String(10) |
Y |
报文签名算法,RSA 、SM |
sign |
String(256) |
Y |
签名字符串,再用Base64编码 |
notify_url |
String(190) |
Y |
交易成功异步通知到商户的后台地址,http路径支持多个url进行异步通知,多个url用分隔符“,”分开,格式如:url1,url2,url3,支持TLS1.0、TLS1.1、TLS1.2 |
version |
String(3) |
Y |
接口版本3.0 当前版本3.0 |
tran_type |
String(1) |
N |
交易类型,说明:1或者空:即时到账,2:担保交易 |
biz_content |
String |
Y |
业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递 |
4.2 业务请求参数
参数名biz_content,值为一个json格式对象,下面列表描述json对象的值
参数 |
类型(字节长度) |
必填 |
参数说明 |
combine_out_trade_no |
String(1,32) |
Y |
商户系统生成的合单订单号,须保证在商户端不重复,生成规则前8位必须为交易日期,如20220525,范围跨度支持包含当天在内的前后一天,且只能由大小写英文字母、数字、下划线及横杠组成,示例值:202205256843192280647118 |
shopdate |
String(8,8) |
Y |
商户系统的交易发生日期格式yyyyMMdd 示例值:20180525 |
is_minipg |
String(1) |
N |
小程序支付,值为1,表示小程序支付;不传或值为2,表示公众账号内支付 |
appid |
String(32) |
Y |
商户在微信侧申请的小程序或公众号APPID。当发起公众号支付时,需填写公众号的APPID(应用ID);当发起小程序支付时,需填写小程序的APPID(应用ID) |
sub_openid |
String(128) |
Y |
用户在商户appid下的唯一标识。可参考https://pay.weixin.qq.com/wiki/doc/apiv3/terms_definition/chapter1_1_3.shtml#part-3获取 |
timeout_express |
String(2,6) |
Y |
设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。(需申请业务权限,权限未开通情况下该参数不生效,默认未付款交易的超时时间为7d)取值范围:1m~15d。m-分钟,h-小时,d-天。该参数数值不接受小数点,如1.5h,可转换为90m。注意:设置了未付款交易超时时间的情况下,若我司在限定时间内没有收到成功支付通知,则会关闭交易,关闭后该笔交易若付款方支付成功的情况下,会自动原路退款至付款方。示例值:96h 代表96小时后订单自动关闭 |
combine_seller_id |
String(1,20) |
Y |
合单交易商户号(由银盛支付生成并下发),必须是子单收款商户号或者服务商商户号 |
business_code |
String(1,10) |
Y |
业务代码 ,00510150 |
subject |
String(1,250) |
Y |
商品的标题/交易标题/订单标题/订单关键字等。该参数最长为250个汉字。 |
total_amount |
Number(10,2) |
Y |
该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。Number(10,2)指10位长度,2位精度,示例值:100 |
sub_order_list |
list |
Y |
子单订单信息(最多50笔) |
extra_common_param |
String(2000) |
N |
公用回传参数 商户自定义数据域,原样返回 |
currency |
String(3) |
N |
支持币种:CNY(人民币),默认传CNY |
4.2.1 子订单 sub_order_list
参数 |
类型(字节长度) |
必填 |
参数说明 |
out_trade_no |
String(1,32) |
Y |
商户生成的子单订单号,生成规则前8位建议为交易日期,如20180525,范围跨度支持包含当天在内的前后一天,且只能由大小写英文字母、数字、下划线及横杠组成 示例值:201805256843192280647118 |
amount |
Number(10,2) |
Y |
该笔子订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。Number(10,2)指10位长度,2位精度 |
seller_id |
String(200) |
Y |
银盛支付子单收款商户号 |
5、响应参数说明
银盛支付对商户的请求数据处理完成后,会将处理的结果数据同步回执给商户。
请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。
5.1 公共响应参数
参数 |
类型(字节长度) |
必填 |
参数说明 |
sign |
String |
Y |
签名字符串,Base64编码 |
ysepay_online_combine_weixin_pay_response |
String |
Y |
业务响应参数的集合,最大长度不限 |
5.2 业务响应参数
参数 |
类型(字节长度) |
必填 |
参数说明 |
code |
String |
Y |
响应代码 |
msg |
String |
Y |
响应代码描述 |
combine_out_trade_no |
String(32) |
Y |
商户生成的合单订单号 |
combine_trade_no |
String(30) |
N |
该交易在银盛支付系统中的交易流水号。 |
trade_status |
String |
Y |
交易目前所处的状态。成功状态的值: TRADE_SUCCESS具体详情看下文中的交易状态详解 示例值:附录7.1 |
total_amount |
Number |
Y |
该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 |
jsapi_pay_info |
String |
Y |
Json格式字符串,作用于原生态的js支付时的参数 |
extra_common_param |
String |
N |
商户自定义数据域,原样返回 |
5.2.1 支付串 jsapi_pay_info
参数 |
类型(字节长度) |
参数说明 |
appId |
String(32) |
商户在微信侧申请的APPID,接口返回jsapi_pay_info中的信息 示例值:wxd678efh567hg6787 |
timeStamp |
String(32) |
时间戳,接口返回jsapi_pay_info中的信息 |
nonceStr |
String(32) |
随机字机串,接口返回jsapi_pay_info中的信息 示例值:5K8264ILTKCH16CQ2502SI8 |
package |
String(128) |
订单详情扩展字符串,接口返回jsapi_pay_info中的信息 示例值:prepay_id=u802345jgfjsdfg |
signType |
String(32) |
签名方式,接口返回jsapi_pay_info中的信息 示例值:MD5 |
paySign |
String(256) |
签名,接口返回jsapi_pay_info中的信息 示例值:C380BEC2BFD727A4B6845132 |
6、服务器交易成功异步通知
银盛支付对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。
请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。
参数 |
类型(字节长度) |
必填 |
参数说明 |
sign_type |
String |
Y |
签名类型,请求时的签名类型RSA/SM |
sign |
String |
Y |
签名字符串,Base64编码 |
notify_type |
String |
Y |
通知类型 directpay.status.sync |
notify_time |
String(19) |
Y |
发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" 示例值:2014-07-24 03:07:50 |
combine_out_trade_no |
String(32) |
Y |
商户生成的合单订单号 示例值:6843192280647118 |
combine_total_amount |
Number |
N |
该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。示例值:100 |
trade_no |
String(30) |
N |
该交易在银盛支付系统中的交易流水号 |
trade_status |
String |
Y |
交易目前所处的状态。成功状态的值: TRADE_SUCCESS\ |
TRADE_CLOSED等 示例值:附录7.1 |
account_date |
String(10) |
N |
入账的时间,格式"yyyyMMdd" 示例值:20140724 |
channel_send_sn |
String(50) |
N |
发往渠道流水号 |
paygate_no |
String(16) |
N |
支付网关编号 示例值:附录7.2 |
channel_recv_sn |
String(50) |
N |
渠道返回流水号 |
extra_common_param |
String |
N |
商户自定义数据域,原样返回 |
7、附录
7.1 交易状态
枚举名称 |
枚举说明 |
WAIT_BUYER_PAY |
交易创建,等待买家付款。 |
TRADE_CLOSED |
在指定时间段内未支付时关闭的交易;客户主动关闭订单。 |
TRADE_SUCCESS |
交易成功,且可对该交易做操作,如:多级分润、退款等。 |
TRADE_PART_REFUND |
部分退款成功。 |
TRADE_ALL_REFUND |
全部退款成功。 |
TRADE_FAILD |
交易失败 |
TRADE_UNDEPOSIT |
交易成功,商户未入账,请联系客户经理处理 |
7.2 支付网关编号
支付渠道代码 |
支付渠道 |
900000001 |
银联-支付宝 |
9000010 |
银联-微信 |
10810001 |
银联扫码-银联云闪付 |
10010001 |
网联-微信 |
10000012 |
网联-支付宝 |