30 lines
2.2 KiB
Markdown
30 lines
2.2 KiB
Markdown
# Change: Align C端 payment flows with merchant-pool routing policy
|
|
|
|
## Why
|
|
|
|
The August payment iteration keeps the existing C端 payment creation endpoints, but changes how the backend routes payment creation through its merchant pool. The client must stop assuming that a failed or unknown payment-creation result can be retried against another merchant, otherwise one user action can create duplicate payment attempts and consume payment limits unexpectedly.
|
|
|
|
## What Changes
|
|
|
|
- Keep `POST /api/c/v1/orders/create` and `POST /api/c/v1/wallet/recharge` as the payment creation endpoints; do not add a merchant ID to client requests.
|
|
- Treat merchant selection as backend-owned and preserve the selected payment method and existing request fields (`identifier`, package IDs or amount, and WeChat-only `app_type`).
|
|
- Treat an explicit payment pre-order failure as the terminal result for the current attempt; surface the API error without automatically switching merchants or creating another payment.
|
|
- Treat timeout, connection interruption, and other unknown payment-creation results as indeterminate; do not automatically switch merchants or repeat payment creation. Any retry must be a deliberate, user-visible action after the applicable order/payment status is reconciled.
|
|
- Ensure payment-limit and attempt-count behavior is modeled as “every payment creation attempt counts”, rather than “only successful payments count”; client polling/status refresh must never create another payment.
|
|
- Continue to use the API-defined error codes and messages as the source of truth.
|
|
|
|
## Capabilities
|
|
|
|
### New Capabilities
|
|
|
|
- `payment-routing-policy`: Apply merchant-pool routing, terminal-failure, unknown-result, and payment-attempt accounting rules to C端 payment creation.
|
|
|
|
### Modified Capabilities
|
|
|
|
## Impact
|
|
|
|
- Affected API adapters: `api/modules/order.js`, `api/modules/wallet.js`.
|
|
- Affected payment callers: package order, wallet recharge, order-list payment, and shared payment-result/status refresh flows.
|
|
- No endpoint path or client merchant-selection configuration changes.
|
|
- Existing WeChat `pay_config`, Alipay `payment_link`, wallet payment, submit guards, and backend status reconciliation remain compatible.
|