付款码支付

更新时间:2024.11.18

应用场景

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

注意:

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

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

接口地址【SDK下载

https://api.mch.weixin.qq.com/pay/micropay

是否需要证书

不需要。

输入参数

名称

变量名

必填

类型

示例值

描述

服务商的APPID

appid

String(32)

wx8888888888888888

服务商商户的APPID

子商户公众账号ID

sub_appid

String(32)

wx8888888888888888

微信分配的子商户公众账号ID

商户号

mch_id

String(32)

1900000109

微信支付分配的商户号

子商户号

sub_mch_id

String(32)

1900000109

微信支付分配的子商户号,开发者模式下必填

设备号

device_info

String(32)

013467007045764

终端设备号(商户自定义,如门店编号)

随机字符串

nonce_str

String(32)

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,不长于32位。推荐随机数生成算法

签名

sign

String(64)

C380BEC2BFD727A4B6845133519F3AD6

签名,详见签名生成算法

商品描述

body

String(127)

image形象店-深圳腾大- QQ公仔

商品或支付单简要描述,格式要求:门店品牌名-城市分店名-实际商品名称

商品详情

detail

String(6000)

[{
"goods_detail":[
{
"goods_id":"iphone6s_16G",
"wxpay_goods_id":"1001",
"goods_name":"iPhone6s 16G",
"quantity":1,
"price":528800,
"goods_category":"123456",
"body":"苹果手机"
},
{
"goods_id":"iphone6s_32G",
"wxpay_goods_id":"1002",
"goods_name":"iPhone6s 32G",
"quantity":1,
"price":608800,
"goods_category":"123789",
"body":"苹果手机"
}
]
}]

单品优惠功能字段,需要接入请见详细说明

附加数据

attach

String(127)

说明

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

商户订单号

out_trade_no

String(32)

1217752501201407033233368018

商户系统内部订单号,要求32个字符内(最少6个字符),只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号

总金额

total_fee

int

888

订单总金额,单位为分,只能为整数,详见支付金额

货币类型

fee_type

String(16)

CNY

符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型

终端IP

spbill_create_ip

String(64)

8.8.8.8

支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP

订单优惠标记

goods_tag

String(32)

WXG

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

指定支付方式

limit_pay

String(32)

no_credit

no_credit--指定不能使用信用卡支付

交易起始时间

time_start

String(14)

20091225091010

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

交易结束时间

time_expire

String(14)

20091227091010

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

付款码

auth_code

String(128)

120061098828009406

扫码支付付款码,设备读取用户微信中的条码或者二维码信息
(用户付款码规则:18位纯数字,前缀以10、11、12、13、14、15开头)

电子发票入口开放标识

receipt

String(8)

Y

Y,传入Y时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效

是否需要分账

profit_sharing

String(16)

Y

Y-是,需要分账
N-否,不分账
字母要求大写,不传默认不分账

场景信息

scene_info

String(256)

{"store_info" : {
"id": "SZTX001",
"name": "腾大餐厅",
"area_code": "440305",
"address": "科技园中一路腾讯大厦" }}

