首页 / Java 平台(cloud-java) / pay 支付
pay 支付
支付事实分层:订单、支付尝试、异步通知、对账与未知状态恢复。
职责概览
支付模块 独立端口 48093,管理支付订单、Checkout 会话、渠道/应用、退款、转账、钱包、对账与权益资格策略(PaymentEligibilityPolicy)。
核心设计原则:支付事实分层——订单、支付尝试、异步通知、对账分别落表,任何状态推断都必须回到对应事实。
支付事实分层
| 事实 | 表/服务 | 职责 |
|---|---|---|
| 支付订单 | pay_order | 业务订单状态机;唯一约束:租户订单号、app_id + merchant_order_id |
| 支付尝试 | pay_payment_attempt | 与提供商的一次交互;唯一约束:公开 attempt ID、客户端幂等键、提供商幂等键 |
| 异步通知 | 通知链路 + PayNotifyJob | 提供商回调验签后驱动状态;失败重试 |
| 对账 | ReconciliationCaseService、PayReconciliationCaseJob | 以提供商流水核对,差异生成 case |
| 未知状态恢复 | PayUnknownAttemptRecoveryJob | 超时未回调的尝试自动查询恢复 |
| 退款/结算/转账 | PayRefundFactService、SettlementService、PayTransferSyncJob | 各自独立事实与同步 |
接口清单
| 面 | Controller | 说明 |
|---|---|---|
| App | AppPayCheckoutController、AppPayCheckoutSessionV1Controller、AppPayOrderController、AppPayWalletController、AppPayWalletRechargeController、AppPayWalletTransactionController、AppPayTransferController | Checkout 会话、下单、钱包充值/流水、转账 |
| Admin | PayOrderController、PayNotifyController、PayAppController、PayProviderAccountController、PayProductMappingController、PayTransferController、PayOperationController、PaymentEligibilityPolicyController | 订单、通知、应用、渠道账户、产品映射、运营、资格策略 |
| Webhook | PayProviderWebhookController | 提供商异步回调入口(验签 + 幂等) |
| 演示 | PayDemoOrderController、PayDemoWithdrawController | 沙箱演示下单/提现 |
关键实现与任务
fact 服务:PayFactAdminService(事实管理)、PayOutboxPublisher(可靠发布)、PayProviderFactProjectionService(提供商事实投影)、PayDisputeService(争议)、ReconciliationCaseService(对账 case)。
XXL-JOB 处理器:
- 订单:
PayOrderExpireJob(过期)、PayOrderSyncJob(同步) - 通知:
PayNotifyJob - 尝试恢复:
PayUnknownAttemptRecoveryJob - 退款/转账:
PayRefundSyncJob、PayTransferSyncJob - 对账:
PaySettlementReconciliationJob、PayReconciliationCaseJob - 提供商:
PayProviderEventJob、PayProviderResourceSyncJob - Outbox:
PayOutboxPublishJob
数据与维护注意
核心表:pay_* 与对账/financial 表(36 张)。
- 不能用单一
pay_order.status推断所有提供商状态。 - 回调处理必须验签 + 幂等;失败进重试/Outbox,不伪造业务行。
- 支付凭据(渠道密钥等)不得写入日志或 Wiki。