除统一下单外,平台型企业更关注分账与代付接口:下单时可携带分账指令,支付成功后由系统按规则自动执行分账并触发出款。
接口约定
所有接口均为 HTTPS POST 请求,参数以表单提交,返回 JSON。
| 用途 | 请求地址 |
|---|---|
| 统一下单 | https://your-domain.com/pay/submit |
| 订单查询 | https://your-domain.com/pay/api |
下单参数说明
| 参数名 | 必填 | 示例 | 说明 |
|---|---|---|---|
| pid | 是 | 1001 | 商户 ID |
| type | 是 | wxpay | 支付方式:wxpay / alipay / unionpay |
| out_trade_no | 是 | 2026100316400001 | 商户订单号,唯一且幂等 |
| notify_url | 是 | https://shop.com/notify | 异步通知地址 |
| return_url | 否 | https://shop.com/return | 支付完成跳转地址 |
| name | 是 | 商品名称 | 订单标题 |
| money | 是 | 128.00 | 金额,保留两位小数 |
| sign | 是 | — | MD5 签名串 |
| sign_type | 是 | MD5 | 签名类型,固定 MD5 |
签名算法
将参数按 ASCII 码从小到大排序,使用 URL 键值对格式拼接(排除 sign、sign_type 与空值),再拼接商户密钥后进行 MD5 加密并转大写。
签名字符串:money=128.00&name=%E5%95%86%E5%93%81¬ify_url=...&out_trade_no=...&pid=1001&type=wxpay + KEY sign = strtoupper(md5(签名字符串))
示例代码
curl
curl -X POST https://your-domain.com/pay/submit \ -d "pid=1001" \ -d "type=wxpay" \ -d "out_trade_no=2026100316400001" \ -d "notify_url=https://shop.com/notify" \ -d "name=demo" \ -d "money=128.00" \ -d "sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -d "sign_type=MD5"
Python
import hashlib, requests
params = {
"pid": "1001",
"type": "wxpay",
"out_trade_no": "2026100316400001",
"notify_url": "https://shop.com/notify",
"name": "demo",
"money": "128.00",
}
key = "你的商户密钥"
sign_str = "&".join(f"{k}={v}" for k, v in sorted(params.items()) if v) + key
params["sign"] = hashlib.md5(sign_str.encode()).hexdigest().upper()
params["sign_type"] = "MD5"
resp = requests.post("https://your-domain.com/pay/submit", data=params)
print(resp.json())
异步通知
支付成功后系统会向 notify_url 发送 POST 通知,商户处理成功后请输出 success。
| 参数 | 说明 |
|---|---|
| trade_no | 平台订单号 |
| out_trade_no | 商户订单号 |
| money | 交易金额 |
| trade_status | TRADE_SUCCESS 表示支付成功 |
| sign | 验签串,算法同上 |
返回码说明
| code | 含义 |
|---|---|
| 1 | 成功 |
| -1 | 签名验证失败 |
| -2 | 商户不存在或已禁用 |
| -3 | 订单号重复 |
| -4 | 金额格式错误 |
⚠️ 以上接口与参数均为技术演示样例,不连接任何真实支付系统,请勿用于实际收款。