文章目录
微信支付的统一下单接口是商户系统与微信支付系统交互的核心步骤之一。通过调用该接口,商户可以在微信支付服务后台生成预支付交易单,并获取
prepay_id
,以便后续在小程序内调起支付。本文将全面解析统一下单接口的参数、使用场景以及常见注意事项。参考:微信支付统一下单接口
一、统一下单接口概述
1. 功能介绍
微信支付的统一下单接口主要用于生成预支付交易单。具体工作流程如下:
- 商户系统向微信支付服务发起统一下单请求。
- 微信支付后台根据请求生成预支付交易单,并返回
prepay_id
。 - 商户使用
prepay_id
调起支付,完成支付流程。
2. 接口特点
- 标准化:接口统一采用 HTTPS POST 请求,数据格式为 XML。
- 安全性:通过签名算法确保参数完整性。
- 灵活性:支持多种支付场景,例如小程序支付、扫码支付等。
二、接口链接及认证要求
1. 接口地址
https://api.mch.weixin.qq.com/pay/unifiedorder
2. 是否需要证书
统一下单接口 不需要证书,但后续某些接口(如退款接口)可能需要。
三、请求参数详解
1. 核心参数说明
以下是统一下单接口的核心参数:
参数名 | 是否必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
appid |
是 | String(32) | wxd678efh567hg6787 |
微信分配的小程序ID。 |
mch_id |
是 | String(32) | 1230000109 |
微信支付分配的商户号。 |
nonce_str |
是 | String(32) | 5K8264ILTKCH16CQ... |
随机字符串,防止重放攻击,长度要求在32位以内。 |
sign |
是 | String(64) | C380BEC2BFD727A... |
签名,通过签名算法生成,用于校验请求合法性。 |
body |
是 | String(127) | 腾讯充值中心-QQ会员充值 |
商品描述,简要说明订单内容。 |
out_trade_no |
是 | String(32) | 20150806125346 |
商户系统内部订单号,需保证唯一性。 |
total_fee |
是 | int | 88 |
订单总金额,单位为分。 |
spbill_create_ip |
是 | String(64) | 123.12.12.123 |
调用接口的机器IP地址。 |
notify_url |
是 | String(256) | https://example.com/pay/notify |
接收支付结果通知的回调地址,必须为外网可访问的 HTTPS 链接。 |
trade_type |
是 | String(16) | JSAPI |
交易类型,小程序支付固定填写 JSAPI 。 |
openid |
否 | String(128) | oUpF8uMuAJO_M... |
用户标识,仅在 trade_type=JSAPI 时必传。 |
2. 参数补充说明
- 随机字符串 (
nonce_str
)
推荐使用安全的随机数生成算法生成,确保每次请求唯一。 - 签名 (
sign
)
签名算法包括MD5
和HMAC-SHA256
,需要与商户平台配置一致。 - 通知地址 (
notify_url
)
微信通过此地址向商户系统发送异步支付结果通知,确保 URL 可以被公网访问。
四、请求示例
以下是统一下单请求的示例代码:
1. 请求 XML 示例
<xml>