微信公众号、小程序下单
1、修订记录
修订记录 | 日期 | 说明 |
---|---|---|
1.0 | 2023.11.01 | 初版 |
2、业务说明
(1)接口说明
调用接⼝,可发起微信公众号或⼩程序支付。
商户已有H5商城网站,用户通过消息或扫描⼆维码在微信内打开网页完成下单购买的流程。
1、该接⼝支持微信公众号、微信⼩程序支付,通过参数”isMiniPg“区分;
2、调用接⼝前,商户需要先在微信侧 申请公众号或⼩程序的APPID等参数;
3、商户调用该接⼝生成预支付交易单,银盛支付将返回预支付参数;商户根据返回的预支付参数,通过JSAPI唤起支付。
请求主体类型:application/json
请求方式:POST
3、请求地址
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://appdev.ysepay.com/openapi/unify/basePay/scan/weChatPay/js |
正式环境 | https://ysgate.ysepay.com/openapi/unify/basePay/scan/weChatPay/js |
4、请求参数说明
4.1、公共请求参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
timeStamp | String | Y | 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" |
method | String(128) | Y | 接口名称,固定值:unify.basePay.scan.weChatPay.js |
charset | String(10) | Y | 请求使用的编码格式,如utf-8,gbk,gb2312等,固定为utf-8 |
sign | String | Y | 商户请求参数的签名串(签名算法默认为国密),详见demo,注意:请用商户私钥进行签名 |
check | String | Y | 银盛公钥加密随机生成的字符串(key)得到的加密值,详见demo |
bizContent | String | Y | 业务参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递。注意:需要通过AES以及随机生成的字符串(key)加密业务参数集合,得到bizContent |
reqId | String | Y | 请求唯一流水号,商户系统唯一,要求32个字符内(最少14个字符),只能是数字、大小写字母_-且在同一个商户号下唯一。最后12位要求格式为"yyMMddHHmmss" 示例值:xy1415220315145602 |
certId | String | Y | 发起方商户号,服务商在银盛给自己开设的商户号,即可当作发起方商户号,由银盛生成并下发。 注意:不同于子商户号,服务商发展的商户即为子商户号 |
version | String | Y | 调用的接口版本,固定为:1.0 |
4.2、业务请求参数
(bizContent加密前的json数据明文字符串)
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
orderId | String(32) | Y | 商户订单号,商户系统生成的订单号,要求如下: 1、须保证在商户端不重复。 2、只能由大小写英文字母、数字、下划线及横杠组成。 建议前8位为交易日期,如20220525,范围跨度支持包含当天在内的前后一天,示例值:202205256843192280647118。 |
shopDate | String(8) | N | 交易日期,商户系统的交易发生日期格式yyyyMMdd 20180525 |
note | String(125) | Y | 订单备注,订单备注 |
amount | String(10) | Y | 订单金额,该笔订单的资金总额,单位为:分。必须为正整数 |
currency | String(3) | N | 币种,默认CNY(⼈民币) |
payeeMercId | String(20) | Y | 收款方商户号 |
payeeMercName | String(50) | N | 收款方商户名称,收款商户号对应商户名称 |
timeOutExpress | String | Y | 订单失效时间,设置未付款交易的超时时间,⼀旦超时,该笔交易就会自动被关闭。单 位:分钟。例如:30,则订单失效时间为30分钟。 |
extraCommonParam | String(1000) | N | 公用回传参数,扩展参数,调用方可用于回调时携带业务参数,异步通知时会返回该参数。 |
busiCode | String(10) | Y | 业务代码,请联系银盛客户经理获取。注意:业务代码非固定值,不同到账方式需 要传不同的业务代码 |
subOpenId | String(128) | Y | 用户在商户appid下的唯⼀标识,用户在商户appid下的唯⼀标识。可参考https://pay.weixin.qq.com/ wiki/doc/apiv3/terms_definition/chapter1_1_3.shtml#part-3获 取 |
isMiniPg | String(1) | N | 是否为⼩程序支付,1:微信⼩程序支付; 2:微信公众号支付(默认值); |
appId | String(32) | Y | 商户公众平台ID, 商户在微信侧申请的⼩程序或公众号APPID。当发起公众号支付时,需 填写公众号的APPID(应用ID);当发起⼩程序支付时,需填写⼩程序的 APPID(应用ID) |
limitCreditPay | String(2) | N | 是否限制信用卡,0:不限制(默认值); 1:禁用信用卡支付; |
allowRepeatPay | String(2) | N | 是否允许多次支付,是否允许多次支付,Y:允许;N:不允许(参数为空或者Y时,默认该笔 订单交易状态非成功状态时,支持选择其他支付方式继续付款, 当为N 时表示该笔订单交易状态为失败状态时,不支持选择其他支付方式继续 付款) |
failNotifyUrl | String(190) | N | 失败通知地址,失败通知地址(交易状态为失败时,银盛通知商户网站里指定的页面ht tp路径,支持多个url进行异步通知,多个url用分隔符“,”分开,格式如 :url1,url2,url3)注:只有不允许重复支付的交易才会通知 |
notifyUrl | String(190) | Y | 通知地址,交易成功异步通知到商户的后台地址 ,详见《微信JS下单异步通知》 |
srcIP | String(16) | Y | 发起方IP,请求方ip。例如:112.112.112.112 |
payerIP | String(16) | N | 付款方IP,付款方ip。例如:112.112.112.113 |
gpsInfo | String | N | 付款方gps信息,付款方gps信息,示例值:"{\"userGps\":{\"lat\":24.48579,\"lng\":118.126076}}"。 |
agentNo | String | N | 代理商编号,发起方银盛代理商编号。 |
paygateNo | String | N | 支付网关编号,9000010:银联-微信;10010001:网联-微信 |
subMerchantInfo | Object | N | ⼆级商户信息,存在二级商户时建议传值。 如果有值则二级商户信息都不能为空,如果没值则都不能有值。 |
consigneeInfo | Object | N | 收货⼈信息,电商场景/担保交易时建议传值。 |
detail | Object | N | 微信商品详情,电商场景/担保交易时建议传值。 |
unionQrcodeParams | Object | N | 银联259号文条码改 造参数,终端收费场景时建议传值。259合规改造,可能后续优化为终端收费场景必填。 |
buyerRealNameInfo | Object | N | 实名认证信息,存在买家信息时建议传值。 暂有证件类型、证件姓名、证件号,非必填,如果三个字段⼀个填写就都 必填,要么就都不上送 |
msgCode | String | N | 报文编号,S3001即时到账、S3002担保交易,为空时默认S3001 |
4.2.1 subMerchantInfo具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
merName | String(50) | N | ⼆级商户名称 |
merShortName | String(50) | N | ⼆级商户简称 |
merAddr | String(200) | N | ⼆级商户地址 |
telephone | String(13) | N | 客户手机号 |
merNo | String(32) | N | ⼆级商户编号 |
category | String(20) | N | 类目编号,类目,按附件内容输⼊类目编号 |
mrchntCertId | String(18) | N | 身份证号,身份证号,只支持身份证格式 |
4.2.2 consigneeInfo具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
consigneeName | String(150) | N | 收货⼈姓名 |
consigneeAddr | String(200) | N | 收货地址 |
transportationInfo | String(200) | N | 物流配送信息,(物流名称+订单号) |
commodityName | String(150) | N | 商品名称 |
commodityNumber | String(10) | N | 商品数量 |
4.2.3 detail具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
costPrice | String(10) | N | 订单原价,单位:分 |
receiptId | String | N | 商品⼩票ID,商品⼩票ID,长度不能超过32位 Ys001001 |
goodsDetails | Array | Y | 商品列表, 商品列表 |
4.2.3.1 goodsDetails具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
goodsId | String(32) | Y | 商户商品编码,商户商品编码,由半角的⼤⼩写字母,数字,下划线,中划线 中的⼀种或者⼏种组成,Shouji_abcef_001-001 |
wxpayGoodsId | String(32) | N | 微信商品编号,微信支付定义的统⼀商品编号 |
goodsName | String(256) | N | 商品名称,商品的实际名称 |
quantity | String(10) | Y | 商品数量,数量,只能是正整数 ,1000 |
price | String(10) | Y | 商品单价,商品单价,单位:分 |
4.2.4 unionQrcodeParams具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
terminalNo | String(8) | N | 终端号,终端号 |
terminalType | String(2) | N | 终端类型,终端类型(线下交易场景必填) |
serialNum | String(50) | N | 终端序列号,终端序列号 |
networkLicense | String(5) | N | ⼊网认证编号,银行卡受理终端产品⼊网认证编号 |
appVersion | String(5) | N | 终端应用版本号,终端应用程序的版本号 |
terminalGps | String(32) | N | 交易设备位置信 息,交易设备位置信息,格式:纬度/经度,东经为正数,西经为负 数;北纬为正数,南纬为负数,线下交易场景、terminal_ip和 terminal_gps ⼆者选其⼀ 必填 |
terminalIp | String(8) | N | 终端设备IP,如经、维度信息未上送,该字段必送。 |
encrypRandNum | String(10) | N | 加密随机因⼦,终端类型为 02;03;04;05;06;08;09;10时,如终端设备能提供,建议上送。 |
secretText | String(16) | N | 密文数据,终端类型为 02;03;04;05;06;08;09;10时,如终端设备能提供,建议上送。 |
4.2.5 buyerRealNameInfo具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
idType | String | Y | 证件类型,证件类型,只支持身份证,枚举值:1 |
idName | String | Y | 证件名称 |
idNo | String | Y | 证件号码 |
5、响应参数说明
请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。5.1、公共响应参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
code | String(5) | Y | 网关响应码,示例值:00000 ,详见网关公共响应码 |
msg | String(50) | Y | 网关响应码描述 |
subCode | String | Y | 业务响应码,参见具体的API接口文档 |
subMsg | String | Y | 业务响应描述 |
timeStamp | String | Y | 响应时间,格式"yyyy-MM-dd HH:mm:ss" |
norce | String(128) | Y | 随机参数 |
sign | String | Y | 响应参数的签名串,详见demo, 注意:请用银盛公钥进行验签 |
businessData | String | Y | 业务响应参数集合, 注意:银盛网关通过AES加密业务响应参数集合,得到businessData,商户需要对其进行解密,详情请见demo |
5.2、业务响应参数
响应业务参数businessData(json数据)
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
reqMsgId | String | N | 请求流水号,同请求 |
data | Object | N | 响应业务数据,请求成功时响应 |
5.2.1 data具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
orderId | String | N | 商户订单号 |
tradeSn | String | N | 交易流水号 |
tradeStatus | String | N | 交易状态,00-交易成功 02-支付成功,合单交易渠道成功但参与营销,需⼈⼯调账待支付 11-支付中(已向渠道跳转) 12-部分支付 13-全部已支付(担保交易使用)等待发货 14-未确认收货(等待付款方确认) 60-提现登记 61-提现完成 70-自动关闭处理中 80-部分退款 81-全部退款 97-客户主动关闭 99-到时关闭' 01-支付成功 98-支付失败 96-交易失败(超金额支付) 50-业务超时 95-关闭订单 94-无支付订 93-订单撤销 |
amount | String | N | 订单金额,单位:分 |
currency | String | N | 交易币种 |
extraCommonParam | String | N | 公共回传参数 |
jsapiPayInfo | String | N | 微信返回参数,JSON格式。具体字段参考以下jsapiPayInfo详细参数 |
5.2.1.1 jsapiPayInfo具体参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
appId | String(32) | Y | 商户APPID,商户在微信侧申请的APPID,接⼝返回jsapi_pay_info中的 信息 wxd678efh567hg6787 |
timeStamp | String(32) | Y | 时间戳,时间戳,接⼝返回jsapi_pay_info中的信息 |
nonceStr | String(32) | Y | 随机字机串,随机字机串,接⼝返回jsapi_pay_info中的信息 5K8264ILT KCH16CQ2502SI8 |
package | String(128) | Y | 订单详情扩展字 符串,订单详情扩展字符串,接⼝返回jsapi_pay_info中的信息 pr epay_id=u802345jgfjsdfg |
signType | String(32) | Y | 签名方式, 签名方式,接⼝返回 jsapi_pay_info中的信息 MD5 |
paySign | String(256) | Y | 签名,签名,接⼝返回jsapi_pay_info中的信息 C380BEC2BFD7 27A4B6845132 |
6、业务响应码 网关公共响应码
响应码 | 响应码描述 | 解决方案 |
---|---|---|
0000 | 成功 | |
9999 | 失败 | 请根据返回提示操作或联系银盛技术人员处理 |
5000 | 交易超时 | 请检查网络或稍后重新发起请求 |
A029998 | 网关非法参数 | 检查请求参数,修改后重新发起请求 |
B020100 | 参数校验错误 | 检查请求参数,修改后重新发起请求 |
B021100 | 前置系统参数验证错误 | 检查请求参数,修改后重新发起请求 |
B022011 | 发起方商户号和商户号的归属关系校验失败 | 检查发起方商户号和商户号的归属关系 |
B023001 | 查询结果为空 | 请求处理过程中处理结果为空,将请求报文发给前置组核查 |
B023003 | 商户号错误 | 检查商户号数据 |
B023004 | 返回结果为空 | 请求处理过程中处理结果为空,将请求报文发给前置组核查 |
B023006 | 订单重复支付 | 检查订单号是否重复 |
B029901 | 业务失败 | 根据实际返回消息分析具体原因 |
B084323 | 原订单不支持重复下单 | 检查订单号是否重复 |
B084335 | 单价个性化配置中 | 检查金额参数 |
B087084 | 客户名称不合法 | 检查客户名称参数 |
B087402 | 企业订单收款入网协议交易金额不在范围内 | 检查请求参数,修改后重新发起请求 |