style: format all files with Prettier
This commit is contained in:
@@ -4,10 +4,10 @@
|
||||
|
||||
本项目通过直接对接 **微信支付 APIv3** 实现收款。使用 **公钥模式** 验签(非平台证书模式),支持以下产品:
|
||||
|
||||
| 产品 | API | 场景 |
|
||||
|------|-----|------|
|
||||
| 产品 | API | 场景 |
|
||||
| ----------- | ----------------------------- | -------------------------------------- |
|
||||
| Native 支付 | `/v3/pay/transactions/native` | PC 扫码支付(生成 `weixin://` 二维码) |
|
||||
| H5 支付 | `/v3/pay/transactions/h5` | 移动端浏览器拉起微信 |
|
||||
| H5 支付 | `/v3/pay/transactions/h5` | 移动端浏览器拉起微信 |
|
||||
|
||||
> H5 支付需要在微信支付商户后台单独签约开通。如果未开通,移动端会自动降级到 Native 扫码。
|
||||
|
||||
@@ -26,13 +26,13 @@
|
||||
|
||||
微信支付 APIv3 公钥模式涉及 **多组密钥**:
|
||||
|
||||
| 密钥 | 来源 | 用途 | 对应环境变量 |
|
||||
|------|------|------|-------------|
|
||||
| **商户 API 私钥** | 商户后台生成/下载 | 对 API 请求签名 | `WXPAY_PRIVATE_KEY` |
|
||||
| **微信支付公钥** | 商户后台获取 | 验证异步通知签名 | `WXPAY_PUBLIC_KEY` |
|
||||
| **微信支付公钥 ID** | 与公钥配套 | 匹配通知中的 serial | `WXPAY_PUBLIC_KEY_ID` |
|
||||
| **商户证书序列号** | 商户后台查看 | 放入 Authorization header | `WXPAY_CERT_SERIAL` |
|
||||
| **APIv3 密钥** | 商户后台设置 | AES-GCM 解密通知内容 | `WXPAY_API_V3_KEY` |
|
||||
| 密钥 | 来源 | 用途 | 对应环境变量 |
|
||||
| ------------------- | ----------------- | ------------------------- | --------------------- |
|
||||
| **商户 API 私钥** | 商户后台生成/下载 | 对 API 请求签名 | `WXPAY_PRIVATE_KEY` |
|
||||
| **微信支付公钥** | 商户后台获取 | 验证异步通知签名 | `WXPAY_PUBLIC_KEY` |
|
||||
| **微信支付公钥 ID** | 与公钥配套 | 匹配通知中的 serial | `WXPAY_PUBLIC_KEY_ID` |
|
||||
| **商户证书序列号** | 商户后台查看 | 放入 Authorization header | `WXPAY_CERT_SERIAL` |
|
||||
| **APIv3 密钥** | 商户后台设置 | AES-GCM 解密通知内容 | `WXPAY_API_V3_KEY` |
|
||||
|
||||
> **公钥模式 vs 平台证书模式**:本项目使用公钥模式,直接用微信支付公钥验签,不需要定期拉取/更新平台证书,部署更简单。
|
||||
|
||||
@@ -146,14 +146,14 @@ src/app/api/wxpay/
|
||||
|
||||
## 支持的 API 能力
|
||||
|
||||
| 能力 | API | 说明 |
|
||||
|------|-----|------|
|
||||
| Native 下单 | `POST /v3/pay/transactions/native` | 返回 `code_url` 用于生成二维码 |
|
||||
| H5 下单 | `POST /v3/pay/transactions/h5` | 返回 `h5_url` 拉起微信 |
|
||||
| 查询订单 | `GET /v3/pay/transactions/out-trade-no/{id}` | 主动查询交易状态 |
|
||||
| 关闭订单 | `POST /v3/pay/.../close` | 超时关单 |
|
||||
| 退款 | `POST /v3/refund/domestic/refunds` | 原路退款 |
|
||||
| 异步通知 | POST 回调 | RSA-SHA256 验签 + AES-GCM 解密 |
|
||||
| 能力 | API | 说明 |
|
||||
| ----------- | -------------------------------------------- | ------------------------------ |
|
||||
| Native 下单 | `POST /v3/pay/transactions/native` | 返回 `code_url` 用于生成二维码 |
|
||||
| H5 下单 | `POST /v3/pay/transactions/h5` | 返回 `h5_url` 拉起微信 |
|
||||
| 查询订单 | `GET /v3/pay/transactions/out-trade-no/{id}` | 主动查询交易状态 |
|
||||
| 关闭订单 | `POST /v3/pay/.../close` | 超时关单 |
|
||||
| 退款 | `POST /v3/refund/domestic/refunds` | 原路退款 |
|
||||
| 异步通知 | POST 回调 | RSA-SHA256 验签 + AES-GCM 解密 |
|
||||
|
||||
## 与 wechatpay-node-v3 的关系
|
||||
|
||||
@@ -173,6 +173,7 @@ src/app/api/wxpay/
|
||||
### Q: 通知验签失败
|
||||
|
||||
检查以下几点:
|
||||
|
||||
1. `WXPAY_PUBLIC_KEY` 是否是 **微信支付公钥**(不是商户公钥或平台证书)
|
||||
2. `WXPAY_PUBLIC_KEY_ID` 是否与通知 header 中的 `Wechatpay-Serial` 匹配
|
||||
3. 服务器时间是否准确(NTP 同步)
|
||||
|
||||
Reference in New Issue
Block a user