提交付款码支付

更新时间:2025.03.21

收银员使用扫码设备读取微信用户刷卡授权码以后,二维码或条码信息传送至商户收银台,由商户收银台或者商户后台调用该接口发起支付。

注意:

● 提交支付请求后微信会同步返回支付结果。当返回结果为“系统错误”时,商户系统等待5秒后调用【查询订单API】,查询支付实际交易结果;当返回结果为“USERPAYING”时,商户系统可设置间隔时间(建议10秒)重新查询支付结果,直到支付成功或超时(建议30秒);

● 在调用查询接口返回后,如果交易状况不明晰,请调用【撤销订单API】,此时如果交易失败则关闭订单,该单不能再支付成功;如果交易成功,则将扣款退回到用户账户。当撤销无返回或错误时,请再次调用。注意:请勿扣款后立即调用【撤销订单API】,建议至少15秒后再调用。撤销订单API需要双向证书。

● 验证密码规则:

 

◆ 支付金额>1000元的交易需要验证用户支付密码

◆ 用户账号每天最多有10笔交易可以免密,超过后需要验证密码

◆ 微信支付后台判断用户支付行为有异常情况,符合免密规则的交易也会要求验证密码

注:基于一定的风控策略,存在随时需要验密的可能性。

接口说明

适用对象: 直连模式 机构模式

请求URL: https://apihk.mch.weixin.qq.com/pay/micropay

请求方式: POST

数据格式: XML

是否需要证书:

请求参数

参数名

变量

类型

必填

描述

公众账号ID

appid

string(32)

微信分配的公众账号ID
示例值:wx8888888888888888

子商户公众账号ID

sub_appid

string(32)

微信分配的子商户公众账号ID
注意:仅适用于机构模式
示例值:1900000109

商户号

mch_id

string(32)

微信支付分配的商户号
示例值:1900000109

子商户号

sub_mch_id

string(32)

微信支付分配的子商户号,开发者模式下必填
注意:仅适用于机构模式
示例值:1900000109

设备号

device_info

string(32)

终端设备号(商户自定义,如门店编号)
示例值:013467007045764

随机字符串

nonce_str

string(32)

随机字符串,不长于32位。推荐随机数生成算法
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS

签名

sign

string(64)

签名,详见签名生成算法
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS

签名类型

sign_type

string(32)

签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
示例值:HMAC-SHA256

商品描述

body

string(32)

商品或支付单简要描述
示例值:Ipadmini16G白色

版本号

version

string(32)

固定值 1.0
示例值:1.0

商品详情

detail

string(6000)

商品详细列表,使用Json格式,传输签名前请务必使用CDATA标签将JSON文本串保护起来。
goods_detail
└ goods_name string 必填 256 商品名称
└ quantity int 必填 4 商品数量
示例值:{ "goods_detail":[ { "goods_name":"iPhone6s 16G", "quantity":1, }, { "goods_name":"iPhone6s 32G", "quantity":1, } ] }

附加数据

attach

string(127)

附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
示例值:说明

商户订单号

out_trade_no

string(32)

商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。 其他说明见商户订单号
示例值:1217752501201407033233368018

标价金额

total_fee

int

标价订单总金额,单位为分,只能为整数,详见支付金额
示例值:888

标价币种

fee_type

string(16)

符合ISO 4217标准的三位字母代码,币种列表详见货币类型
示例值:USD

终端IP

spbill_create_ip

string(64)

符合ISO 支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP
示例值:8.8.8.8

订单优惠标记

goods_tag

string(32)

订单优惠标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
示例值:

授权码

auth_code

string(128)

扫码支付授权码,设备读取用户微信中的条码或者二维码信息
(注:用户刷卡条形码规则:18位纯数字,以10、11、12、13、14、15开头)
示例值:120061098828009406

交易起始时间

time_start

string(14)

订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
示例值:20091225091010

交易结束时间

time_expire

string(14)

订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。
示例值:20091227091010

场景信息

scene_info

string(256)

该字段用于统一下单时上报场景信息,目前支持上报实际门店信息。
{
"store_id": "", //门店唯一标识,选填,string(32)
"store_name":"”//门店名称,选填,string(64)
}
示例值:{ "store_id": "SZT10000", "store_name":"腾讯大厦腾大餐厅" }

请求示例:

XML
1<xml>
2   <appid>wx2421b1c4370ec43b</appid>
3   <body>An apple</body>
4   <attach>Additional Order Descriptionr</attach>
5   <device_info>123001</device_info>
6   <auth_code>134539517967686076</auth_code>
7   <fee_type>EUR</fee_type>
8   <mch_id>10000100</mch_id>
9   <nonce_str>f6868b9b16bf4893958afd4a46d73422</nonce_str>
10   <out_trade_no>2017101418207317</out_trade_no>
11   <detail><![CDATA[{"goods_detail":[{"wxpay_goods_id":"1001","goods_name":"iPhone6s 32G","quantity":1}]}]]></detail>
12   <sign>5F244D7C69241AB7BC937A7A2A542294</sign>
13   <sub_mch_id>452532745</sub_mch_id>
14   <total_fee>1</total_fee>
15</xml>

