返回
微信支付v3-Native下单API从零开始详细解读
前端
2023-10-28 13:34:43
- 微信支付v3 Native下单API概述
微信支付v3 Native下单API是微信支付提供的用于生成预支付交易单的API。该API可让您在Native环境下发起微信支付,支持扫码支付、JSAPI支付和APP支付等多种支付方式。
2. API参数详解
微信支付v3 Native下单API的请求参数包括以下几个部分:
- 商户号(mchid): 您在微信支付平台的商户号。
- 子商户号(sub_mchid): 如果您使用子商户模式,则需要提供子商户号。
- 商户订单号(out_trade_no): 您系统生成的订单号,需要保证唯一性。
- 交易类型(trade_type): 支付方式,如NATIVE。
- 总金额(total_amount): 支付金额,单位为分。
- 商品(body): 商品或服务的。
- 附加数据(attach): 附加数据,在支付成功通知中返回。
- 终端IP(spbill_create_ip): 支付用户端的IP地址。
- 回调地址(notify_url): 支付成功后,微信支付平台会将支付结果通知到该地址。
- 自定义参数(sub_appid): 自定义参数,在支付成功通知中返回。
- 加密数据(encrypted_data): 用RSA算法加密的订单信息。
3. 签名流程
为了确保数据的安全性,微信支付v3 Native下单API要求对请求参数进行签名。签名流程如下:
- 将请求参数按照字典顺序排列。
- 将请求参数的键值对用“=”连接,用“&”分隔。
- 将签名字符串中所有的中文URL编码。
- 将签名字符串与商户私钥拼接成如下字符串:key=key&data=data。
- 使用SHA256算法对上述字符串进行签名,并转换为十六进制字符串。
4. API封装
您可以使用第三方库或自行编写代码来封装微信支付v3 Native下单API。这里提供了一个使用Python实现的API封装示例:
import requests
import hashlib
import time
# 定义商户号、子商户号、商户私钥等参数
mchid = "your_mchid"
sub_mchid = "your_sub_mchid"
private_key = "your_private_key"
# 定义请求参数
params = {
"mchid": mchid,
"sub_mchid": sub_mchid,
"out_trade_no": "your_out_trade_no",
"trade_type": "NATIVE",
"total_amount": 1,
"body": "your_body",
"attach": "your_attach",
"spbill_create_ip": "your_spbill_create_ip",
"notify_url": "your_notify_url",
"sub_appid": "your_sub_appid",
}
# 对请求参数进行签名
timestamp = str(int(time.time()))
nonce_str = ''.join(random.sample('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 32))
sign_str = '&'.join(['{}={}'.format(k, v) for k, v in sorted(params.items())])
sign_str = sign_str + '&key=' + private_key
sign = hashlib.sha256(sign_str.encode('utf-8')).hexdigest().upper()
params['sign'] = sign
params['timestamp'] = timestamp
params['nonce_str'] = nonce_str
# 发送请求
response = requests.post('https://api.mch.weixin.qq.com/v3/pay/transactions/native', data=params)
# 解析响应结果
result = response.json()
5. 结语
本文为您详细解读了微信支付v3 Native下单API,包括API概述、API参数详解、签名流程和API封装。希望您能通过本文掌握API的使用方法,并将其集成到您的项目中。如果您有任何疑问,请随时与我们联系。