接口调用规则:
请求示例:
<xml>
<appid>wxe062425f740c8888</appid>
<mch_id>1900000109</mch_id>
<device_info>013467007045764</device_info>
<nonce_str>3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str>
<sign>C97BDBACF37622775366F38B629F45E3</sign>
<partner_trade_no>100000982017072019616</partner_trade_no>
<openid>ohO4Gt7wVPxIT1A9GjFaMYMiZY1s</openid>
<check_name>NO_CHECK</check_name>
<re_user_name>张三</re_user_name>
<amount>100</amount>
<desc>六月出差报销费用</desc>
<spbill_create_ip>10.2.3.10</spbill_create_ip>
<workwx_sign>99BCDAFF065A4B95628E3DB468A874A8</workwx_sign>
<ww_msg_type>NORMAL_MSG</ww_msg_type>
<act_name>示例项目</act_name>
</xml>
请求方式:POST(HTTPS)
请求地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/paywwsptrans2pocket
是否需要证书:请求需要双向证书。
请求方式:POST
数据格式:xml
证书使用详见:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3
参数说明:
字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
公众账号appid | appid | 是 | wx8888888888888888 | String(128) | 微信分配的公众账号ID(企业微信corpid即为此appid) |
商户号 | mch_id | 是 | 1900000109 | String(32) | 微信支付分配的商户号 |
设备号 | device_info | 否 | 013467007045764 | String(32) | 微信支付分配的终端设备号 |
随机字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 随机字符串,不长于32位 |
微信支付签名 | sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | String(32) | 参见“签名算法” |
商户订单号 | partner_trade_no | 是 | 10000098201411111234567890 | String(32) | 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号) |
用户openid | openid | 是 | oxTWIuGaIt6gTKsQRLau2M0yL16E | String(64) | 商户appid下,某用户的openid。获取用户openid参见:http://work.weixin.qq.com/api/doc#11279 |
校验用户姓名选项 | check_name | 是 | FORCE_CHECK | String(16) | NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名 |
收款用户姓名 | re_user_name | 否 | 马花花 | String(64) | 收款用户真实姓名。 如果check_name设置为FORCE_CHECK,则必填用户真实姓名 |
金额 | amount | 是 | 10099 | int | 企业微信企业付款金额,单位为分 |
付款说明 | desc | 是 | 六月出差报销费用 | String(81) | 向员工付款说明信息。必填 |
Ip地址 | spbill_create_ip | 是 | 192.168.0.1 | String(32) | 调用接口的机器Ip地址 |
企业微信签名 | workwx_sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | String(128) | 参见“签名算法” |
付款消息类型 | ww_msg_type | 是 | NORMAL_MSG | String | NORMAL_MSG:普通付款消息 APPROVAL _MSG:审批付款消息 |
审批单号 | approval_number | 否 | 201705160008 | String | ww_msg_type为APPROVAL _MSG时,需要填写approval_number |
审批类型 | approval_type | 否 | 1 | int | ww_msg_type为APPROVAL _MSG时,需要填写1 |
项目名称 | act_name | 是 | 产品部门报销 | String | 项目名称,最长50个utf8字符 |
付款的应用id | agentid | 否 | 1 | unsigned int | 以企业应用的名义付款,企业应用id,整型,可在企业微信管理端应用的设置页面查看。 |
返回结果 :
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[ok]]></return_msg>
<appid><![CDATA[wxec38b8ff840b8888]]></appid>
<mch_id><![CDATA[1900000109]]></mch_id>
<device_info><![CDATA[013467007045764]]></device_info>
<nonce_str><![CDATA[lxuDzMnRjpcXzxLx0q]]></nonce_str>
<result_code><![CDATA[SUCCESS]]></result_code>
<partner_trade_no><![CDATA[100000982017072019616]]></partner_trade_no>
<payment_no><![CDATA[1000018301201505190181489473]]></payment_no>
<payment_time><![CDATA[2017-07-20 22:05:59]]></payment_time>
</xml>
返回参数:
字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
返回状态码 | return_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
返回信息 | return_msg | 否 | 签名失败 | String(128) | 返回信息,如非空,为错误原因 |
以下字段在return_code为SUCCESS的时候有返回:
字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
商户appid | appid | 是 | wx8888888888888888 | String(128) | 微信分配的公众账号ID(企业微信corpid即为此appid) |
商户号 | mch_id | 是 | 1900000109 | String(32) | 微信支付分配的商户号 |
设备号 | device_info | 否 | 013467007045764 | String(32) | 终端设备号 |
随机字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 随机字符串,不长于32位 |
业务结果 | result_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL,注意:当状态为FAIL时,存在业务结果未明确的情况,所以如果状态为FAIL,请务必再请求一次查询接口,通过查询接口确认此次付款结果。如果要重试,请使用原商户订单号+原参数重试,避免重复付款。 |
错误代码 | err_code | 否 | SYSTEMERROR | String(32) | 错误码信息 |
错误代码描述 | err_code_des | 否 | 系统错误 | String(128) | 结果信息描述 |
以下字段在return_code 和result_code都为SUCCESS的时候有返回:
字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
商户订单号 | partner_trade_no | 是 | 1217752501201407033233368018 | String(32) | 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号) |
微信订单号 | payment_no | 是 | 1007752501201407033233368018 | String(64) | 企业微信企业付款成功,返回的微信订单号 |
微信支付成功时间 | payment_time | 是 | 2017-07-19 15:26:59 | String(32) | 企业微信企业付款成功时间 |
错误码:
错误码 | 错误描述 | 原因 | 解决方式 |
---|---|---|---|
NOAUTH | 没有权限 | 没有授权请求此api | 请联系微信支付开通api权限 |
AMOUNT_LIMIT | 付款金额不能小于最低限额 | 付款金额不能小于最低限额 | 每次付款金额必须大于1元 |
PARAM_ERROR | 参数错误 | 参数缺失,或参数格式出错,参数不合法等 | 请查看err_code_des,修改设置错误的参数 |
OPENID_ERROR | Openid错误 | Openid格式错误或者不属于商家公众账号 | 请核对商户自身公众号appid和用户在此公众号下的openid |
NOTENOUGH | 余额不足 | 账号余额不足 | 请用户充值后再支付 |
SYSTEMERROR | 系统繁忙,请稍后再试 | 系统错误,请重试 | 使用原单号以及原请求参数重试 |
NAME_MISMATCH | 姓名校验出错 | 请求参数里填写了需要检验姓名,但是输入了错误的姓名 | 填写正确的用户姓名 |
SIGN_ERROR | 微信支付签名错误 | 没有按照文档要求进行签名 | 1.签名前没有按照要求进行排序。 2.没有使用商户平台设置的密钥进行签名 3.参数有空格或者进行了encode后进行签名。 |
XML_ERROR | Post内容出错 | Post请求数据不是合法的xml格式内容 | 修改post的内容 |
HTTP_METHOD_ERROR | 发送请求方式错误 | 发送请求方式错误 | 改为使用http post的方式来请求 |
FATAL_ERROR | 两次请求参数不一致 | 两次请求商户单号一样,但是参数不一致 | 如果想重试前一次的请求,请用原参数重试,如果重新发送,请更换单号 |
CA_ERROR | 证书出错 | 请求没带证书或者带上了错误的证书 | 1.到商户平台下载证书 2.请求的时候带上该证书 3.请通过查询接口确认此次付款结果;如果要重试,请使用原商户订单号+原参数重试,避免重复付款。 |
V2_ACCOUNT_SIMPLE_BAN | 无法给非实名用户付款 | 用户微信支付账户未知名,无法付款 | 引导用户在微信支付内进行绑卡实名 |
WORKWX_MCHID_ERROR | 企业微信商户号和企业关系校验失败 | 企业微信商户号和企业关系校验失败 | 确认是否已经绑定商户号和企业微信的关系 |
WORKWX_SIGN_ERROR | 企业微信签名错误 | 企业微信签名校验失败 | 按文档要求重新生成签名后再重试 |
SENDNUM_LIMIT | 用户今日付款次数超过限制 | 用户今日付款次数超过限制 | 登录微信支付商户平台更改API安全配置,如果要继续付款必须使用原商户订单号重试。 |