可应用于定期扣款或需事后扣款以期提高效率的场景。例如:水电煤缴费、话费、充电宝租借等场景。
| 注意: 如果扣款成功,则返回订单详情。 扣款失败,根据错误码和对应的建议处理方式处理。 扣款接口超时,超时后可通过调用查单接口获取订单状态,也可等待回调通知来更新商户侧订单状态,但回调次数有限制,不保证商户最终能收到通知。
|
|
1. 接口说明
请求URL:https://apihk.mch.weixin.qq.com/v3/global/papay/transactions
2. 请求参数
|
应用ID | appid | string[1,32] | 是 | Body 直连模式必填,商户号绑定的appid 注意:仅适用于直连模式 示例值:wxcbda96de0b165486 |
子商户号 | sub_mchid | string[1,32] | 是 | Body 服务商模式必填,微信支付分配的子商户号 注意:仅适用于机构模式 示例值:10000097 |
服务商应用ID | sp_appid | string[1,32] | 是 | Body 服务商模式必填,服务商绑定的appid 注意:仅适用于机构模式 示例值:wxcbda96de0b165486 |
子商户应用ID | sub_appid | string[1,32] | 否 | Body 发起签约的子商户号绑定的appid 示例值:wxcbda96de0b165484 |
商品描述 | description | string[1,128] | 是 | Body 商品或支付单简要描述,格式要求:门店品牌名-城市分店名-实际商品名称 示例值:image形象店-深圳腾大- QQ公仔 |
商户数据 | attach | string[1,127] | 否 | Body 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 示例值:自定义数据 |
通知地址 | notify_url | string[1,256] | 是 | Body 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。请使用https协议链接 示例值:https://www.weixin.qq.com/wxpay/pay.php |
商户订单号 | out_trade_no | string[1,32] | 是 | Body 商户系统内部的订单号 示例值:1217752501201407033233368018 |
商品标记 | goods_tag | string[1,32] | 否 | Body 商品标记,代金券或立减优惠功能的参数 示例值:实例值 |
MCC码 | merchant_category_code | string[1,16] | 是 | Body 商户行业编码,可参见商户行业编码表 示例值:1011 |
委托代扣协议id | contract_id | string[1,64] | 是 | Body 签约成功后,微信返回的委托代扣协议id 示例值:Wx15463511252015071056489715 |
订单金额 | amount | object | 是 | Body 订单金额信息 |
 | 订单金额 | | |
总金额 | total | int | 是 | 订单总金额,币种的最小单位,只能为整数,详见交易金额 示例值:888 | 货币类型 | currency | string[1,16] | 是 | 符合ISO 4217标准的三位字母代码 示例值:CNY |
|
|
场景信息 | scene_info | object | 否 | Body 场景信息对象 |
 | 场景信息 | | |
商户端设备 | device_id | string[1,32] | 否 | 终端设备号(商户自定义,如门店编号) 示例值:013467007045764 | 商户端设备IP | device_ip | string[1,40] | 否 | 商户侧设备IP,取公网出口IP,支持IPV6 示例值:128.0.0.1 |
|
|
请求示例
场景一:直连模式

1POST
2https:
3{
4 "appid": "wxcbda96de0b165486",
5 "description": "PAPAuto-debit支付测试",
6 "attach": "支付测试",
7 "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php",
8 "out_trade_no": "1217752501201407033233368018",
9 "goods_tag": "WXG",
10 "merchant_category_code": "1011",
11 "contract_id": "Wx15463511252015071056489715",
12 "amount": {
13 "total": 10000,
14 "currency": "HKD"
15 },
16 "scene_info": {
17 "device_ip": "59.37.125.32",
18 "device_id": "013467007045764"
19 }
20}
场景二:服务商模式/机构模式

