付款码支付
更新时间:2026.05.211. 场景说明
收银员使用扫码设备读取微信用户刷卡授权码以后,将二维码或条码信息传送至商户收银台,由
商户收银台或者商户后台上送至收单机构,由收单机构调用该接口发起支付。
2. 接口说明
2.1 请求参数
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
公众账号 ID |
| 是 |
|
| 微信分配的公众账号 ID。 |
子商户公众账号 ID |
| 否 |
|
| 微信分配的子商户公众账号 ID。 |
商户号 |
| 是 |
|
| 微信支付分配的商户号。 |
子商户号 |
| 是 |
|
| 微信支付分配的子商户号。 |
渠道商商户号 |
| 是 |
|
| 微信支付分配给收单服务商的 ID。 |
设备号 |
| 否 |
|
| 终端设备号(商户自定义,如门店编号)。 |
随机字符串 |
| 是 |
|
| 随机字符串,不长于 32 位。推荐随机数生成算法。 |
签名 |
| 是 |
|
| 签名。 |
商品描述 |
| 是 |
|
| 商品或支付单简要描述,格式要求:门店品牌名 - 城市分店名 - 实际商品名称。 |
商品详情 |
| 否 |
| - | 单品优惠功能字段,详见下文说明。 |
附加数据 |
| 否 |
|
| 附加数据,在查询 API 和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据。 |
商户订单号 |
| 是 |
|
| 商户订单号,32 个字符以内、可包含字母、数字、下划线;需保证在商户端不重复。 |
网联 IDC 标识 |
| 是 |
|
| 交易发往的网联条码支付 IDC 标识,具体规则见 4.8 网联条码支付 IDC 标识。 |
总金额 |
| 是 |
|
| 订单总金额,单位为分,只能为整数。 |
货币类型 |
| 否 |
|
| 符合 ISO 4217 标准的三位字母代码,默认人民币: |
终端 IP |
| 是 |
|
| 调用微信支付 API 的机器 IP。 |
订单优惠标记 |
| 否 |
| - | 订单优惠标记,代金券或立减优惠功能的参数。 |
指定支付方式 |
| 否 |
|
|
|
授权码 |
| 是 |
|
| 扫码支付授权码,设备读取用户微信中的条码或者二维码信息。(注:用户刷卡条形码规则:18 位纯数字,以 10、11、12、13、14、15 开头) |
实名支付 |
| 否 |
| - | 实名支付功能,用于公安和保险类商户使用,该字段为 JSON 对象数据,包含类型、证件号、姓名三个子域(详细说明参考下文表格)。如果本字段出现,那么本字段包含的三个子域均需出现。 |
场景信息 |
| 否 |
|
| 该字段用于上报场景信息,目前支持上报实际门店信息。该字段为 JSON 对象数据,对象格式为 |
电子发票功能 |
| 否 |
|
| 需要跟公众平台的发票功能联合使用,详见公众平台文档。 |
终端信息 |
| 否 |
| - | 收单侧受理终端信息,字段详细说明参考下文。 |
交易起始时间 |
| 否 |
|
| 订单生成时间,格式为 |
交易国别 |
| 否 |
|
| 参照《GB/T 2659 世界各国和地区名称代码》。 |
境内外交易标识 |
| 否 |
|
| 枚举值包含: |
商户名称 |
| 否 |
|
| 商户名称。 |
商户行业类别 |
| 否 |
|
| 商户所属行业的商户类别代码,参见《网联清算有限公司商户行业分类编码》。 |
收单机构标识 |
| 否 |
|
| 收单机构金融机构编码。 |
渠道商商户名称 |
| 否 |
|
| 渠道商商户的名称。 |
收单机构商户编码 |
| 否 |
|
| 收单机构商户编码。 |
加密信息 |
| 否 |
| - | 加密信息。 |
单品优惠活动detail字段列表说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
订单原价 |
| 否 | Int | 608800 | 商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。当订单原价与支付金额不相等,则不享受优惠。该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。 |
商品小票 ID |
| 否 | String(32) | wx123 | 商家小票 ID。 |
单品列表 |
| 是 | String | 示例见下文 | 单品信息,使用 Json 数组格式提交。 |
单品优惠活动goods_detail字段说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
商品编码 |
| 是 | String(32) | 商品编码 | 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。 |
微信侧商品编码 |
| 否 | String(32) | 1001 | 微信支付定义的统一商品编号(没有可不传)。 |
商品名称 |
| 否 | String(256) | iPhone6s 16G | 商品的实际名称。 |
商品数量 |
| 是 | Int | 1 | 用户购买的数量。 |
商品单价 |
| 是 | Int | 528800 | 单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔 100 元的订单使用了商场发的优惠券 100-50,则活动商品的单价应为原单价 - 50)。 |
场景信息 scene_info.store_info. 字段说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
门店 id |
| 否 |
|
| 门店唯一标识。 |
门店名称 |
| 否 |
|
| 门店名称。 |
门店行政区划码 |
| 否 |
|
| 门店所在地行政区划码。 |
门店详细地址 |
| 否 |
|
| 门店详细地址。 |
终端信息 terminal_info 字段说明
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
终端编码 |
| 否 |
| - | - |
终端类型 |
| 否 |
| - | 终端类型,请填写对应的枚举值。 |
终端序列号 |
| 否 |
| - | 终端类型为 |
终端加密因子 |
| 否 |
| - | 终端类型为 |
终端密文数据 |
| 否 |
| - | 终端类型为 |
终端应用程序版本号 |
| 否 |
| - | - |
终端位置国家编码 |
| 否 |
| - | 所属国家(或地区),参照《GB/T 2659 世界各国和地区名称代码》,可获取时应填写。 |
终端位置地区编码 |
| 否 |
| - | 境内所属省市地区,参照《GB/T 2260 中华人民共和国行政区划代码》,可获取时应填写。 |
终端 IP |
| 否 |
| - | 交易设备的 IP 地址,如: |
终端 GPS |
| 否 |
| - | 交易设备位置信息,格式为 |
加密信息 encrypt_info 字段说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
加密证书序列号 |
| 否 |
|
| 加密证书序列号,使用网联的公钥进行加密。 |
加密对称密钥信息 |
| 否 |
| - | 加密对称密钥信息,加解密处理方式参见敏感信息处理章节。内容随机对称密钥串 |
加密内容 |
| 否 |
| - | 加密内容,加解密处理方式参见敏感信息处理章节。采用 JSON 格式组织,然后再进行加密,最后做 Base64 编码。JSON 内容样例: |
加密信息 encrypt_detail_info 字段说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
实名支付 |
| 否 |
| - | 实名支付功能,用于公安和保险类商户使用,该字段为 JSON 对象数据,包含类型、证件号、姓名三个子域,详细说明如下。 |
加密信息 encrypt_key 字段说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
随机对称密钥串 |
| 否 |
| - | 此字段无需报文中体现,内容需加密后放入 |
实名支付 identity 字段说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
类型 |
| 否 |
|
| 证件类型。 |
证件号 |
| 否 |
|
| 证件号,如身份证号。 |
姓名 |
| 否 |
|
| 证件姓名。 |
2.2 响应参数
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
返回状态码 |
| 是 |
|
|
|
返回信息 |
| 否 |
|
| 返回信息,如非空,为错误原因。签名失败。参数格式校验错误。 |
当 return_code 为 SUCCESS 的时候,还会包括以下字段:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
公众账号 ID |
| 是 |
|
| 调用接口提交的公众账号 ID。 |
子商户公众账号 ID |
| 否 |
|
| 调用接口提交的子商户公众账号 ID。 |
商户号 |
| 是 |
|
| 调用接口提交的商户号。 |
子商户号 |
| 是 |
|
| 调用接口提交的子商户号。 |
设备号 |
| 否 |
|
| 调用接口提交的终端设备号。 |
随机字符串 |
| 是 |
|
| 网联返回的随机字符串。 |
签名 |
| 是 |
|
| 网联返回的签名。 |
业务结果 |
| 是 |
|
|
|
错误代码 |
| 否 |
|
| 参见 5.1.1.3 错误码 |
错误代码描述 |
| 否 |
|
| 错误返回的信息描述。 |
当 return_code 和 result_code 都为 SUCCESS 的时候,还会包括以下字段:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
用户标识 |
| 否 |
|
| 用户在商户 appid 下的唯一标识。 |
用户子标识 |
| 否 |
|
| 子商户 appid 下用户唯一标识,如需返回则请求时需要传 sub_appid。 |
交易类型 |
| 是 |
|
| 支付类型:MICROPAY,即扫码支付。FACEPAY,即刷脸支付。 |
付款银行 |
| 是 |
|
| 银行类型,采用字符串类型的银行标识。 |
标价币种 |
| 否 |
|
| 符合 ISO 4217 标准的三位字母代码,默认人民币:CNY。 |
标价金额 |
| 否 |
|
| 订单总金额,单位为分,只能为整数。 |
现金支付币种 |
| 否 |
|
| 符合 ISO 4217 标准的三位字母代码,默认人民币:CNY。 |
现金支付金额 |
| 是 |
|
| 订单现金支付金额。 |
应结订单金额 |
| 否 |
|
| 当订单使用了免充值型优惠券后返回该参数,应结订单金额 = 订单金额 - 免充值优惠券金额。 |
代金券金额 |
| 否 |
|
| “代金券” 金额 <= 订单金额,订单金额 -“代金券” 金额 = 现金支付金额。 |
优惠功能 |
| 否 |
|
| 优惠功能信息,使用 Json 数组格式,详细说明见下文。 |
网联订单号 |
| 是 |
|
| 网联订单号。 |
商户订单号 |
| 是 |
|
| 商户订单号,32 个字符以内、可包含字母、数字、下划线;需保证在商户端不重复。 |
商家数据包 |
| 否 |
|
| 商家数据包,原样返回。 |
支付完成时间 |
| 是 |
|
| 订单生成时间,格式为 yyyyMMddHHmmss。如 2009 年 12 月 25 日 9 点 10 分 10 秒表示为 20091225091010。 |
关联交易清算机构标识 |
| 否 |
|
| 账户侧清算机构编码:01 银联;02 网联;03 连通; |
关联流水号 |
| 否 |
|
| 关联快捷流水号 |
付款方用户标识 |
| 否 |
|
| 用户在银行付款账号的标记化处理编号 |
其中,promotion_detail 对象列表:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
券 ID |
| 是 |
|
| 券或者立减优惠 id。 |
优惠名称 |
| 否 |
|
| 优惠名称 |
优惠范围 |
| 否 |
|
|
|
优惠类型 |
| 否 |
|
|
|
优惠券面额 |
| 否 |
|
| 用户享受优惠的金额(优惠券面额 = 微信出资金额 + 商家出资金额 + 其他出资方金额)。 |
活动 ID |
| 是 |
|
| 在微信商户后台配置的批次 ID。 |
微信出资 |
| 否 |
|
| 特指由微信支付商户平台创建的优惠,出资金额等于本项优惠总金额,单位为分。 |
商户出资 |
| 否 |
|
| 其他出资方出资金额,单位为分。 |
单品列表 |
| 是 |
| 示例见下文 | 单品信息,使用 Json 数组格式。 |
goods_detail 字段说明:
字段名 | 变量名 | 是否必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
商品编码 |
| 是 |
|
| 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。 |
商品备注 |
| 否 |
|
|
|
商品优惠金额 |
| 是 |
|
| 单品的总优惠金额,单位为:分。 |
商品数量 |
| 是 |
|
| 用户购买的数量。 |
商品价格 |
| 是 |
|
| 单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔 100 元的订单使用了商场发的优惠券 100-50,则活动商品的单价应为原单价 - 50)。 |
3. 错误码
名称 | 描述 | 支付状态 | 原因 | 解决方案 |
|---|---|---|---|---|
| 接口返回错误 | 支付结果未知 | 系统超时 | 请立即调用被扫订单结果查询 API 查询当前订单状态,并根据订单的状态决定下一步的操作。 |
| 参数错误 | 支付确认失败 | 请求参数未按指引进行填写 | 请根据接口返回的详细信息检查您的程序 |
| 订单已支付 | 支付确认失败 | 订单号重复 | 请确认该订单号是否重复支付,如果是新单,请使用新订单号提交 |
| 商户无权限 | 支付确认失败 | 商户没有开通被扫支付权限 | 请开通商户号权限 |
| 二维码已过期,请用户在微信上刷新后再试 | 支付确认失败 | 用户的条码已经过期 | 请收银员提示用户,请用户在微信上刷新条码,然后请收银员重新扫码。直接将错误展示给收银员 |
| 余额不足 | 支付确认失败 | 用户的零钱余额不足 | 请收银员提示用户更换当前支付的卡,然后请收银员重新扫码。建议商户系统返回给收银台的提示为 “用户余额不足。提示用户换卡支付” |
| 不支持卡类型 | 支付确认失败 | 用户使用卡种不支持当前支付形式 | 请用户重新选择卡种 建议:商户系统返回给收银台的提示为 “该卡不支持当前支付,提示用户换卡支付或绑新卡支付” |
| 订单已关闭 | 支付确认失败 | 该订单已关 | 商户订单异常,请重新下单支付 |
| 订单已撤销 | 支付确认失败 | 当前订单已经被撤销 | 当前订单状态为 “订单已撤销”,请提示用户重新支付 |
| 银行系统异常 | 支付结果未知 | 银行端超时 | 请立即调用被扫订单结果查询 API 查询当前订单的不同状态,决定下一步的操作。 |
| 用户支付中,需要输入密码 | 支付结果未知 | 该笔交易因为业务规则要求,需要用户输入支付密码 | 等待 5 秒,然后调用被扫订单结果查询 API,查询当前订单的不同状态,决定下一步的操作。 |
| 授权码参数错误 | 支付确认失败 | 请求参数未按指引进行填写 | 每个二维码仅限使用一次,请刷新再试 |
| 授权码检验错误 | 支付确认失败 | 收银员扫描的不是微信支付的条码 | 请扫描微信支付被扫条码 / 二维码 |
| XML 格式错误 | 支付确认失败 | XML 格式错误 | 请检查 XML 参数格式是否正确 |
| 请使用 post 方法 | 支付确认失败 | 未使用 post 传递参数 | 请检查请求参数是否通过 post 方法提交 |
| 签名错误 | 支付确认失败 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算法要求 |
| 缺少参数 | 支付确认失败 | 缺少必要的请求参数 | 请检查参数是否齐全 |
| 编码格式错误 | 支付确认失败 | 未使用指定编码格式 | 请使用 UTF-8 编码格式 |
| 支付帐号错误 | 支付确认失败 | 暂不支持同一笔订单更换支付方 | 请确认支付方是否相同 |
| APPID 不存在 | 支付确认失败 | 参数中缺少 APPID | 请检查 APPID 是否正确 |
| MCHID 不存在 | 支付确认失败 | 参数中缺少 MCHID | 请检查 MCHID 是否正确 |
| 商户订单号重复 | 支付确认失败 | 同一笔交易不能多次提交 | 请核实商户订单号是否重复提交 |
| appid 和 mch_id 不匹配 | 支付确认失败 | appid 和 mch_id 不匹配 | 请确认 appid 和 mch_id 是否匹配 |
| 无效请求 | 支付确认失败 | 商户系统异常导致,商户权限异常、重复请求支付、证书错误频率限制等 | 请确认商户系统是否正常,是否具有相应支付权限,确认证书是否正确,控制频率 |
| 交易错误 | 支付确认失败 | 业务错误导致交易失败、用户账号异常、风控、规则限制等 | 请确认帐号是否存在异常 |

