申请扣款

场景介绍

委托代扣可应用于定期扣款或需事后扣款以期提高效率的场景。例如高速,停车场等通过用户授权给商户,进行委托扣款的场景。
注:扣费请求首先按签约协议中记录的优先支付方式扣费,否则从可用扣款方式中依次选择扣款。

接口调用请求说明

请求Url https://api.mch.weixin.qq.com/vehicle/partnerpay/payapply
是否需要证书
请求方式 post
返回参数说明 扣款接口请求成功,返回success仅代表扣款申请受理成功,不代表扣款成功。扣款是否成功以支付通知的结果为准。
前置条件 需要用户状态user_state为normal
支持车牌 车主服务只支持蓝牌、绿牌。
备注 • 受理成功,抬杆放行(推荐)
   耗时短(200ms):已开通垫资功能的商户,申请扣款受理成功后,即可抬杆放行车辆。(商户侧请联系微信侧的运营申请垫资能力

• 同一个商户订单号,只能在一种扣费方式中使用
  同一笔商户订单号,在车主服务扣款和其他支付方式下并发同时使用,车主服务扣款可能仅受理成功,但不继续执行扣款动作(如有出现此类情况,商户自行承担损失)

• 扣款成功,抬杆放行
  耗时长(5s):未开通垫资功能的商户,需以支付通知的结果为准放行车辆。(若以受理成功放行车辆造成的资金损失由商户侧自行承担。)

请求参数

字段名 变量名 必填 类型 示例值 说明
公众账号id appid String(32) wxcbda96de0b165486 服务商商户号绑定的APPID
子商户公众账号id sub_appid String(32) wxcbda96de0b165489 子商户号绑定的服务号,小程序,APP的appid(需要在服务商的商户平台为子商户绑定)


此appid需为已授权appid

商户号 mch_id String(32) 10000098 服务商商户号
子商户号 sub_mch_id String(32) 1900000109 子商户号
随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。
签名类型 sign_type String(32) HMAC-SHA256 签名类型,默认为HMAC-SHA256
签名 sign String(64) EE088059BBC9141264F8D14293AD6C4BB94CEA445F8FF5 签名,详见签名生成算法
商品描述 body String(128) 公交代扣 商品或支付单简要描述
商品详情 detail String(6000) 公交代扣:A
公交代扣:B
公交代扣:C
商品名称明细列表
附加数据 attach String(127) 自定义参数 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
商户订单号 out_trade_no String(32) 1217752501201407033233368018 商户系统内部的订单号,32个字符内、可包含字母,
总金额 total_fee int 888 订单总金额,单位为分,只能为整数
货币类型 fee_type String(16) CNY 符合ISO 4217标准的三位字母代码,默认人民币:CNY
终端IP spbill_create_ip String(16) 8.8.8.8 调用微信支付API的机器IP
商品标记 goods_tag String(32) WXG 商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
回调通知url notify_url String(256) http://yoursite.com/wxpay.html 接受扣款结果异步回调通知的url
交易类型 trade_type String(16) PAP 交易类型PAP-微信委托代扣支付
版本号 version String(16) 3.0 版本号,固定值
3.0:车场停车(PARKING)场景
2.0:其他场景
交易场景 trade_scene String(16) PARKING 委托代扣的交易场景值,目前支持 :
1. PARKING:车场停车场景
2. PARKING SPACE;车位停车场景
3. GAS 加油场景
4. HIGHWAY 高速场景
5. BRIDGE 路桥场景
该值催缴时会向微信用户进行展示
用户标识 openid String(32) oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 用户在商户appid或子商户appid下的唯一标识。 
在PARKING场景为PROACTIVE时,才会校验车牌与openid的关系。
当传递用户标识时,微信支付将校验用户和车牌绑定关系通过后才允许进行扣费 
如下几种情况下该值必填:
(1)场景为:PARKING SPACE时,用户标识必填;
(2)在PARKING 场景下,deduct_mode字段为PROACTIVE时,用户标识必填。
分账标识 profit_sharing String(16) Y Y-是,需要分账
N-否,不分账
字母要求大写,不传默认不分账
分账详细说明见《分账API》文档
场景信息 scene_info String(1024) {"scene_info":{"start_time":"20170926114339",
"end_time":"20170826114339",
"charging_time":"12312312312",
"plate_number":"CB1000sdfasd",
"free_time":"1200",
"car_type":"大型车",
"parking_name":"欢乐海岸停车场"}}
场景信息值,格式为json,不同业务场景设置不同的值,具体如后面所列。
当trade_scene场景为:PARKING(车场停车) 时,传如下值
入场时间 start_time String(16) 20170826104339 即用户进入停车时间,格式为yyyyMMddHHmmss,该值催缴时会向微信用户进行展示
出场时间 end_time String(16) 20170826114339 即用户出停车场时间,格式为yyyyMMddHHmmss,该值催缴时会向微信用户进行展示
计费时长 charging_time String(16) 3600 计费的时间长。单位为秒
车牌号 plate_number String(32) 粤B888888 车牌号。仅包括省份+车牌,不包括特殊字符。
车辆类型 car_type String(16) 小型车 停车车辆的类型,可选值:大型车、小型车
停车场名称 parking_name String(32) 欢乐海岸停车场 所在停车场的名称
发起扣费方式 deduct_mode String(16) PROACTIVE 发起扣费方式,枚举值:
PROACTIVE:表示用户主动发起的免密支付 
AUTOPAY:表示用户无感的无感支付
支持的扣费方式 support_deduct_mode String(16) DEDUCT_PROACTIVE_ONLY 该字段用于控制微信下发给用户的模板消息
枚举值为:
DEDUCT_PROACTIVE_ONLY:仅支持免密
DEDUCT_AUTOPAY_ONLY:仅支持无感
DEDUCT_ALL:支持免密和无感

当trade_scene场景为:PARKING SPACE 时(车位停车),传如下值

入场时间 start_time String(16) 20170826104339 即用户进入停车位时间,格式为yyyyMMddHHmmss,该值催缴时会向微信用户进行展示
出场时间 end_time String(16) 20170826114339 即用户离开停车位时间,格式为yyyyMMddHHmmss,该值催缴时会向微信用户进行展示
计费时长 charging_time String(16) 3600 计费的时间长。单位为秒
车辆类型 car_type String(16) 小型车 停车车辆的类型,可选值:大型车、小型车
停车场名称 parking_name String(32) 欢乐海岸停车场 所在停车位车场的名称
车位编号 space_number String(16) D6666 用户停车的车位编号,仅支持英文+数字
当trade_scene场景为:GAS 时(加油),传如下值
交易时间 start_time String(16) 20170826104339 即用户进行加油的时间,格式为yyyyMMddHHmmss,该值催缴时会向微信用户进行展示
车牌号 plate_number String(32) 粤B888888 车牌号。仅包括省份+车牌,不包括特殊字符。
车辆类型 car_type String(16) 大型车 车辆的类型,可选值:大型车、小型车
加油站名称 gas_station String(32) 中国石油加油站 所在加油站的具体名称,需提前提供进行录入
油品标号名 gas_label_name String(8) 98 油品标号名,可选值89、90、92、93、95、97、98、5、0、-10、-20、-35、-50
油品类型名称 gas_type String(32) 汽油 油品类型名称,可选:汽油、柴油
油品标准 gas_standard String(32) 国V 油品标准名称,可选:国V,国IV,粤IV
油量 gas_amount String(16) 50120 油品量(单位毫升ml)
油枪号 gas_gun_no String(32) 10 加油枪号,纯数字
当trade_scene场景为:HIGHWAY 时,传如下值
交易时间 start_time String(16) 20170826104339 即用户进入高速时间,格式为yyyyMMddHHmmss,该值催缴时会向微信用户进行展示
交易时间最大支持90天内的订单
结束时间 end_time String(16) 20170826114339 即用户出高速时间,格式为yyyyMMddHHmmss,该值催缴时会向微信用户进行展示
车牌号 plate_number String(32) 粤B888888 车牌号。仅包括省份+车牌,不包括特殊字符。
车辆类型 car_type String(16) 客车 车辆的类型,可选值:客车、货车
入口站名称 entrance_name String(60) 沿江深圳-大铲湾 高速收费入口站的名称
出口站名称 exit_name String(90) 广珠东线-珠海站 高速收费出口站的名称
核载人数 carrying_capacity String(8) 10 当前车辆核载人数,纯数字
核载区间 carrying_range String(32) 6-12 当前车辆核载人数区间,格式数字-数字
通道类型 channel_type String(32) ETC 高速通道类型,目前可选:ETC、MTC。商户扣费前必须确认当前车牌的标识属性,用户车牌必须具有该通道标识时,才允许扣费。
当trade_scene场景为:BRIDGE 时,传如下值
交易时间 start_time String(16) 20170826104339 即用户通过路桥收费站时间,格式为yyyyMMddHHmmss,该值会向微信用户进行展示
车牌号 plate_number String(32) 粤B888888 车牌号。仅包括省份+车牌,不包括特殊字符。
车辆类型 car_type String(16) 小型车 车辆的类型,可选值:大型车、小型车
出口名称 exit_name String(64) 虎门大桥 收费出口站的名称,需向用户进行展示

数据示例:

<xml>
<mch_id>10000098</mch_id>
<sub_mch_id><![CDATA[10000100]]></sub_mch_id>
<appid>wxcbda96de0b165486</appid>
<nonce_str>5K8264ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str>
<sign_type>HMAC-SHA256</sign_type>
<sign> EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5</sign>
<body>公交代扣</body>
<out_trade_no>217752501201407033233368018</out_trade_no>
<total_fee>888</total_fee>
<spbill_create_ip>8.8.8.8</spbill_create_ip>
<notify_url>http://yoursite.com/wxpay.html</notify_url>
<version>3.0</version> 
<trade_scene> PARKING</trade_scene> 
<scene_info>{"scene_info":{"start_time":"20170926114339","end_time":"20170826114339","charging_time":"3600","free_time":"1200","plate_number":"CB1000sdfasd","car_type":"大型车","parking_name":"欢乐海岸停车场"}}</scene_info>
</xml>

返回参数

字段名 变量名 必填 类型 示例值 说明
返回状态码 return_code String(16) SUCCESS SUCCESS/FAIL
此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
返回信息 return_msg String(128) 签名失败 返回信息,如非空,为错误原因
签名失败
参数格式校验错误

以下字段在return_code为SUCCESS的时候返回

字段名 变量名 必填 类型 示例值 说明
公众账号id appid String(32) wxcbda96de0b165486 微信支付分配的公众账号id
子商户公众账号id sub_appid String(32) wxcbda96de0b165489 微信分配的子商户公众账号ID
商户号 mch_id String(32) 10000098 微信支付分配的商户号
子商户号 sub_mch_id String(32) 1900000109 微信支付分配的子商户号
设备号 device_info String(32) 013467007045764 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
签名 sign String(64) C380BEC2BFD727A4B6845133519F3AD6 生成签名方式详见签名生成详见签名生成算法
业务结果 result_code String(16) SUCCESS SUCCESS/FAIL
错误代码 err_code String(32) SIGN_ERROR 错误码
错误代码描述 err_code_des String(32) 签名错误 错误码描述

数据示例:

<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wxcbda96de0b165486]]></appid>
<mch_id><![CDATA[10000098]]></mch_id>
<sub_mch_id><![CDATA[10000100]]></sub_mch_id>
<nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
<sign><![CDATA[EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
< /xml>

错误码

名称 描述 原因 解决方案
SYSTEMERROR 接口返回错误 系统超时 请使用相同参数再次调用API。

重试策略,共10次,每次间隔时间:

30秒,60秒,60秒,120秒,120秒,180秒,180秒,360秒,360秒,600秒

PARAM_ERROR 参数错误 请求参数未按指引进行填写 请根据接口返回的详细信息检查您的程序
INVALID_REQUEST 非法请求 非法请求 请检查请求参数、商户权限等是否正确
OUT_TRADE_NO_USED 商户订单号重复 同一笔交易不能多次提交 请核实商户订单号是否重复提交
ORDER_PAID 订单已支付 订单号重复 请确认该订单号是否重复支付,如果是新订单,请使用新订单号提交
ORDER_ACCEPTED 扣款请求已受理,请勿重复发起 该订单已发起过扣款申请,无需再次请求 请调用查询订单接口查看订单最新状态
ORDER_CLOSED 订单已关闭 该订单已关 商户订单异常,请重新下单支付
SIGN_ERROR 签名错误 参数签名结果不正确 请检查签名参数和方法是否都符合签名算法要求
CONTRACT_OVER_LIMIT 用户支付超出限额 支付笔数、或支付金额超出代扣限额 请检查当前扣款金额,当天扣款次数。
REQUEST_BLOCKED 请求被拒绝 用户欠费或者不符合微信免密业务要求 提示用户到微信进行还款,后可继续使用业务
VEHICLE_NOT_EXIST 当前车牌尚未绑定车主平台 当前车牌尚未绑定车主平台,或用户已和车主平台解约 请检查车牌号是否正确
PAYAUTH_ERROR 权限校验错误 商户号产品权限校验错误 权限校验错误 服务商或子商户号权限校验错误 请检查如下几个项:
1.服务商商户号受理权限是否开通
2.子商户号代扣产品权限是否开通
3.子商户号授予父商户号代扣权限是否开通
4.服务商商户号不能直接用于直联模式接口
TRADE_ERROR 支付确认失败 用户的微信号被风控拦截或者用户的微信号被紧急冻结 提示用户可咨询微信客服了解具体原因
VEHICLE_AUTH_ERROR 校验授权关系失败 传入的appid没有授权 调用授权接口完成用户对appid的授权
TRADE_TIME_INVALID 扣款请求超过业务规定时间 高速场景,ETC通道需要在48小时内,将交易送达 请检查请求参数中的交易时间。
CHANNEL_TYPE_INVALID 扣款请求标识和当前车牌通道标识不一致 高速场景,车牌必须具有对应(ETC或MTC)通道标识才可以扣款 请检查请求参数中的车牌通道标识和用户车牌标识是否一致。
PAYER_DEDUCT_MODE_NOTALLOWED 用户的扣费模式受限,请确认后重试 车牌对应扣款标识使用有误 调用“用户状态查询接口”核实当前对应扣款标识