统一下单
更新时间:2024.11.13应用场景
除付款码支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按Native、JSAPI、APP等不同场景生成交易串调起支付。
状态机
支付状态转变如下:
接口链接
URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
是否需要证书
不需要
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 | |||
---|---|---|---|---|---|---|---|---|
服务商的APPID | appid | 是 | String(32) | wx8888888888888888 | 服务商商户的APPID | |||
商户号 | mch_id | 是 | String(32) | 1900000109 | 微信支付分配的商户号 | |||
子商户公众账号ID | sub_appid | 否 | String(32) | wx8888888888888888 | 微信分配的子商户公众账号ID,如需在支付完成后获取sub_openid则此参数必传。 | |||
子商户号 | sub_mch_id | 是 | String(32) | 1900000109 | 微信支付分配的子商户号 | |||
设备号 | device_info | 否 | String(32) | 013467007045764 | 终端设备号(门店号或收银设备ID),注意:PC网页或JSAPI支付请传"WEB" | |||
随机字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 | |||
签名 | sign | 是 | String(64) | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名生成算法 | |||
签名类型 | sign_type | 否 | String(32) | HMAC-SHA256 | 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5 | |||
商品描述 | body | 是 | String(127) | 腾讯充值中心-QQ会员充值 | 商品描述交易字段格式根据不同的应用场景建议按照以下格式上传: (1)PC网站——传入浏览器打开的网站主页title名-实际商品名称,例如:腾讯充值中心-QQ会员充值; (2) 公众号——传入公众号名称-实际商品名称,例如:腾讯形象店- image-QQ公仔; (3) H5——应用在浏览器网页上的场景,传入浏览器打开的移动网页的主页title名-实际商品名称,例如:腾讯充值中心-QQ会员充值; (4) 线下门店——门店品牌名-城市分店名-实际商品名称,例如: image形象店-深圳腾大- QQ公仔 (5) APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。 | |||
商品详情 | detail | 否 | String(6000) | [{ | 商品详细描述,对于使用单品优惠的商户,该字段必须按照规范上传,详见“单品优惠参数说明” | |||
附加数据 | attach | 否 | String(127) | 说明 | 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 | |||
商户订单号 | out_trade_no | 是 | String(32) | 1217752501201407033233368018 | 商户系统内部订单号,要求32个字符内(最少6个字符),只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号 | |||
货币类型 | fee_type | 否 | String(16) | CNY | 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型 | |||
总金额 | total_fee | 是 | int | 888 | 订单总金额,只能为整数,详见支付金额 | |||
终端IP | spbill_create_ip | 是 | String(64) | 123.12.12.123 | 支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP | |||
交易起始时间 | 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。其他详见时间规则 | |||
订单优惠标记 | goods_tag | 否 | String(32) | WXG | 订单优惠标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠 | |||
通知地址 | notify_url | 是 | String(256) | https://www.weixin.qq.com/wxpay/pay.php | 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。公网域名必须为https,如果是走专线接入,使用专线NAT IP或者私有回调域名可使用http。 | |||
交易类型 | trade_type | 是 | String(16) | JSAPI | JSAPI -JSAPI支付 NATIVE -Native支付 APP -APP支付 说明详见参数规定 | |||
商品ID | product_id | 否 | String(32) | 12235413214070356458058 | trade_type=NATIVE时,此参数必传。此id为二维码中包含的商品ID,商户自行定义。 | |||
指定支付方式 | limit_pay | 否 | String(32) | no_credit | no_credit--指定不能使用信用卡支付 | |||
用户标识 | openid | 否 | String(128) | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | trade_type=JSAPI,此参数必传,用户在主商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。 | |||
用户子标识 | sub_openid | 否 | String(128) | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | trade_type=JSAPI,此参数必传,用户在子商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。 | |||
电子发票入口开放标识 | receipt | 否 | String(8) | Y | Y,传入Y时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效 | |||
是否需要分账 | profit_sharing | 否 | String(16) | Y | Y-是,需要分账 | |||
场景信息 | scene_info | 否 | String(256) | {"store_info" : { | 该字段常用于线下活动时的场景信息上报,支持上报实际门店信息,商户也可以按需求自己上报相关信息。该字段为JSON对象数据,对象格式为{"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} ,字段详细说明请点击下方的>展开 | |||
|
举例如下:
注:参数值用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 |
商户号 | mch_id | 是 | String(32) | 1900000109 | 调用接口提交的商户号 |
子商户公众账号ID | sub_appid | 否 | String(32) | wx8888888888888888 | 微信分配的子商户公众账号ID |
子商户号 | 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 | 详细参见第6节错误列表 |
错误代码描述 | err_code_des | 否 | String(128) | 系统错误 | 错误返回的信息描述 |
以下字段在return_code 和result_code都为SUCCESS的时候有返回
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
交易类型 | trade_type | 是 | String(16) | JSAPI | JSAPI 公众号支付 NATIVE Native支付 APP APP支付 说明详见参数规定 |
预支付交易会话标识 | prepay_id | 是 | String(64) | wx201410272009395522657a690389285100 | 微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时,针对H5支付此参数无特殊用途 |
二维码链接 | code_url | 否 | String(64) | weixin://wxpay/bizpayurl/up?pr=NwY5Mz9&groupid=00 | trade_type=NATIVE时有返回,此url用于生成支付二维码,然后提供给用户进行扫码支付。 注意:code_url的值并非固定,使用时按照URL格式转成二维码即可。时效性为2小时 |
举例如下:
错误码
名称 | 描述 | 原因 | 解决方案 |
---|---|---|---|
INVALID_REQUEST | 参数错误 | 参数格式有误或者未按规则上传 | 订单重入时,要求参数值与原请求一致,请确认参数问题 |
NOAUTH | 商户无此接口权限 | 商户未开通此接口权限 | 请商户前往申请此接口权限 |
ORDERPAID | 商户订单已支付 | 商户订单已支付,无需重复操作 | 商户订单已支付,无需更多操作 |
ORDERCLOSED | 订单已关闭 | 当前订单已关闭,无法支付 | 当前订单已关闭,请重新下单 |
SYSTEMERROR | 系统错误 | 系统超时 | 系统异常,请用相同参数重新调用 |
APPID_NOT_EXIST | APPID不存在 | 参数中缺少APPID | 请检查APPID是否正确 |
MCHID_NOT_EXIST | MCHID不存在 | 参数中缺少MCHID | 请检查MCHID是否正确 |
APPID_MCHID_NOT_MATCH | appid和mch_id不匹配 | appid和mch_id不匹配 | 请确认appid和mch_id是否匹配 |
LACK_PARAMS | 缺少参数 | 缺少必要的请求参数 | 请检查参数是否齐全 |
OUT_TRADE_NO_USED | 商户订单号重复 | 同一笔交易不能多次提交 | 请核实商户订单号是否重复提交 |
SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算法要求 |
XML_FORMAT_ERROR | XML格式错误 | XML格式错误 | 请检查XML参数格式是否正确 |
REQUIRE_POST_METHOD | 请使用post方法 | 未使用post传递参数 | 请检查请求参数是否通过post方法提交 |
POST_DATA_EMPTY | post数据为空 | post数据不能为空 | 请检查post数据是否为空 |
NOT_UTF8 | 编码格式错误 | 未使用指定编码格式 | 请使用UTF-8编码格式 |