1POST
2https:
3{
4 "sp_appid": "wxcbda96de0b165486",
5 "sub_mchid": "10000097",
6 "sub_appid": "wxcbda96de0b165484",
7 "description": "PAPAuto-debit支付测试",
8 "attach": "支付测试",
9 "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php",
10 "out_trade_no": "1217752501201407033233368018",
11 "goods_tag": "WXG",
12 "merchant_category_code": "1011",
13 "contract_id": "Wx15463511252015071056489715",
14 "amount": {
15 "total": 10000,
16 "currency": "HKD"
17 },
18 "scene_info": {
19 "device_ip": "59.37.125.32",
20 "device_id": "013467007045764"
21 }
22}
3. 返回参数
|
商户号 | mchid | string[1,32] | 是 | 微信支付分配的商户号 注意:仅适用于直连模式 示例值:10000091 |
应用ID | appid | string[1,32] | 是 | 商户号绑定的appid 注意:仅适用于直连模式 示例值:wxcbda96de0b165486 |
服务商商户号 | sp_mchid | string[1,32] | 是 | 微信支付分配的机构商户号 注意:仅适用于机构模式 示例值:10000098 |
子商户号 | sub_mchid | string[1,32] | 是 | 微信支付分配的子商户号 注意:仅适用于机构模式 示例值:10000097 |
服务商应用ID | sp_appid | string[1,32] | 是 | 服务商绑定的appid 注意:仅适用于机构模式 示例值:wxcbda96de0b165486 |
子商户应用ID | sub_appid | string[1,32] | 否 | 发起签约的子商户号绑定的appid 注意:仅适用于机构模式 示例值:wxcbda96de0b165484 |
商户订单号 | out_trade_no | string[1,32] | 是 | 返回的商户订单号 示例值:1217752501201407033233368018 |
微信支付订单号 | transaction_id | string[1,32] | 是 | 微信支付订单号 示例值:1217752501201407033233368018 |
商户数据 | attach | string[1,127] | 否 | 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 示例值:自定义数据 |
交易类型 | trade_type | string[1,16] | 是 | 代扣支付 示例值:AUTH |
付款银行 | bank_type | string[1,32] | 否 | 银行类型 示例值:WPHK:香港钱包支付 |
支付完成时间 | success_time | string[1,64] | 否 | 支付完成时间,格式为rfc3339格式,如2018-06-08T10:34:56+08:00 代表北京时间2018年06月08日10时34分56秒 示例值:2018-06-08T10:34:56+08:00 |
交易状态 | trade_state | string[1,16] | 是 | 枚举值: SUCCESS:支付成功 REFUND:转入退款 NOTPAY:未支付 CLOSED:已关闭 PAYERROR:支付失败 USERPAYING:用户支付中 示例值:SUCCESS |
交易状态描述 | trade_state_desc | string[1,256] | 是 | 对当前订单状态的描述和下一步操作的指引 示例值:支付失败,请重新下单支付 |
MCC码 | merchant_category_code | string[1,16] | 是 | 商户行业编码 示例值:1011 |
支付者 | payer | object | 否 | Body 成功时才返回。支付者信息,详细说明见下文 |
 | 支付者 | | |
用户标识(直连商户) | openid | string[1,128] | 是 | 用户在商户appid下的openid 注意:仅适用于直连模式 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6a | 用户标识(服务商) | sp_openid | string[1,128] | 是 | 用户在商户sp_appid对应下的唯一标识,需要传sp_appid才有返回 注意:仅适用于机构模式 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | 用户标识(子商户) | sub_openid | string[1,128] | 否 | 用户在收单行sub_appid下用户唯一标识,需要传sub_appid才有返回 注意:仅适用于机构模式 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o |
|
|
订单金额 | amount | object | 是 | Body 成功时才返回。订单金额信息,详细说明见下文 |
 | 订单金额 | | |
订单金额 | total | int | 是 | 订单总金额,币种的最小单位,只能为整数,详见交易金额 示例值:888 | 用户支付金额 | payer_total | int | 是 | 用户实际支付金额,币种的最小单位,只能为整数,详见交易金额 示例值:888 | 订单标价币种 | currency | string[1,16] | 是 | 符合ISO 4217标准的三位字母代码 示例值:CNY | 用户支付币种 | payer_currency | string[1,16] | 否 | 符合ISO 4217标准的三位字母代码 示例值:HKD | 汇率信息 | exchange_rate | object | 否 | Body 汇率信息 |  | 汇率信息 | | |
汇率类型 | type | string[1,32] | 否 | 枚举值: SETTLEMENT_RATE:标价币种和结算币种的汇率类型 USERPAYMENT_RATE:标价币种和支付币种的汇率类型 示例值:SETTLEMENT_RATE | 汇率值 | rate | int | 否 | rate值是兑换比例乘以10的8次方。 如果标价币种和结算币种一致,兑换比例是1,则rate=100000000; 如果标价币种和结算币种不一致,例如美元兑换人民币的比例为6.5,则rate=650000000 示例值:80000000 |
|
|
|
|
优惠功能 | promotion_detail | array | 否 | Body 成功时才返回。优惠功能信息,详细说明见下文 |
 | 优惠功能 | | |