返回参数

正常返回

字段名

变量

类型

必填

描述

返回状态码

return_code

string(16)

SUCCESS/FAIL
此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
示例值:SUCCESS

返回信息

return_msg

string(128)

返回信息,如非空,为错误原因
签名失败
参数格式校验错误
示例值:签名失败

当return_code为SUCCESS的时候,还会包括以下字段:

字段名

变量

类型

必填

描述

公众账号ID

appid

string(32)

调用接口提交的公众账号ID
示例值:wx8888888888888888

子商户公众账号ID

sub_appid

string(32)

调用接口提交的子商户公众账号ID
注意:仅适用于机构模式
示例值:wx8888888888888888

商户号

mch_id

string(32)

调用接口提交的商户号
示例值:1900000109

子商户号

sub_mch_id

string(32)

调用接口提交的子商户号
注意:仅适用于机构模式
示例值:1900000109

设备号

device_info

string(32)

调用接口提交的终端设备号
示例值:013467007045764

随机字符串

nonce_str

string(32)

微信返回的随机字符串
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS

签名

sign

string(64)

微信返回的签名,详见签名生成算法
示例值:C380BEC2BFD727A4B6845133519F3AD6

业务结果

result_code

string(16)

SUCCESS/FAIL
示例值:SUCCESS

错误代码

err_code

string(32)

详细参见错误列表
示例值:SYSTEMERROR

错误代码描述

err_code_des

string(128)

错误返回的信息描述
示例值:系统错误

当return_code 和result_code都为SUCCESS的时,还会包括以下字段:

字段名

变量

类型

必填

描述

用户标识

openid

string(128)

用户在商户appid 下的唯一标识
示例值:Y

是否关注公众账号

is_subscribe

string(1)

用户是否关注公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
示例值:Y

用户子标识

sub_openid

string(128)

子商户appid下用户唯一标识,如需返回则请求时需要传sub_appid
注意:仅适用于机构模式
示例值:Y

是否关注子公众账号

sub_is_subscribe

string(1)

用户是否关注子公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
注意:仅适用于机构模式
示例值:Y

交易类型

trade_type

string(16)

支付类型为MICROPAY(即扫码支付)
示例值:MICROPAY

付款银行

bank_type

string(32)

银行类型,采用字符串类型的银行标识,值列表详见银行类型
示例值:CMC

标价币种

fee_type

string(16)

符合ISO 4217标准的三位字母代码,列表详见货币类型
示例值:USD

标价金额

total_fee

int

订单总金额,单位为分,只能为整数,详见支付金额
示例值:888

现金支付币种

cash_fee_type

string(16)

符合ISO 4217标准的三位字母代码,列表详见货币类型
示例值:USD

现金支付金额

cash_fee

int

订单现金支付金额,详见支付金额
示例值:100

微信支付订单号

transaction_id

string(32)

微信支付订单号
示例值:1217752501201407033233368018

商户订单号

out_trade_no

string(32)

商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。
示例值:1217752501201407033233368018

商家数据包

attach

string(128)

自定义参数,原样返回
示例值:123456

支付完成时间

time_end

string(14)

订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。详见时间规则
示例值:20141030133525

汇率

rate

string(16)

标价币种与支付币种的兑换比例乘以10的8次方即为此值,例如美元兑换人民币的比例为6.5,则rate=650000000
示例值:650000000

举例如下:

XML
1
2验密:
3<xml>
4   <return_code>![CDATA[SUCCESS]]</return_code>  
5   <return_msg>![CDATA[OK]]</return_msg>  
6   <result_code>![CDATA[FAIL]]</result_code>  
7   <err_code_des>![CDATA[需要用户输入支付密码]]</err_code_des>
8   <err_code>![CDATA[USERPAYING]]</err_code>
9   <mch_id>![CDATA[10000100]]</mch_id>
10   <appid>![CDATA[wx2421b1c4370ec43b]]</appid>
11   <sub_mch_id>![CDATA[452532745]]</sub_mch_id>
12   <device_info>![CDATA[123001]]</device_info>
13   <nonce_str>![CDATA[EBObtckqDbde2wll]]</nonce_str>
14   <sign>![CDATA[E0635D8F665727ACE62DEF430C22B9A4]]</sign>
15</xml>
16
17免密:
18<xml>
19   <return_code>![CDATA[SUCCESS]]</return_code>
20   <return_msg>![CDATA[OK]]</return_msg>
21   <result_code>![CDATA[SUCCESS]]</result_code>
22   <mch_id>![CDATA[10000100]]</mch_id>
23   <appid>![CDATA[wx2421b1c4370ec43b]]</appid>
24   <sub_mch_id>![CDATA[375907253]]</sub_mch_id>
25   <device_info>![CDATA[1000]]</device_info>
26   <nonce_str>![CDATA[OMdoiruMjafNqdlS]]</nonce_str>
27   <sign>![CDATA[D460A30CDFE62F5167A0F0AE4014E5D2]]</sign>
28   <openid>![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]</openid>
29   <is_subscribe>![CDATA[N]]</is_subscribe>
30   <trade_type>![CDATA[MICROPAY]]</trade_type>
31   <bank_type>![CDATA[CCB_DEBIT]]</bank_type>
32   <fee_type>![CDATA[USD]]</fee_type> 
33   <total_fee>332</total_fee>
34   <cash_fee_type>![CDATA[CNY]]</cash_fee_type> 
35   <cash_fee>2124</cash_fee>
36   <transaction_id>![CDATA[4200001212282111030178445712]]</transaction_id>
37   <out_trade_no>![CDATA[90020211103112345605049]]</out_trade_no>
38   <attach>![CDATA[]]</attach>
39   <time_end>![CDATA[20211103185407]]</time_end> 
40   <rate>![CDATA[640053060]]</rate>
41</xml> 

