扣款接口
更新时间:2023.05.12使用签约协议号发起扣款,若出现超时或返回订单状态不明确时,商户均可调用商户订单号查单接口查询订单扣款结果。
# 接口说明
支持商户:
【普通服务商】
请求方式:
【POST】/v3/eduschoolpay/transactions
请求域名:
【主域名】
https://api.mch.weixin.qq.com
使用该域名将访问就近的接入点【备域名】
https://api2.mch.weixin.qq.com
使用该域名将访问异地的接入点 ,指引点击查看
# 请求参数
- Authorization 必填请参考 签名认证 生成认证信息
- Accept 必填请设置为
application/json
- Content-Type 必填请设置为
application/json
Header HTTP头参数
- appid 必填【商户AppID】 微信公众平台(mp.weixin.qq.com)为商户分配的公众账号ID,与商户号存在绑定关系。
如果是服务商模式接入则为服务商商户号绑定的AppID;如果是直连商户模式接入则为直连商户号绑定的AppID。 - sub_mchid 选填【子商户号】 微信支付分配的商户号,服务商商户号与子商户号存在父子关系。如果是服务商模式接入则必填;如果是直连商户模式接入则不用填写。
- sub_appid 选填【子商户AppID】 微信公众平台(mp.weixin.qq.com)为商户分配的公众账号ID,与子商户号存在绑定关系。如果是服务商模式接入则必填;如果是直连商户模式接入则不用填写。
- description 必填【商品描述】 商品描述,格式为:学校-消费地点-销售商品。最长127个字符
- attach 选填【商户数据】 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据,最长127个字符
- out_trade_no 必填【商户订单号】 商户自行生成的订单号,要求64个字符内,只能是数字、大小写字母和
_-
,且在同一个商户号下唯一。重新发起一笔支付要使用原订单号,避免重复支付。 - goods_tag 选填【订单优惠标记】 用于代金券核销或立减优惠功能,需携带与代金券或立减优惠中相同的goods_tag方可核销优惠。
- contract_id 必填【签约协议号】 微信用户在校园轻松付下的合约的唯一标识,用户在校园轻松付小程序完成签约后,由微信支付生成。
- user_id 必填【用户账号】 进行当前消费的学生的用户账号,如学生学号。必须与签署当前合约(由参数
contract_id
标识)时使用的用户账号一致。
微信支付将对该参数与合约中的user_id
进行对比验证,二者不一致时拒绝受理扣款。 - amount 必填【订单金额】 订单金额信息
- 属性
- scene_info 必填【场景信息】 本次交易所涉及的具体场景信息
- 属性
- device_info 选填【设备信息】 设备信息
- 属性
- settle_info 选填【分账结算信息】 分账结算相关信息
- 属性
Body 包体参数
请求示例
POST
# 应答参数
- mchid 必填【商户号】 微信支付分配的商户号。如果是服务商模式接入则为服务商商户号;如果是直连商户模式接入则为直连商户号。
- appid 必填【商户AppID】 微信公众平台(mp.weixin.qq.com)为服务商商户分配的公众账号ID,与商户号存在绑定关系。
如果是服务商模式接入则为服务商商户号绑定的AppID;如果是直连商户模式接入则为直连商户号绑定的AppID。 - sub_mchid 选填【子商户号】 微信支付分配的商户号,服务商商户号与子商户号存在父子关系。如果是服务商模式接入则有值;如果是直连商户模式接入则该字段为空。
- sub_appid 选填【子商户AppID】 微信公众平台(mp.weixin.qq.com)为商户分配的公众账号ID,与子商户号存在绑定关系。如果是服务商模式接入则有值;如果是直连商户模式接入则该字段为空。
- out_trade_no 必填【商户订单号】 商户自行生成的订单号,要求64个字符内,只能是数字、大小写字母和
_-
,且在同一个商户号下唯一。 - transaction_id 选填【微信支付订单号】 微信支付订单号
- trade_type 选填【交易类型】 交易类型,取值如下:JSAPI,NATIVE,APP,MICROPAY,MWEB,FACEPAY
- trade_state 必填【交易状态】 本支付订单的状态,可选枚举值:SUCCESS—支付成功;REFUND—转入退款;ACCEPTED—已受理,未支付;PAY_FAIL-支付失败(其他原因,如银行返回失败);PAY_BACK-用户归还欠款(仅当本单由微信支付预先垫付资金,即
bank_type=BPA
时有可能发生) - trade_state_desc 选填【交易状态描述】 对当前订单状态的描述和下一步操作的指引
- bank_type 选填【付款银行】 银行类型,采用字符串类型的银行标识,值列表详见银行类型
。特别地,使用BPA表示本笔订单由微信支付预先垫付资金。 - attach 选填【商户数据】 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
- success_time 选填【支付完成时间】 支付订单已成功才会返回,使用rfc3339
所定义的格式,即为YYYY-MM-DDThh:mm:ss+TIMEZONE - payer 选填【支付者】 支付者
- 属性
- amount 必填【订单金额】 订单金额信息
- 属性
- device_info 必填【设备信息】 设备信息
- 属性
- promotion_detail 选填【优惠详情】 优惠详情
- 属性
200OK
应答示例
200 OK
# 错误码
# 公共错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | PARAM_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
400 | INVALID_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 接口规则 |
401 | SIGN_ERROR | 验证不通过 | 请参阅 签名常见问题 |
500 | SYSTEM_ERROR | 系统异常,请稍后重试 | 请稍后重试 |
# 业务错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | ALREADY_EXISTS | out_trade_no冲突 | out_trade_no冲突,不同的订单请保证 out_trade_no 唯一 |
400 | INVALID_REQUEST | 非法商户,服务商模式下请确认子商户正确 | 校园轻松付不支持当前商户访问,请确认商户已获得本产品权限。服务商模式下请同时确认子商户无误且已获得本产品权限 |
400 | INVALID_REQUEST | 商户号和公众号没有绑定关系 | 检查请求中的AppID与商户号(服务商模式下则为服务商商户号)是否匹配,然后重试 |
400 | INVALID_REQUEST | 商户号、子商户号以及子公众号没有绑定关系 | 检查请求中的sub_appid,sub_mchid与服务商商户号是否匹配,然后重试 |
400 | INVALID_REQUEST | 订单状态异常 | 风控失败或者用户账户冻结。 |
400 | INVALID_REQUEST | 模板与学校不匹配 | contract_id标识的合约的签约模板与school_id不匹配,请填写正确的 school_id 或 contract_id |
400 | INVALID_REQUEST | 学生账户与合约不匹配 | contract_id标识的合约与user_id不匹配,请填写正确的user_id或contract_id |
400 | INVALID_REQUEST | 签约无效或已解除 | contract_id无效或合约已解除或微信用户已关闭校园轻松付产品授权,请引导用户重新签约,否则无法扣款 |
400 | INVALID_REQUEST | 商户没有大额扣费场景权限 | 请检查确保发起扣款的订单额度不超过校园轻松付支持的单笔及单日扣款额度,然后重试 |
400 | INVALID_REQUEST | 单日扣款总金额超过限额 | 请隔天重新发起扣款或使用其他方式进行支付 |
400 | INVALID_REQUEST | 商户订单号重复,请查询订单确定交易状态。确定交易失败后换订单号重试 | 请更换商户单号重新发起扣款 |
400 | INVALID_REQUEST | 交易存在风险,不能发起扣款 | 商户号被风控拦截或者用户的微信号被紧急冻结,可咨询微信客服了解具体原因 |
403 | NO_AUTH | 用户禁用当前商户扣款权限 | 微信用户禁用了当前子商户的扣款权限,请引导用户在微信校园轻松付小程序中重新启用该商户的扣款权限,然后原参数重试;否则无法扣款。 |
403 | NOT_ENOUGH | 用户欠款过多,暂停交易 | 用户在校园轻松付产品中欠款过多,请引导用户归还垫资欠款。归还欠款后稍等片刻再原参数重试。 |
429 | RATELIMIT_EXCEEDED | 达到调用速率限制 | 接口调用频率过快,请降低请求频率 |
500 | SYSTEM_ERROR | 用户数据异常,请稍后重试 | 5开头的错误码均为系统错误,请使用相同的参数稍后重试。 |
500 | SYSTEM_ERROR | 出现内部服务器错误 | 5开头的错误码均为系统错误,请使用相同的参数稍后重试 |
文档是否有帮助