申请扣款
更新时间:2024.11.14场景介绍
委托代扣可应用于定期扣款或需事后扣款以期提高效率的场景。例如高速,停车场等通过用户授权给商户,进行委托扣款的场景。
|
接口调用请求说明
请求Url | https://api.mch.weixin.qq.com/vehicle/pay/payapply |
---|---|
是否需要证书 | 否 |
请求方式 | post |
返回参数说明 | 扣款接口请求成功,返回success仅代表扣款申请受理成功,不代表扣款成功。扣款是否成功以支付通知的结果为准。 |
前置条件 | 需要用户状态user_state为normal |
支持车牌 | 车主服务只支持蓝牌、绿牌 |
备注 |
耗时短(200ms):已开通垫资功能的商户,申请扣款受理成功后,即可抬杆放行车辆。(商户侧请联系微信侧的运营申请垫资能力)
同一笔商户订单号,在车主服务扣款和其他支付方式下并发同时使用,车主服务扣款可能仅受理成功,但不继续执行扣款动作(如有出现此类情况,商户自行承担损失)
耗时长(5s):未开通垫资功能的商户,需以支付通知的结果为准放行车辆。(若以受理成功放行车辆造成的资金损失由商户侧自行承担。) |
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 说明 |
---|---|---|---|---|---|
公众账号id | appid | 是 | String(32) | wxcbda96de0b165486 | 微信支付分配的公众账号id 此appid需为已授权appid |
商户号 | mch_id | 是 | String(32) | 10000098 | 微信支付分配的商户号 |
随机字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。 |
签名类型 | sign_type | 是 | String(32) | HMAC-SHA256 | 签名类型,默认为HMAC-SHA256 |
签名 | sign | 是 | String(64) | EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5 | 签名,详见签名生成算法 |
商品描述 | body | 是 | String(128) | 公交代扣 | 商品或支付单简要描述 |
商品详情 | detail | 否 | String(6000) | 公交代扣:A | 商品名称明细列表 |
附加数据 | 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 | 版本号,固定值 |
交易场景 | trade_scene | 是 | String(16) | PARKING | 委托代扣的交易场景值,目前支持 : 1.PARKING:车场停车场景 2.PARKING SPACE;车位停车场景 3.GAS 加油场景 4.HIGHWAY 高速场景 5.BRIDGE 路桥场景 该值催缴时会向微信用户进行展示 |
用户标识 | openid | 否 | String(32) | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | 用户在商户appid或子商户appid下的唯一标识。 |
分账标识 | profit_sharing | 否 | String(16) | Y | Y-是,需要分账 |
场景信息 | scene_info | 是 | String(1024) | {"scene_info":{"start_time":"20170926114339","end_time":"20170826114339","charging_time":"12312312312", | 场景信息值,格式为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 | 发起扣费方式,枚举值: |
支持的扣费方式 | support_deduct_mode | 是 | String(16) | DEDUCT_PROACTIVE_ONLY | 该字段用于控制微信下发给用户的模板消息 |
当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,该值催缴时会向微信用户进行展示 |
结束时间 | 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) | 虎门大桥 | 收费出口站的名称,需向用户进行展示 |
数据示例:
返回参数
字段名 | 变量名 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
返回状态码 | return_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL |
返回信息 | return_msg | 是 | 签名失败 | String(128) | 返回信息,如非空,为错误原因 |
以下字段在return_code为SUCCESS的时候返回
字段名 | 变量名 | 必填 | 类型 | 示例值 | 说明 |
---|---|---|---|---|---|
公众账号id | appid | 是 | String(32) | wxcbda96de0b165486 | 微信支付分配的公众账号id |
商户号 | mch_id | 是 | String(32) | 10000098 | 微信支付分配的商户号 |
设备号 | 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) | 签名错误 | 错误码描述 |
数据示例:
错误码
名称 | 描述 | 原因 | 解决方案 |
---|---|---|---|
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 | 权限校验错误 | 商户号产品权限校验错误 | 权限校验错误 服务商或子商户号权限校验错误 请检查如下几个项: |
TRADE_ERROR | 支付确认失败 | 用户的微信号被风控拦截或者用户的微信号被紧急冻结 | 提示用户可咨询微信客服了解具体原因 |
VEHICLE_AUTH_ERROR | 校验授权关系失败 | 传入的appid没有授权 | 调用授权接口完成用户对appid的授权 |
TRADE_TIME_INVALID | 扣款请求超过业务规定时间 | 高速场景,ETC通道需要在48小时内,将交易送达 | 请检查请求参数中的交易时间。 |
CHANNEL_TYPE_INVALID | 扣款请求标识和当前车牌通道标识不一致 | 高速场景,车牌必须具有对应(ETC或MTC)通道标识时才可以扣款 | 请检查请求参数中的车牌通道标识和用户车牌标识是否一致。 |
PAYER_DEDUCT_MODE_NOTALLOWED | 用户的扣费模式受限,请确认后重试 | 车牌对应扣款标识使用有误 | 调用“用户状态查询接口”核实当前对应扣款标识 |