全部
在线测试

应用场景

除付款码支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按 Native、JSAPI、APP 等不同场景生成交易串调起支付。

状态机

支付状态转变如下:

接口链接

URL 地址:https://api.mch.weixin.qq.com/pay/unifiedorder

URL 地址:https://api2.mch.weixin.qq.com/pay/unifiedorder(备用域名)见跨城冗灾方案

请求方式: POST

是否需要证书

请求参数

字段名 变量名 必填 类型 示例值 描述
公众账号 ID appid String(32) wxd678efh567hg6787 微信支付分配的公众账号 ID(企业号 corpid 即为此 appId)
商户号 mch_id String(32) 1230000109 微信支付分配的商户号
设备号 device_info String(32) 013467007045764 自定义参数,可以为终端设备号(门店号或收银设备 ID),PC 网页或公众号内支付可以传"WEB"
随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,长度要求在 32 位以内。推荐随机数生成算法
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 通过签名算法计算得出的签名值,详见签名生成算法
签名类型 sign_type String(32) MD5 签名类型,默认为 MD5,支持 HMAC-SHA256 和 MD5。
商品描述 body String(128) 腾讯充值中心-QQ 会员充值 商品简单描述,该字段请按照规范传递,具体请见参数规定
商品详情 detail String(6000) 商品详细描述,对于使用单品优惠的商户,该字段必须按照规范上传,详见“单品优惠参数说明”
附加数据 attach String(127) 深圳分店 附加数据,在查询 API 和支付通知中原样返回,可作为自定义参数使用。
商户订单号 out_trade_no String(32) 20150806125346 商户系统内部订单号,要求 32 个字符内,只能是数字、大小写字母_-
标价币种 fee_type String(16) CNY 符合 ISO 4217 标准的三位字母代码,默认人民币:CNY,详细列表请参见货币类型
标价金额 total_fee Int 88 订单总金额,单位为分,详见支付金额
终端 IP spbill_create_ip String(64) 123.12.12.123 支持 IPV4 和 IPV6 两种格式的 IP 地址。用户的客户端 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。订单失效时间是针对订单号而言的,由于在请求支付的时候有一个必传参数 prepay_id 只有两小时的有效期,所以在重入时间超过 2 小时的时候需要重新请求下单接口获取新的 prepay_id。其他详见时间规则time_expire 只能第一次下单传值,不允许二次修改,二次修改系统将报错。如用户支付失败后,需再次支付,需更换原订单号重新下单。建议:最短失效时间间隔大于 1 分钟
订单优惠标记 goods_tag String(32) WXG 订单优惠标记,使用代金券或立减优惠功能时需要的参数,说明详见代金券或立减优惠
通知地址 notify_url String(256) http://www.weixin.qq.com/wxpay/pay.php 异步接收微信支付结果通知的回调地址,通知 url 必须为外网可访问的 url,不能携带参数。
交易类型 trade_type String(16) JSAPI JSAPI -JSAPI 支付 NATIVE -Native 支付 APP -APP 支付说明详见参数规定
商品 ID product_id String(32) 12235413214070356458058 trade_type=NATIVE 时,此参数必传。此参数为二维码中包含的商品 ID,商户自行定义。
指定支付方式 limit_pay String(32) no_credit 上传此参数 no_credit--可限制用户不能使用信用卡支付
用户标识 openid String(128) oUpF8uMuAJO_M2pxb1Q9zNjWeS6o trade_type=JSAPI 时(即 JSAPI 支付),此参数必传,此参数为微信用户在商户对应 appid 下的唯一标识。openid 如何获取,可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员 userid,再调用【企业号userid转openid接口】进行转换
电子发票入口开放标识 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": "地址" }}

举例如下:

<xml>
   <appid>wx2421b1c4370ec43b</appid>
   <attach>支付测试</attach>
   <body>JSAPI支付测试</body>
   <mch_id>10000100</mch_id>
   <detail><![CDATA[{ "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":"苹果手机" } ] }]]></detail>
   <nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
   <notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
   <openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
   <out_trade_no>1415659990</out_trade_no>
   <spbill_create_ip>14.23.150.211</spbill_create_ip>
   <total_fee>1</total_fee>
   <trade_type>JSAPI</trade_type>
   <sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>

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

返回结果

字段名 变量名 必填 类型 示例值 描述
返回状态码 return_code String(16) SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) OK 当 return_code 为 FAIL 时返回信息为错误原因 ,例如签名失败参数格式校验错误

以下字段在 return_code 为 SUCCESS 的时候有返回

字段名 变量名 必填 类型 示例值 描述
公众账号 ID appid String(32) wx8888888888888888 调用接口提交的公众账号 ID
商户号 mch_id String(32) 1900000109 调用接口提交的商户号
设备号 device_info String(32) 013467007045764 自定义参数,可以为请求支付的终端设备号等
随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 微信返回的随机字符串
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 微信返回的签名值,详见签名算法
业务结果 result_code String(16) SUCCESS SUCCESS/FAIL
错误代码 err_code String(32) 当 result_code 为 FAIL 时返回错误代码,详细参见下文错误列表
错误代码描述 err_code_des String(128) 当 result_code 为 FAIL 时返回错误描述,详细参见下文错误列表

以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回

字段名 变量名 必填 类型 示例值 描述
交易类型 trade_type String(16) JSAPI JSAPI -JSAPI 支付 NATIVE -Native 支付 APP -APP 支付说明详见参数规定
预支付交易会话标识 prepay_id String(64) wx201410272009395522657a690389285100 微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为 2 小时
二维码链接 code_url String(64) weixin://wxpay/bizpayurl/up?pr=NwY5Mz9&groupid=00 trade_type=NATIVE 时有返回,此 url 用于生成支付二维码,然后提供给用户进行扫码支付。注意:code_url 的值并非固定,使用时按照 URL 格式转成二维码即可

举例如下:

<xml>
   <return_code><![CDATA[SUCCESS]]></return_code>
   <return_msg><![CDATA[OK]]></return_msg>
   <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
   <mch_id><![CDATA[10000100]]></mch_id>
   <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
   <openid><![CDATA[oUpF8uMuAJO_M2pxb1Q9zNjWeS6o]]></openid>
   <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
   <result_code><![CDATA[SUCCESS]]></result_code>
   <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
   <trade_type><![CDATA[JSAPI]]></trade_type>
</xml>

错误码

名称 描述 原因 解决方案
INVALID_REQUEST 参数错误 参数格式有误或者未按规则上传 订单重入时,要求参数值与原请求一致,请确认参数问题
NOAUTH 商户无此接口权限 商户未开通此接口权限 请商户前往申请此接口权限
NOTENOUGH 余额不足 用户帐号余额不足 用户帐号余额不足,请用户充值或更换支付卡后再支付
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 编码格式
有事情请找微信官方 谢谢!