
1、创建商户API证书
链接地址:商户API证书
2、获取证书序列号
openssl x509 -in xxxxx.pem -noout -serial
其中 xxxxx.pem 是你的私钥证书地址。
3、在商户平台绑定一个appid
需要提前创建一个小程序或者公众号,将您的商户号与其appid进行绑定。
4、生成一个时间戳和随机字符串
下面以node为例:
// 时间戳
const timestamp = Math.floor(Date.now() / 1000).toString();
// 随机字符串
const nonceStr = crypto.randomBytes(16).toString('hex');
5、订单请求体
const requestBody = {
"appid": "xxxxxxxxxxxx", // 示例:您的appid
"mchid": "xxxxxxxx", // 示例:商户号
"description": "测试商品-Native下单",
"out_trade_no": "order1234567890",
"notify_url": "https://www.example.com/pay/notify",
'amount': {
'total': 1, // 整数,单位:分
'currency': "CNY"
},
}
替换您的自己的appid和mchid。
注意金额单位为分。
6、构建待签名串
const message = `${method}\n${reqUrlPath}\n${timestamp}\n${nonceStr}\n${bodyString}\n`;
格式为:HTTP请求方法 + "\n" + URL 路径 + "\n" + 时间戳 + "\n" + 随机串 + "\n" + 请求Body + "\n"
接下来使用使用商户私钥签名 该签名传,注意使用RSA-SHA256。
7、拼装请求头Authorization
Authorization: WECHATPAY2-SHA256-RSA2048 mchid="xxxx",nonce_str="xxx",signature="xxx",timestamp="xxxx",serial_no="xxxx"
WECHATPAY2-SHA256-RSA2048 是固定内容,无需更改。
- mchid:商户号
- nonce_str:随机字符串
- signature:签名值(构建的签名串)
- timestamp:时间戳
- serial_no:证书序列号
8、发起请求
curl -X POST \
https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi \
-H 'Authorization: ${Authorization}'
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '${requestBody}'
