新零售支付全家桶


扫码支付接口说明

<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&amp;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;">{&quot;store_info&quot; : { &quot;id&quot;: &quot;SZTX001&quot;, &quot;name&quot;: &quot;腾大餐厅&quot;, &quot;area_code&quot;: &quot;440305&quot;, &quot;address&quot;: &quot;科技园中一路腾讯大厦&quot; }}</td> <td style="text-align: left;">该字段用于上报场景信息,目前支持上报实际门店信息。该字段为JSON对象数据,对象格式为{&quot;store_info&quot;:{&quot;id&quot;: &quot;门店ID&quot;,&quot;name&quot;: &quot;名称&quot;,&quot;area_code&quot;: &quot;编码&quot;,&quot;address&quot;: &quot;地址&quot; }} ,字段详细说明请点击行前的+展开</td> </tr> </tbody> </table> <p>举例如下:</p> <pre><code class="language-xml">&lt;xml&gt; &lt;appid&gt;wx2421b1c4370ec43b&lt;/appid&gt; &lt;attach&gt;订单额外描述&lt;/attach&gt; &lt;auth_code&gt;120269300684844649&lt;/auth_code&gt; &lt;body&gt;付款码支付测试&lt;/body&gt; &lt;device_info&gt;1000&lt;/device_info&gt; &lt;goods_tag&gt;&lt;/goods_tag&gt; &lt;mch_id&gt;10000100&lt;/mch_id&gt; &lt;nonce_str&gt;8aaee146b1dee7cec9100add9b96cbe2&lt;/nonce_str&gt; &lt;out_trade_no&gt;1415757673&lt;/out_trade_no&gt; &lt;spbill_create_ip&gt;14.17.22.52&lt;/spbill_create_ip&gt; &lt;time_expire&gt;&lt;/time_expire&gt; &lt;total_fee&gt;1&lt;/total_fee&gt; &lt;sign&gt;C29DB7DB1FD4136B84AE35604756362C&lt;/sign&gt; &lt;/xml&gt;</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;">“代金券”金额&lt;=订单金额,订单金额-“代金券”金额=现金支付金额,详见<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&amp;index=1">详细说明</a></td> </tr> </tbody> </table> <p>举例如下:</p> <pre><code class="language-xml">&lt;xml&gt; &lt;return_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/return_code&gt; &lt;return_msg&gt;&lt;![CDATA[OK]]&gt;&lt;/return_msg&gt; &lt;appid&gt;&lt;![CDATA[wx2421b1c4370ec43b]]&gt;&lt;/appid&gt; &lt;mch_id&gt;&lt;![CDATA[10000100]]&gt;&lt;/mch_id&gt; &lt;device_info&gt;&lt;![CDATA[1000]]&gt;&lt;/device_info&gt; &lt;nonce_str&gt;&lt;![CDATA[GOp3TRyMXzbMlkun]]&gt;&lt;/nonce_str&gt; &lt;sign&gt;&lt;![CDATA[D6C76CB785F07992CDE05494BB7DF7FD]]&gt;&lt;/sign&gt; &lt;result_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/result_code&gt; &lt;openid&gt;&lt;![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]&gt;&lt;/openid&gt; &lt;is_subscribe&gt;&lt;![CDATA[Y]]&gt;&lt;/is_subscribe&gt; &lt;trade_type&gt;&lt;![CDATA[MICROPAY]]&gt;&lt;/trade_type&gt; &lt;bank_type&gt;&lt;![CDATA[CCB_DEBIT]]&gt;&lt;/bank_type&gt; &lt;total_fee&gt;1&lt;/total_fee&gt; &lt;coupon_fee&gt;0&lt;/coupon_fee&gt; &lt;fee_type&gt;&lt;![CDATA[CNY]]&gt;&lt;/fee_type&gt; &lt;transaction_id&gt;&lt;![CDATA[1008450740201411110005820873]]&gt;&lt;/transaction_id&gt; &lt;out_trade_no&gt;&lt;![CDATA[1415757673]]&gt;&lt;/out_trade_no&gt; &lt;attach&gt;&lt;![CDATA[订单额外描述]]&gt;&lt;/attach&gt; &lt;time_end&gt;&lt;![CDATA[20141111170043]]&gt;&lt;/time_end&gt; &lt;/xml&gt;</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>

页面列表

ITEM_HTML