错误码

错误码

描述

问题

解决方案

SYSTEMERROR

接口返回错误

系统超时

请立即调用被扫订单结果查询API,查询当前订单状态,并根据订单的状态决定下一步的操作。

PARAM_ERROR

参数错误

请求参数未按指引进行填写

请根据接口返回的详细信息检查您的程序

ORDERPAID

订单已支付

订单号重复

请确认该订单号是否重复支付,如果是新单,请使用新订单号提交

NOAUTH

商户无权限

商户没有开通被扫支付权限

请开通商户号权限。请联系产品或商务申请

AUTHCODEEXPIRE

二维码已过期,请用户在微信上刷新后再试

用户的条码已经过期

请收银员提示用户,请用户在微信上刷新条码,然后请收银员重新扫码。 直接将错误展示给收银员

NOTENOUGH

余额不足

用户的零钱余额不足

请收银员提示用户更换当前支付的卡,然后请收银员重新扫码。建议:商户系统返回给收银台的提示为“用户余额不足.提示用户换卡支付”

NOTSUPORTCARD

不支持卡类型

用户使用卡种不支持当前支付形式

请用户重新选择卡种 建议:商户系统返回给收银台的提示为“该卡不支持当前支付,提示用户换卡支付或绑新卡支付”

ORDERCLOSED

订单已关闭

该订单已关

商户订单号异常,请重新下单支付

ORDERREVERSED

订单已撤销

当前订单已经被撤销

当前订单状态为“订单已撤销”,请提示用户重新支付

BANKERROR

银行系统异常

银行端超时

请立即调用被扫订单结果查询API,查询当前订单的不同状态,决定下一步的操作。

USERPAYING

用户支付中,需要输入密码

该笔交易因为业务规则要求,需要用户输入支付密码。

等待5秒,然后调用被扫订单结果查询API,查询当前订单的不同状态,决定下一步的操作。

AUTH_CODE_ERROR

授权码参数错误

请求参数未按指引进行填写

每个二维码仅限使用一次,请刷新再试

AUTH_CODE_INVALID

授权码检验错误

收银员扫描的不是微信支付的条码

请扫描微信支付被扫条码/二维码

XML_FORMAT_ERROR

XML格式错误

XML格式错误

请检查XML参数格式是否正确

REQUIRE_POST_METHOD

请使用post方法

未使用post传递参数

请检查请求参数是否通过post方法提交

SIGNERROR

签名错误

参数签名结果不正确

请检查签名参数和方法是否都符合签名算法要求

LACK_PARAMS

缺少参数

缺少必要的请求参数

请检查参数是否齐全

NOT_UTF8

编码格式错误

未使用指定编码格式

请使用UTF-8编码格式

BUYER_MISMATCH

支付账号错误

暂不支持同一笔订单更换支付方

请确认支付方是否相同

APPID_NOT_EXIST

APPID不存在

参数中缺少APPID

请检查APPID是否正确

MCHID_NOT_EXIST

MCHID不存在

参数中缺少MCHID

请检查MCHID是否正确

OUT_TRADE_NO_USED

商户订单号重复

同一笔交易不能多次提交

请核实商户订单号是否重复提交

APPID_MCHID_NOT_MATCH

appid和mch_id不匹配

appid和mch_id不匹配

请确认appid和mch_id是否匹配

 

 

About  WeChat  Pay

Powered By Tencent & Tenpay Copyright©

2005-2025 Tenpay All Rights Reserved.

Contact Us
Wechat Pay Global

WeChat Pay Global

Contact Us

Customer Service Tel

+86 571 95017

9:00-18:00 Monday-Friday GMT+8

Business Development

wxpayglobal@tencent.com

Developer Support

wepayTS@tencent.com

Wechat Pay Global

About Tenpay
Powered By Tencent & Tenpay Copyright© 2005-2025 Tenpay All Rights Reserved.