扫码支付接口说明
<h2>创建支付订单</h2>
<p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/6d7d4d3c6e2c05a0df8c44c0dd85f056?showdoc=.jpg" alt="" /></p>
<p>扫码支付的流程中,微信平台是把创建支付订单和扣款合并到一起了,所以用一幅时序图就能讲明白扫码付款的全流程。</p>
<p>比如说我们到家乐福买东西,出来结账的时候,收银员在电脑上创建订单。接下来就应该轮到用户出示付款码,然后收银员就要拿着扫码器,扫描我们手机上面的付款码,就相当于把付款码文字输入到收银系统中当扫码完毕,扫码器会输入一个回车符,收银系统接收到回车符以后,接下来就要把付款码文字发送给后端系统。当然了,为了保证数据传输的安全性,应该选用HTTPS协议,这样用户的付款码就不会泄露出去。目前的开发阶段,我们可以使用HTTP协议,但是真正部署到运营环境中,必须要使用HTTPS协议。后端系统接收到付款码之后,接下来要把这个付款码和其他的参数,一起上传给微信平台,这其中就包含了APPID、商户号、随机字符串,以及数字签名等等。微信平台验证过这些数据之后看,接下来就生成支付订单,并且完成扣款,然后把支付的结果分别发送给微信用户和商户系统如果支付成功,商户系统会更新商品订单状态,然后把支付结果发送给收银系统,收银系统只是一个前端系统,它接收到通知以后,刷新一下页面,于是就能看到订单已经付款的状态了。各位同学,因为扫码支付生成订单和扣款流程合并成了一个,所以原来我们写代码要对应两幅时序图,现在只需要完成一幅时序图就可以了。看来这一章我们写的代码会更少一些。</p>
<h3>输入参数</h3>
<table>
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">变量名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">示例值</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">公众账号ID</td>
<td style="text-align: left;">appid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">wx8888888888888888</td>
<td style="text-align: left;">微信分配的公众账号ID(企业号corpid即为此appId)</td>
</tr>
<tr>
<td style="text-align: left;">商户号</td>
<td style="text-align: left;">mch_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">1900000109</td>
<td style="text-align: left;">微信支付分配的商户号</td>
</tr>
<tr>
<td style="text-align: left;">设备号</td>
<td style="text-align: left;">device_info</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">013467007045764</td>
<td style="text-align: left;">终端设备号(商户自定义,如门店编号)</td>
</tr>
<tr>
<td style="text-align: left;">随机字符串</td>
<td style="text-align: left;">nonce_str</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">5K8264ILTKCH16CQ2502SI8ZNMTM67VS</td>
<td style="text-align: left;">随机字符串,不长于32位。推荐<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3">随机数生成算法</a></td>
</tr>
<tr>
<td style="text-align: left;">签名</td>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">C380BEC2BFD727A4B6845133519F3AD6</td>
<td style="text-align: left;">签名,<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3">详见签名生成算法</a></td>
</tr>
<tr>
<td style="text-align: left;">签名类型</td>
<td style="text-align: left;">sign_type</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">HMAC-SHA256</td>
<td style="text-align: left;">签名类型,目前支持HMAC-SHA256和MD5,默认为MD5</td>
</tr>
<tr>
<td style="text-align: left;">商品描述</td>
<td style="text-align: left;">body</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(128)</td>
<td style="text-align: left;">image形象店-深圳腾大- QQ公仔</td>
<td style="text-align: left;">商品简单描述,该字段须严格按照规范传递,具体请见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">参数规定</a></td>
</tr>
<tr>
<td style="text-align: left;">商品详情</td>
<td style="text-align: left;">detail</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(6000)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">单品优惠功能字段,需要接入详见<a href="https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_101&index=1">单品优惠详细说明</a></td>
</tr>
<tr>
<td style="text-align: left;">附加数据</td>
<td style="text-align: left;">attach</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(127)</td>
<td style="text-align: left;">说明</td>
<td style="text-align: left;">附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据</td>
</tr>
<tr>
<td style="text-align: left;">商户订单号</td>
<td style="text-align: left;">out_trade_no</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">1217752501201407033233368018</td>
<td style="text-align: left;">商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-\ *且在同一个商户号下唯一。详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">商户订单号</a></td>
</tr>
<tr>
<td style="text-align: left;">订单金额</td>
<td style="text-align: left;">total_fee</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">Int</td>
<td style="text-align: left;">888</td>
<td style="text-align: left;">订单总金额,单位为分,只能为整数,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">支付金额</a></td>
</tr>
<tr>
<td style="text-align: left;">货币类型</td>
<td style="text-align: left;">fee_type</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(16)</td>
<td style="text-align: left;">CNY</td>
<td style="text-align: left;">符合ISO4217标准的三位字母代码,默认人民币:CNY,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">货币类型</a></td>
</tr>
<tr>
<td style="text-align: left;">终端IP</td>
<td style="text-align: left;">spbill_create_ip</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(64)</td>
<td style="text-align: left;">8.8.8.8</td>
<td style="text-align: left;">支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP</td>
</tr>
<tr>
<td style="text-align: left;">订单优惠标记</td>
<td style="text-align: left;">goods_tag</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">1234</td>
<td style="text-align: left;">订单优惠标记,代金券或立减优惠功能的参数,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_1">代金券或立减优惠</a></td>
</tr>
<tr>
<td style="text-align: left;">指定支付方式</td>
<td style="text-align: left;">limit_pay</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">no_credit</td>
<td style="text-align: left;">no_credit--指定不能使用信用卡支付</td>
</tr>
<tr>
<td style="text-align: left;">交易起始时间</td>
<td style="text-align: left;">time_start</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(14)</td>
<td style="text-align: left;">20091225091010</td>
<td style="text-align: left;">订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">时间规则</a></td>
</tr>
<tr>
<td style="text-align: left;">交易结束时间</td>
<td style="text-align: left;">time_expire</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(14)</td>
<td style="text-align: left;">20091227091010</td>
<td style="text-align: left;">订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。注意:最短失效时间间隔需大于1分钟</td>
</tr>
<tr>
<td style="text-align: left;">电子发票入口开放标识</td>
<td style="text-align: left;">receipt</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(8)</td>
<td style="text-align: left;">Y</td>
<td style="text-align: left;">Y,传入Y时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效</td>
</tr>
<tr>
<td style="text-align: left;">付款码</td>
<td style="text-align: left;">auth_code</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(128)</td>
<td style="text-align: left;">120061098828009406</td>
<td style="text-align: left;">扫码支付付款码,设备读取用户微信中的条码或者二维码信息 (注:用户付款码条形码规则:18位纯数字,以10、11、12、13、14、15开头)</td>
</tr>
<tr>
<td style="text-align: left;">+场景信息</td>
<td style="text-align: left;">scene_info</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(256)</td>
<td style="text-align: left;">{"store_info" : { "id": "SZTX001", "name": "腾大餐厅", "area_code": "440305", "address": "科技园中一路腾讯大厦" }}</td>
<td style="text-align: left;">该字段用于上报场景信息,目前支持上报实际门店信息。该字段为JSON对象数据,对象格式为{"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} ,字段详细说明请点击行前的+展开</td>
</tr>
</tbody>
</table>
<p>举例如下:</p>
<pre><code class="language-xml"><xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>订单额外描述</attach>
<auth_code>120269300684844649</auth_code>
<body>付款码支付测试</body>
<device_info>1000</device_info>
<goods_tag></goods_tag>
<mch_id>10000100</mch_id>
<nonce_str>8aaee146b1dee7cec9100add9b96cbe2</nonce_str>
<out_trade_no>1415757673</out_trade_no>
<spbill_create_ip>14.17.22.52</spbill_create_ip>
<time_expire></time_expire>
<total_fee>1</total_fee>
<sign>C29DB7DB1FD4136B84AE35604756362C</sign>
</xml></code></pre>
<p>注:参数值用XML转义即可,CDATA标签用于说明数据不被XML解析器解析。</p>
<h3>返回结果</h3>
<table>
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">变量名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">示例值</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">返回状态码</td>
<td style="text-align: left;">return_code</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(16)</td>
<td style="text-align: left;">SUCCESS</td>
<td style="text-align: left;">SUCCESS/FAIL此字段是接口通信情况标识,非交易成功与否的标识</td>
</tr>
<tr>
<td style="text-align: left;">返回信息</td>
<td style="text-align: left;">return_msg</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(128)</td>
<td style="text-align: left;">OK</td>
<td style="text-align: left;">当return_code为FAIL时返回信息为错误原因 ,例如签名失败参数格式校验错误</td>
</tr>
</tbody>
</table>
<p>当return_code为SUCCESS的时候,还会包括以下字段:</p>
<table>
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">变量名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">示例值</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">公众账号ID</td>
<td style="text-align: left;">appid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">wx8888888888888888</td>
<td style="text-align: left;">调用接口提交的公众账号ID</td>
</tr>
<tr>
<td style="text-align: left;">商户号</td>
<td style="text-align: left;">mch_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">1900000109</td>
<td style="text-align: left;">调用接口提交的商户号</td>
</tr>
<tr>
<td style="text-align: left;">设备号</td>
<td style="text-align: left;">device_info</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">013467007045764</td>
<td style="text-align: left;">调用接口提交的终端设备号,</td>
</tr>
<tr>
<td style="text-align: left;">随机字符串</td>
<td style="text-align: left;">nonce_str</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">5K8264ILTKCH16CQ2502SI8ZNMTM67VS</td>
<td style="text-align: left;">微信返回的随机字符串</td>
</tr>
<tr>
<td style="text-align: left;">签名</td>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">C380BEC2BFD727A4B6845133519F3AD6</td>
<td style="text-align: left;">微信返回的签名,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3">签名生成算法</a></td>
</tr>
<tr>
<td style="text-align: left;">业务结果</td>
<td style="text-align: left;">result_code</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(16)</td>
<td style="text-align: left;">SUCCESS</td>
<td style="text-align: left;">SUCCESS/FAIL</td>
</tr>
<tr>
<td style="text-align: left;">错误代码</td>
<td style="text-align: left;">err_code</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">SYSTEMERROR</td>
<td style="text-align: left;">详细参见错误列表</td>
</tr>
<tr>
<td style="text-align: left;">错误代码描述</td>
<td style="text-align: left;">err_code_des</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(128)</td>
<td style="text-align: left;">系统错误</td>
<td style="text-align: left;">错误返回的信息描述</td>
</tr>
</tbody>
</table>
<p>当return_code 和result_code都为SUCCESS的时,还会包括以下字段:</p>
<table>
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">变量名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">示例值</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">用户标识</td>
<td style="text-align: left;">openid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(128)</td>
<td style="text-align: left;">Y</td>
<td style="text-align: left;">用户在商户appid 下的唯一标识</td>
</tr>
<tr>
<td style="text-align: left;">是否关注公众账号</td>
<td style="text-align: left;">is_subscribe</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(1)</td>
<td style="text-align: left;">Y</td>
<td style="text-align: left;">用户是否关注公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注</td>
</tr>
<tr>
<td style="text-align: left;">交易类型</td>
<td style="text-align: left;">trade_type</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(16)</td>
<td style="text-align: left;">MICROPAY</td>
<td style="text-align: left;">MICROPAY 付款码支付</td>
</tr>
<tr>
<td style="text-align: left;">付款银行</td>
<td style="text-align: left;">bank_type</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">CMC</td>
<td style="text-align: left;">银行类型,采用字符串类型的银行标识,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">银行类型</a></td>
</tr>
<tr>
<td style="text-align: left;">货币类型</td>
<td style="text-align: left;">fee_type</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(16)</td>
<td style="text-align: left;">CNY</td>
<td style="text-align: left;">符合ISO 4217标准的三位字母代码,默认人民币:CNY,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">货币类型</a></td>
</tr>
<tr>
<td style="text-align: left;">订单金额</td>
<td style="text-align: left;">total_fee</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">Int</td>
<td style="text-align: left;">888</td>
<td style="text-align: left;">订单总金额,单位为分,只能为整数,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">支付金额</a></td>
</tr>
<tr>
<td style="text-align: left;">应结订单金额</td>
<td style="text-align: left;">settlement_total_fee</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">Int</td>
<td style="text-align: left;">100</td>
<td style="text-align: left;">当订单使用了免充值型优惠券后返回该参数,应结订单金额=订单金额-免充值优惠券金额。</td>
</tr>
<tr>
<td style="text-align: left;">代金券金额</td>
<td style="text-align: left;">coupon_fee</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">Int</td>
<td style="text-align: left;">100</td>
<td style="text-align: left;">“代金券”金额<=订单金额,订单金额-“代金券”金额=现金支付金额,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">支付金额</a></td>
</tr>
<tr>
<td style="text-align: left;">现金支付货币类型</td>
<td style="text-align: left;">cash_fee_type</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(16)</td>
<td style="text-align: left;">CNY</td>
<td style="text-align: left;">符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">货币类型</a></td>
</tr>
<tr>
<td style="text-align: left;">现金支付金额</td>
<td style="text-align: left;">cash_fee</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">Int</td>
<td style="text-align: left;">100</td>
<td style="text-align: left;">订单现金支付金额,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">支付金额</a></td>
</tr>
<tr>
<td style="text-align: left;">微信支付订单号</td>
<td style="text-align: left;">transaction_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">1217752501201407033233368018</td>
<td style="text-align: left;">微信支付订单号</td>
</tr>
<tr>
<td style="text-align: left;">商户订单号</td>
<td style="text-align: left;">out_trade_no</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(32)</td>
<td style="text-align: left;">1217752501201407033233368018</td>
<td style="text-align: left;">商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-\ *且在同一个商户号下唯一。</td>
</tr>
<tr>
<td style="text-align: left;">商家数据包</td>
<td style="text-align: left;">attach</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(128)</td>
<td style="text-align: left;">123456</td>
<td style="text-align: left;">商家数据包,原样返回</td>
</tr>
<tr>
<td style="text-align: left;">支付完成时间</td>
<td style="text-align: left;">time_end</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">String(14)</td>
<td style="text-align: left;">20141030133525</td>
<td style="text-align: left;">订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。详见<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2">时间规则</a></td>
</tr>
<tr>
<td style="text-align: left;">营销详情</td>
<td style="text-align: left;">promotion_detail</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">String(6000)</td>
<td style="text-align: left;">示例见下文</td>
<td style="text-align: left;">新增返回,单品优惠功能字段,需要接入请见<a href="https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_101&index=1">详细说明</a></td>
</tr>
</tbody>
</table>
<p>举例如下:</p>
<pre><code class="language-xml"><xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx2421b1c4370ec43b]]></appid>
<mch_id><![CDATA[10000100]]></mch_id>
<device_info><![CDATA[1000]]></device_info>
<nonce_str><![CDATA[GOp3TRyMXzbMlkun]]></nonce_str>
<sign><![CDATA[D6C76CB785F07992CDE05494BB7DF7FD]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<openid><![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]></openid>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<trade_type><![CDATA[MICROPAY]]></trade_type>
<bank_type><![CDATA[CCB_DEBIT]]></bank_type>
<total_fee>1</total_fee>
<coupon_fee>0</coupon_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<transaction_id><![CDATA[1008450740201411110005820873]]></transaction_id>
<out_trade_no><![CDATA[1415757673]]></out_trade_no>
<attach><![CDATA[订单额外描述]]></attach>
<time_end><![CDATA[20141111170043]]></time_end>
</xml></code></pre>
<h3>错误码</h3>
<p>注意:如果当前交易返回的支付状态是明确的错误原因造成的支付失败(支付确认失败),请重新下单支付;如果当前交易返回的支付状态是不明错误(支付结果未知),请调用查询订单接口确认状态,如果长时间(建议30秒)都得不到明确状态请调用撤销订单接口。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">描述</th>
<th style="text-align: left;">支付状态</th>
<th style="text-align: left;">原因</th>
<th style="text-align: left;">解决方案</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">SYSTEMERROR</td>
<td style="text-align: left;">接口返回错误</td>
<td style="text-align: left;">支付结果未知</td>
<td style="text-align: left;">系统超时</td>
<td style="text-align: left;">请立即调用被扫订单结果查询API,查询当前订单状态,并根据订单的状态决定下一步的操作。</td>
</tr>
<tr>
<td style="text-align: left;">PARAM_ERROR</td>
<td style="text-align: left;">参数错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">请求参数未按指引进行填写</td>
<td style="text-align: left;">请根据接口返回的详细信息检查您的程序</td>
</tr>
<tr>
<td style="text-align: left;">ORDERPAID</td>
<td style="text-align: left;">订单已支付</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">订单号重复</td>
<td style="text-align: left;">请确认该订单号是否重复支付,如果是新单,请使用新订单号提交</td>
</tr>
<tr>
<td style="text-align: left;">NOAUTH</td>
<td style="text-align: left;">商户无权限</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">商户没有开通被扫支付权限</td>
<td style="text-align: left;">请开通商户号权限。请联系产品或商务申请</td>
</tr>
<tr>
<td style="text-align: left;">AUTHCODEEXPIRE</td>
<td style="text-align: left;">二维码已过期,请用户在微信上刷新后再试</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">用户的条码已经过期</td>
<td style="text-align: left;">请收银员提示用户,请用户在微信上刷新条码,然后请收银员重新扫码。 直接将错误展示给收银员</td>
</tr>
<tr>
<td style="text-align: left;">NOTENOUGH</td>
<td style="text-align: left;">余额不足</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">用户的零钱余额不足</td>
<td style="text-align: left;">请收银员提示用户更换当前支付的卡,然后请收银员重新扫码。建议:商户系统返回给收银台的提示为“用户余额不足.提示用户换卡支付”</td>
</tr>
<tr>
<td style="text-align: left;">NOTSUPORTCARD</td>
<td style="text-align: left;">不支持卡类型</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">用户使用卡种不支持当前支付形式</td>
<td style="text-align: left;">请用户重新选择卡种 建议:商户系统返回给收银台的提示为“该卡不支持当前支付,提示用户换卡支付或绑新卡支付”</td>
</tr>
<tr>
<td style="text-align: left;">ORDERCLOSED</td>
<td style="text-align: left;">订单已关闭</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">该订单已关</td>
<td style="text-align: left;">商户订单号异常,请重新下单支付</td>
</tr>
<tr>
<td style="text-align: left;">ORDERREVERSED</td>
<td style="text-align: left;">订单已撤销</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">当前订单已经被撤销</td>
<td style="text-align: left;">当前订单状态为“订单已撤销”,请提示用户重新支付</td>
</tr>
<tr>
<td style="text-align: left;">BANKERROR</td>
<td style="text-align: left;">银行系统异常</td>
<td style="text-align: left;">支付结果未知</td>
<td style="text-align: left;">银行端超时</td>
<td style="text-align: left;">请立即调用被扫订单结果查询API,查询当前订单的不同状态,决定下一步的操作。</td>
</tr>
<tr>
<td style="text-align: left;">USERPAYING</td>
<td style="text-align: left;">用户支付中,需要输入密码</td>
<td style="text-align: left;">支付结果未知</td>
<td style="text-align: left;">该笔交易因为业务规则要求,需要用户输入支付密码。</td>
<td style="text-align: left;">等待5秒,然后调用被扫订单结果查询API,查询当前订单的不同状态,决定下一步的操作。</td>
</tr>
<tr>
<td style="text-align: left;">AUTH_CODE_ERROR</td>
<td style="text-align: left;">付款码参数错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">请求参数未按指引进行填写</td>
<td style="text-align: left;">每个二维码仅限使用一次,请刷新再试</td>
</tr>
<tr>
<td style="text-align: left;">AUTH_CODE_INVALID</td>
<td style="text-align: left;">付款码检验错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">收银员扫描的不是微信支付的条码</td>
<td style="text-align: left;">请扫描微信支付被扫条码/二维码</td>
</tr>
<tr>
<td style="text-align: left;">XML_FORMAT_ERROR</td>
<td style="text-align: left;">XML格式错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">XML格式错误</td>
<td style="text-align: left;">请检查XML参数格式是否正确</td>
</tr>
<tr>
<td style="text-align: left;">REQUIRE_POST_METHOD</td>
<td style="text-align: left;">请使用post方法</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">未使用post传递参数</td>
<td style="text-align: left;">请检查请求参数是否通过post方法提交</td>
</tr>
<tr>
<td style="text-align: left;">SIGNERROR</td>
<td style="text-align: left;">签名错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">参数签名结果不正确</td>
<td style="text-align: left;">请检查签名参数和方法是否都符合签名算法要求</td>
</tr>
<tr>
<td style="text-align: left;">LACK_PARAMS</td>
<td style="text-align: left;">缺少参数</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">缺少必要的请求参数</td>
<td style="text-align: left;">请检查参数是否齐全</td>
</tr>
<tr>
<td style="text-align: left;">NOT_UTF8</td>
<td style="text-align: left;">编码格式错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">未使用指定编码格式</td>
<td style="text-align: left;">请使用UTF-8编码格式</td>
</tr>
<tr>
<td style="text-align: left;">BUYER_MISMATCH</td>
<td style="text-align: left;">支付帐号错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">暂不支持同一笔订单更换支付方</td>
<td style="text-align: left;">请确认支付方是否相同</td>
</tr>
<tr>
<td style="text-align: left;">APPID_NOT_EXIST</td>
<td style="text-align: left;">APPID不存在</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">参数中缺少APPID</td>
<td style="text-align: left;">请检查APPID是否正确</td>
</tr>
<tr>
<td style="text-align: left;">MCHID_NOT_EXIST</td>
<td style="text-align: left;">MCHID不存在</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">参数中缺少MCHID</td>
<td style="text-align: left;">请检查MCHID是否正确</td>
</tr>
<tr>
<td style="text-align: left;">OUT_TRADE_NO_USED</td>
<td style="text-align: left;">商户订单号重复</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">同一笔交易不能多次提交</td>
<td style="text-align: left;">请核实商户订单号是否重复提交</td>
</tr>
<tr>
<td style="text-align: left;">APPID_MCHID_NOT_MATCH</td>
<td style="text-align: left;">appid和mch_id不匹配</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">appid和mch_id不匹配</td>
<td style="text-align: left;">请确认appid和mch_id是否匹配</td>
</tr>
<tr>
<td style="text-align: left;">INVALID_REQUEST</td>
<td style="text-align: left;">无效请求</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">商户系统异常导致,商户权限异常、重复请求支付、证书错误、频率限制等</td>
<td style="text-align: left;">请确认商户系统是否正常,是否具有相应支付权限,确认证书是否正确,控制频率</td>
</tr>
<tr>
<td style="text-align: left;">TRADE_ERROR</td>
<td style="text-align: left;">交易错误</td>
<td style="text-align: left;">支付确认失败</td>
<td style="text-align: left;">业务错误导致交易失败、用户账号异常、风控、规则限制等</td>
<td style="text-align: left;">请确认帐号是否存在异常</td>
</tr>
</tbody>
</table>