该字段用于上报场景信息,目前支持上报实际门店信息。该字段为JSON对象数据,对象格式为{"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} ,字段详细说明请点击下行的>展开

场景信息

举例如下:

1<xml>
2   <appid>wx2421b1c4370ec43b</appid>
3   <attach>订单额外描述</attach>
4   <auth_code>120269300684844649</auth_code>
5   <body>付款码支付测试</body>
6   <device_info>1000</device_info>
7   <goods_tag></goods_tag>
8   <mch_id>10000100</mch_id>
9   <sub_mch_id>1900000109</sub_mch_id>
10   <nonce_str>8aaee146b1dee7cec9100add9b96cbe2</nonce_str>
11   <out_trade_no>1415757673</out_trade_no>
12   <spbill_create_ip>14.17.22.52</spbill_create_ip>
13   <time_expire></time_expire>
14   <total_fee>1</total_fee>
15   <sign>C29DB7DB1FD4136B84AE35604756362C</sign>
16</xml>

注:参数值用XML转义即可,CDATA标签用于说明数据不被XML解析器解析。

返回结果

名称

变量名

必填

类型

示例值

描述

返回状态码

return_code

String(16)

SUCCESS

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

返回信息

return_msg

String(128)

签名失败

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

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

名称

变量名

必填

类型

示例值

描述

服务商的APPID

appid

String(32)

wx8888888888888888

服务商商户的APPID

子商户公众账号ID

sub_appid

String(32)

wx8888888888888888

调用接口提交的子商户公众账号ID

商户号

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

SUCCESS/FAIL

错误代码

err_code

String(32)

SYSTEMERROR

详细参见错误列表

错误代码描述

err_code_des

String(128)

系统错误

错误返回的信息描述

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

交易成功判断条件:return_coderesult_code都为SUCCESS且trade_type为MICROPAY

名称

变量名

必填

类型

示例值

描述

用户标识

openid

String(128)

Y

用户在商户appid 下的唯一标识

是否关注公众账号

is_subscribe

String(1)

N

已废弃,默认统一返回N

用户子标识

sub_openid

String(128)

Y

子商户appid下用户唯一标识,如需返回则请求时需要传sub_appid

是否关注子公众账号

sub_is_subscribe

String(1)

N

已废弃,默认统一返回N

交易类型

trade_type

String(16)

MICROPAY

支付类型为MICROPAY(即扫码支付)

付款银行

bank_type

String(32)

CMC

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

标价币种

fee_type

String(16)

CNY

符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型

标价金额

total_fee

int

888

订单总金额,单位为分,只能为整数,详见支付金额

现金支付币种

cash_fee_type

String(16)

CNY

符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型

现金支付金额

cash_fee

int

100

订单现金支付金额,详见支付金额

应结订单金额

settlement_total_fee

int

100

当订单使用了免充值型优惠券后返回该参数,应结订单金额=订单金额-免充值优惠券金额。

代金券金额

coupon_fee

int

100

“代金券”金额<=订单金额,订单金额-“代金券”金额=现金支付金额,详见支付金额

微信支付订单号

transaction_id

String(32)

1217752501201407033233368018

微信支付订单号

商户订单号

out_trade_no

String(32)

1217752501201407033233368018

商户系统内部订单号,要求32个字符内(最少6个字符),只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号

商家数据包

attach

String(127)

123456

商家数据包,原样返回

支付完成时间

time_end

String(14)

20141030133525

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

举例如下:

1<xml>
2   <return_code><![CDATA[SUCCESS]]></return_code>
3   <return_msg><![CDATA[OK]]></return_msg>
4   <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
5   <mch_id><![CDATA[10000100]]></mch_id>
6   <sub_mch_id><![CDATA[1900000109]]></sub_mch_id>
7   <device_info><![CDATA[1000]]></device_info>
8   <nonce_str><![CDATA[GOp3TRyMXzbMlkun]]></nonce_str>
9   <sign><![CDATA[D6C76CB785F07992CDE05494BB7DF7FD]]></sign>
10   <result_code><![CDATA[SUCCESS]]></result_code>
11   <openid><![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]></openid>
12   <is_subscribe><![CDATA[N]]></is_subscribe>
13   <trade_type><![CDATA[MICROPAY]]></trade_type>
14   <bank_type><![CDATA[CCB_DEBIT]]></bank_type>
15   <total_fee>1</total_fee>
16   <coupon_fee>0</coupon_fee>
17   <fee_type><![CDATA[CNY]]></fee_type>
18   <transaction_id><![CDATA[1008450740201411110005820873]]></transaction_id>
19   <out_trade_no><![CDATA[1415757673]]></out_trade_no>
20   <attach><![CDATA[订单额外描述]]></attach>
21   <time_end><![CDATA[20141111170043]]></time_end>
22</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是否匹配

INVALID_REQUEST

无效请求

支付确认失败

商户系统异常导致,商户权限异常、重复请求支付、证书错误、频率限制等

请确认商户系统是否正常,是否具有相应支付权限,确认证书是否正确,控制频率

TRADE_ERROR

交易错误

支付确认失败

业务错误导致交易失败、用户账号异常、风控、规则限制等

请确认账号是否存在异常

 

反馈
咨询
目录
置顶