[TOC]
背景与需求
随着全球化业务的发展,企业需要同时支持国内外多种支付渠道,包括支付宝、微信支付、Apple Pay、Google Pay等主流支付方式。为了提供统一的支付体验和简化技术实现,需要设计一套完整的三方支付接入方案。
整体架构设计
系统交互架构
该架构采用分层设计,通过统一的支付网关对接各类三方支付平台,实现支付流程的标准化和可扩展性。
核心流程详解
1. 支付方式选择机制
支付方式的选择是整个支付流程的起点,需要根据用户设备类型、地理位置等因素智能返回可用的支付选项。
sequenceDiagram
participant front as 前端
participant order as 交易流程模块
front ->> front: 用户点击"购买"按钮
front ->> order: 查询可用支付方式
order -->> front: 返回支付方式列表
alt 接口调用成功且有可用支付方式
front ->> front: 显示收银台界面
front ->> front: 用户选择具体支付方式
else 接口调用失败或无可用车型
front ->> front: 启用兜底支付流程
Note right of front: 安卓默认谷歌支付,iOS默认苹果支付
end
【补充】支付方式选择的最佳实践:
- 根据用户设备类型自动筛选适用的支付方式
- 支持按地区、货币类型过滤支付选项
- 提供支付方式的优先级排序机制
2. 一次性支付完整流程
一次性支付是电商场景中最常见的支付模式,涉及商户、用户、三方支付平台等多方协作。
sequenceDiagram
participant user as 用户
participant front as 商户客户端
participant server as 商户后端
participant third_front as 三方收银页面
participant third_server as 三方支付后端
participant pay_channel as 支付渠道<br/>(银行/钱包等)
Note over server,third_server: 商品信息预配置(针对国际支付)
server ->> third_server: 创建商品信息
third_server -->> server: 商品配置确认
Note over user,third_front: 支付流程启动
user ->> front: 触发购买操作
activate front
front ->> server: 创建订单请求
activate server
alt 需要用户账户的支付方式(如部分国际支付)
alt 用户首次使用
server ->> third_server: 创建用户档案
third_server -->> server: 用户ID确认
end
end
server ->> third_server: 发起支付请求
third_server -->> server: 返回支付链接和交易ID
server -->> front: 下发支付凭证
deactivate server
front ->> third_front: 跳转至三方收银页面
deactivate front
activate third_front
third_front -->> user: 展示支付界面
Note over user,third_front: 用户完成支付操作
user ->> third_front: 输入支付信息
user ->> third_front: 确认支付
third_front ->> third_server: 提交支付请求
third_server ->> pay_channel: 转发支付指令
pay_channel -->> third_server: 支付处理结果
third_server -->> third_front: 支付状态更新
third_front -->> front: 自动回调商户应用
deactivate third_front
activate front
【补充】支付安全性要点:
- 所有敏感信息传输必须使用HTTPS加密
- 支付凭证应设置合理的有效期和使用次数限制
- 建议实现支付密码二次验证机制
3. 三方异步回调处理
三方支付平台通过异步回调通知商户支付结果,这是确保支付状态准确性的关键环节。
sequenceDiagram
participant order as 交易流程模块
participant pay as 支付模块
participant third as 三方支付平台
third ->> order: 发送支付状态回调通知
activate order
order ->> pay: 查询本地支付记录
activate pay
pay ->> pay: 验证交易状态一致性
alt 本地状态非成功
pay ->> third: 主动查询三方支付状态
activate third
third -->> pay: 返回最新支付状态
deactivate third
alt 三方确认支付成功
pay -->> pay: 更新本地交易状态
pay ->> pay: 触发后续业务处理消息队列
end
end
pay -->> order: 返回支付处理结果
deactivate pay
alt 支付成功
order ->> order: 执行订单完成后的业务逻辑
end
order -->> third: 确认收到回调通知
deactivate order
【补充】回调处理注意事项:
- 必须实现幂等性处理,防止重复回调造成业务异常
- 建议记录所有回调请求日志,便于问题追溯
- 需要验证回调请求的签名真实性
4. 客户端回调验证机制
用户从三方支付页面返回商户应用后,需要进行本地状态验证以确保支付结果的准确性。
sequenceDiagram
participant front as 前端应用
participant order as 交易流程模块
participant pay as 支付模块
participant third as 三方支付
front ->> front: 用户确认支付完成
alt 客户端状态轮询验证(最多4次,每次间隔5秒)
front ->> order: 传递订单ID和交易ID
activate order
order ->> pay: 查询支付状态
activate pay
pay ->> pay: 核对本地数据库记录
alt 本地状态未成功
pay ->> third: 请求三方平台状态确认
activate third
third -->> pay: 返回支付验证结果
deactivate third
alt 三方确认支付成功
pay -->> pay: 更新本地交易状态
pay ->> pay: 发布支付成功消息
end
end
pay -->> order: 返回支付验证结果
deactivate pay
alt 支付验证成功
order ->> order: 执行支付成功的后续处理
end
order -->> front: 返回最终支付状态
deactivate order
end
alt 所有轮询均失败
front ->> front: 执行异常处理逻辑
Note right of front: 显示友好提示信息并记录埋点数据
end
【补充】客户端验证优化建议:
- 实现指数退避的重试策略,避免频繁请求
- 提供用户手动刷新状态的功能
- 设置合理的超时时间和重试次数上限
5. 订阅支付流程
此部分内容待补充完善
核心技术要点
1. 支付方式管理策略
建立统一的支付方式管理机制,支持动态配置和实时更新各类支付渠道的可用性状态。
2. 支付订单生成规范
制定标准化的订单生成流程,确保订单信息的完整性和一致性,包括:
- 订单号的唯一性保障机制
- 金额计算的精度控制
- 货币类型的正确处理
3. 支付结果验证与签名机制
实现双重验证机制确保支付结果的真实性:
- 本地数据库状态核对
- 三方平台API状态确认
- 数字签名验证防篡改
4. 三方回调安全保障
建立完善的回调处理安全体系:
- 请求来源身份验证
- 参数完整性校验
- 防重放攻击机制
5. 定时任务补偿机制
设计健壮的补偿机制处理异常情况:
- 支付状态不一致的自动修复
- 超时订单的主动查询
- 失败回调的重试处理
最佳实践建议
安全性保障
- 所有支付相关通信必须使用TLS加密
- 实现完善的日志记录和审计机制
- 定期进行安全漏洞扫描和渗透测试
性能优化
- 支付网关采用集群部署确保高可用
- 实现支付结果的缓存机制减少重复查询
- 优化数据库索引提升查询效率
监控告警
- 建立支付成功率、响应时间等关键指标监控
- 设置异常支付行为的实时告警机制
- 定期分析支付数据发现潜在问题
常见问题与解决方案
1. 支付状态不一致
问题现象:本地记录与三方平台状态不符 解决方案:实现主动查询机制,定期同步状态
2. 回调通知丢失
问题现象:未收到三方平台的回调通知 解决方案:建立定时任务主动查询支付状态
3. 汇率计算误差
问题现象:跨境支付出现金额差异 解决方案:使用银行级汇率计算服务,保留足够小数位
结语
三方支付接入是一个复杂的系统工程,需要在用户体验、系统安全、业务合规等多个维度进行综合考虑。通过合理的架构设计和严谨的实现方案,可以为企业提供稳定可靠的支付服务能力。