diff --git a/docs/PAYMENT.md b/docs/PAYMENT.md index 755b313a..981863a9 100644 --- a/docs/PAYMENT.md +++ b/docs/PAYMENT.md @@ -22,11 +22,11 @@ Sub2API has a built-in payment system that enables user self-service top-up with | Provider | Payment Methods | Description | |----------|----------------|-------------| | **EasyPay** | Alipay, WeChat Pay | Third-party aggregation via EasyPay protocol | -| **Alipay (Direct)** | PC Page Pay, H5 Mobile Pay | Direct integration with Alipay Open Platform, auto-switches by device | -| **WeChat Pay (Direct)** | Native QR Code, H5 Pay | Direct integration with WeChat Pay APIv3, mobile-first H5 | +| **Alipay (Direct)** | Desktop QR code, mobile Alipay redirect | Direct integration with Alipay Open Platform, returning desktop QR codes and mobile WAP/app launch links | +| **WeChat Pay (Direct)** | Native QR, H5, MP/JSAPI Pay | Direct integration with WeChat Pay APIv3 with environment-aware routing | | **Stripe** | Card, Alipay, WeChat Pay, Link, etc. | International payments, multi-currency support | -> Alipay/WeChat Pay direct and EasyPay can coexist. Direct channels connect to payment APIs directly with lower fees; EasyPay aggregates through third-party platforms with easier setup. +> Alipay/WeChat Pay direct and EasyPay can both exist as backend provider instances, but the frontend always exposes only two visible buttons: `Alipay` and `WeChat Pay`. Admins choose exactly one source for each visible method: direct or EasyPay. Direct channels connect to payment APIs directly with lower fees; EasyPay aggregates through third-party platforms with easier setup. > **EasyPay Provider Recommendations**: Both options below are third-party aggregators compatible with the EasyPay protocol. Pick based on the funding channel and settlement currency you need: > @@ -65,6 +65,15 @@ Configure the following in Admin Dashboard **Settings → Payment Settings**: | **Max Pending Orders** | Maximum concurrent pending orders per user | 3 | | **Load Balance Strategy** | Strategy for selecting provider instances | Least Amount | +### Frontend Visible Method Routing + +The current payment UX keeps the frontend method list unified and does not expose provider brands directly: + +- **Alipay**: when enabled, this button must be routed to either `Alipay (Direct)` or `EasyPay Alipay` +- **WeChat Pay**: when enabled, this button must be routed to either `WeChat Pay (Direct)` or `EasyPay WeChat` +- Each visible method can route to only one source at a time +- If a visible method is enabled without a selected source, the frontend will not expose that method + ### Load Balance Strategies | Strategy | Description | @@ -113,7 +122,7 @@ Compatible with any payment service that implements the EasyPay protocol. ### Alipay (Direct) -Direct integration with Alipay Open Platform. Supports PC page pay and H5 mobile pay. +Direct integration with Alipay Open Platform. Desktop flows return a QR code for in-page display, while mobile flows return an Alipay WAP/app redirect URL. | Parameter | Description | Required | |-----------|-------------|----------| @@ -123,7 +132,7 @@ Direct integration with Alipay Open Platform. Supports PC page pay and H5 mobile ### WeChat Pay (Direct) -Direct integration with WeChat Pay APIv3. Supports Native QR code and H5 payment. +Direct integration with WeChat Pay APIv3. Supports Native QR code payment, H5 payment, and MP/JSAPI payment inside the WeChat environment. | Parameter | Description | Required | |-----------|-------------|----------| @@ -220,8 +229,8 @@ User selects amount and payment method ▼ User completes payment ├─ EasyPay → QR code / H5 redirect - ├─ Alipay → PC page pay / H5 mobile pay - ├─ WeChat Pay → Native QR / H5 pay + ├─ Alipay → Desktop QR / mobile Alipay redirect + ├─ WeChat Pay → Desktop Native QR / non-WeChat H5 / in-WeChat JSAPI └─ Stripe → Payment Element (card/Alipay/WeChat/etc.) │ ▼ diff --git a/docs/PAYMENT_CN.md b/docs/PAYMENT_CN.md index aca3c866..d6d83ed1 100644 --- a/docs/PAYMENT_CN.md +++ b/docs/PAYMENT_CN.md @@ -22,11 +22,11 @@ Sub2API 内置支付系统,支持用户自助充值,无需部署独立的支 | 服务商 | 支付方式 | 说明 | |--------|---------|------| | **EasyPay(易支付)** | 支付宝、微信支付 | 兼容易支付协议的第三方聚合支付 | -| **支付宝官方** | 支付宝 PC 页面支付、H5 手机网站支付 | 直接对接支付宝开放平台,自动根据终端切换 | -| **微信官方** | Native 扫码支付、H5 支付 | 直接对接微信支付 APIv3,移动端优先 H5 | +| **支付宝官方** | 桌面二维码扫码、移动端支付宝跳转 | 直接对接支付宝开放平台,桌面端返回二维码,移动端返回 WAP/唤起链接 | +| **微信官方** | Native 扫码、H5、公众号/JSAPI 支付 | 直接对接微信支付 APIv3,按终端环境自动分流 | | **Stripe** | 银行卡、支付宝、微信支付、Link 等 | 国际支付,支持多币种 | -> 支付宝官方 / 微信官方与易支付可以共存。官方渠道直接对接 API,资金直达商户账户,手续费更低;易支付通过第三方平台聚合,接入门槛更低。 +> 支付宝官方 / 微信官方与易支付可以同时作为后台服务商实例存在,但前台始终只展示 `支付宝`、`微信支付` 两个可见按钮。管理员需要分别为这两个按钮选择唯一支付来源:官方或易支付。官方渠道直接对接 API,资金直达商户账户,手续费更低;易支付通过第三方平台聚合,接入门槛更低。 > **易支付服务商推荐**:以下两家均为兼容易支付协议的第三方聚合支付,按资金通道与结算方式选择: > @@ -65,6 +65,15 @@ Sub2API 内置支付系统,支持用户自助充值,无需部署独立的支 | **最大待支付订单数** | 同一用户最大并行待支付订单数 | 3 | | **负载均衡策略** | 多服务商实例时的选择策略 | 最少金额 | +### 前台可见支付方式路由 + +当前版本对用户统一展示支付方式,不区分官方渠道还是易支付: + +- **支付宝**:后台启用后,需要额外指定该按钮路由到 `支付宝官方` 或 `易支付支付宝` +- **微信支付**:后台启用后,需要额外指定该按钮路由到 `微信官方` 或 `易支付微信` +- 同一个可见支付方式在同一时刻只能路由到一个来源 +- 支付来源未选择时,即使对应按钮被开启,前台也不会暴露该支付方式 + ### 负载均衡策略 | 策略 | 说明 | @@ -113,7 +122,7 @@ Sub2API 内置支付系统,支持用户自助充值,无需部署独立的支 ### 支付宝官方 -直接对接支付宝开放平台,支持 PC 页面支付和 H5 手机网站支付。 +直接对接支付宝开放平台。桌面端返回二维码供页面内展示和扫码,移动端返回支付宝手机网站支付跳转链接。 | 参数 | 说明 | 必填 | |------|------|------| @@ -123,7 +132,7 @@ Sub2API 内置支付系统,支持用户自助充值,无需部署独立的支 ### 微信官方 -直接对接微信支付 APIv3,支持 Native 扫码支付和 H5 支付。 +直接对接微信支付 APIv3,支持 Native 扫码支付、H5 支付,以及在微信环境内的公众号/JSAPI 支付。 | 参数 | 说明 | 必填 | |------|------|------| @@ -220,8 +229,8 @@ Sub2API 内置支付系统,支持用户自助充值,无需部署独立的支 ▼ 用户完成支付 ├─ EasyPay → 扫码 / H5 跳转 - ├─ 支付宝官方 → PC 页面支付 / H5 手机网站支付 - ├─ 微信官方 → Native 扫码 / H5 支付 + ├─ 支付宝官方 → 桌面二维码 / 移动端支付宝跳转 + ├─ 微信官方 → 桌面 Native 扫码 / 非微信 H5 / 微信内 JSAPI └─ Stripe → Payment Element(银行卡/支付宝/微信等) │ ▼