券ID | promotion_id | string[1,32] | 是 | 券或者立减优惠id 示例值:109519 | 优惠名称 | name | string[1,64] | 否 | 优惠名称 示例值:单品惠-6 | 优惠范围 | scope | string[1,32] | 否 | GLOBAL:全场代金券 SINGLE:单品优惠 示例值:SINGLE | 优惠类型 | type | string[1,16] | 否 | COUPON:代金券,需要走结算资金的充值型代金券,(境外商户券币种与支付币种一致) DISCOUNT:优惠券,不走结算资金的免充值型优惠券,(境外商户券币种与标价币种一致 示例值:COUPON | 优惠券面额 | amount | int | 是 | 用户享受优惠的金额 示例值:5 | 优惠币种 | currency | string[1,16] | 是 | 符合ISO 4217标准的三位字母代码 示例值:HKD | 活动ID | activity_id | string[1,32] | 否 | 在微信商户后台配置的批次ID 示例值:931386 | 微信出资 | wxpay_contribute_amount | int | 否 | 特指由微信支付商户平台创建的优惠,出资金额等于本项优惠总金额 示例值:5 | 商户出资 | merchant_contribute_amount | int | 否 | 特指商户自己创建的优惠,出资金额等于本项优惠总金额 示例值:5 | 其他出资 | other_contribute_amount | int | 否 | 其他出资方出资金额 示例值:5 | 单品列表 | goods_detail | array | 否 | Body 单品信息 |  | 单品列表 | | |
商品编码 | goods_id | string[1,32] | 是 | 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成 示例值:124512 | 商品备注 | goods_remark | string[1,128] | 否 | goods_remark为备注字段,按照配置原样返回,字段内容在微信后台配置券时进行设置 示例值:1001 | 商品优惠金额 | discount_amount | int | 是 | 单品的总优惠金额 示例值:100 | 商品数量 | quantity | int | 是 | 用户购买的数量 示例值:1 | 商品价格 | price | int | 是 | 单位为:分。如果商户有优惠,需传输商户优惠后的单价 示例值:528800 |
|
|
|
|
返回示例
正常示例

1{
2 "amount": {
3 "currency": "HKD",
4 "payer_currency": "CNY",
5 "payer_total": 8,
6 "total": 10
7 },
8 "appid": "wx7bc98d929da735fe",
9 "attach": "testruoyu",
10 "bank_type": "CFT",
11 "mchid": "132012662",
12 "merchant_category_code": "0",
13 "out_trade_no": "autotest_20210608201410_9263565",
14 "payer": {
15 "openid": "of8YZ6A_ySrPYzjX7joXo_h2CI44"
16 },
17 "promotion_detail": [{
18 "promotion_id": "109519",
19 "name": "单品惠-6",
20 "scope": "SINGLE",
21 "type": "COUPON",
22 "amount": 5,
23 "currency": "HKD",
24 "activity_id": "931386",
25 "wxpay_contribute_amount": 100,
26 "merchant_contribute_amount": 100,
27 "other_contribute_amount": 5,
28 "goods_detail": {
29 "goods_id": "124512",
30 "goods_remark": "1001",
31 "discount_amount": 100,
32 "quantity": 1,
33 "price": 528800
34 }
35 }]
36 "success_time": "2021-12-09T10:56:27+08:00",
37 "trade_state": "SUCCESS",
38 "trade_state_desc": "支付成功",
39 "trade_type": "AUTH",
40 "transaction_id": "4200001136202112092809736426"
41 }
4. 错误码
|
400 | PARAM_ERROR | 参数错误 | 请检查参数格式是否符合协议规范 |
400 | INVALID_REQUEST | 参数不符合业务规则 | 重入请求时请保持参数前后一致 |
404 | NO_AUTH | 签约协议不存在 | 请检查签约协议号是否正确,是否已解约 |
404 | USER_NOT_EXIST | 用户账户注销 | 请确认扣款用户的微信账号是否注销 |
400 | ORDER_PAID | 订单已支付 | 请确认该订单号是否重复支付,如果是新单,请使用新订单号提交 |
400 | ORDER_CLOSED | 订单已关闭 | 商户订单号异常或者支付失败,请重新下单支付 |
400 | ALREADY_EXISTS | 订单已存在 | 商户订单号对应的订单已存在,请查单确认订单状态 |
500 | BANK_ERROR | 支付银行卡所在行渠道维护中 | 用户银行卡错误,建议换单重试 |
403 | CONTRACT_ERROR | 协议已过期 | 请检查签约协议号是否已过期 |
403 | USER_ERROR | 该笔交易存在风险 | 请联系用户,明确微信号是否有违规操作,如有疑问可联系微信客服接触风险控制 |
403 | RULE_LIMIT | 用户账户支付已达上限 | 商户侧对用户发起验密支付 |
403 | NOT_ENOUGH | 余额不足 | 建议用户补充资金或商户发起垫资支付 |
500 | SYSTEM_ERROR | 系统错误 | 建议发起查单,获取此次支付结果,如需换单重试,请先调用撤销订单接口再换单支付,避免重复支付 |