zoukankan      html  css  js  c++  java
  • 支付系统 简版设计

    个人梳理如有不对 请及时指正 欢迎大家 编辑更新此文档

    系统目标

    系统目标:

    对接第三方支付系统 为系统平台提供统一的支付中间件.

    技术栈使用情况:

    Springboot + mybaties + redis + rocketMQ + mysql.

    支付系统设计原则和思路

    整体设计中,有以下几个原则

    • 统一,兼顾方便

      • 首要是统一, 对各种应用提供统一使用入口,其次是方便,不需要额外的入侵即可使用支付功能

      • 接口的升级或改动需要兼容历史版本

    • 易拓展

      • 支持拓展其他支付方式接入以及未来自己实现支付功能

    • 支持,而不是决策

      • 不替使用方应用决策,不掺杂使用方应用和其他模块业务逻辑处理 (必须传递消息时使用MQ 解耦)

    • 少即是多, 侧重成长性, 慎重修改API

      • 每添加一个字段(接口)都要谨慎, 加后无法再删, 对扩展开放, 修改封闭

      • 同一个接口 不同的参数可以实现不同的功能 如 getPayInfo 带 支付方式 需要去查第三方支付状态

    支付系统目前流程


    支付系统主流程

    这期间发生了什么?

    准备工作: 账单结算完成,调用生成支付信息接口.


    第一步 : 客户端点击确认支付 —> 请求后台预支付接口(检查订单状态 )

    第二步: 根据后台返回状态码 做后续处理

    第三步: 可以拉起支付时 —> 拉起支付让用户选择支付方式 —> 请求支付接口(检查订单状态,获取SDK 需要的签名 )

    第四步: 后台返回正确的签名 客户端拉起第三方支付 SDK 界面

    第五步: 用户使用支付工具 成功付款

    第六步: 客户端显示支持成功并查询后台支付状态(如果异步回调未到后台 主动查询第三方并更新订单支付信息)


    那么处理阶段到底做了什么呢?

    这里在讲下微信和支付宝 官网描述的支付流程

    微信官网这样说:

    https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_3&index=5

    第三步和第四步详细讲过程如下:

    1.支付系统和微信后台交互生成订单,微信后台给业务服务器一个预交易订单号

    2.支付系统给你的App预交易订单号和签名信息—> App去调起微信支付

    3.App听过微信SDK 调起微信App支付,微信App把预交易订单号和订单签名信息给传给 微信服务器

    4.微信App接收微信服务器支付结果 , 微信App告知App支付支付结果,同时微信后台异步告知支付系统支付结果

    整个故事情节大概是这样的


    支付宝官网这样说:

    梳理一下步骤:

    1.支付系统做好订单信息,安全签名后发给App(支付系统负责RSA加密)

    2.App拿着订单信息和签名,通过SDK调起支付宝App ,支付宝 app去请求支付宝服务器 完成支付(支付宝 App解密订单信息,确认订单安全)

    3.支付宝App通知 客户端的App支付完成;同时,支付宝后台服务异步通知支付系统后台支付完成)


    整个流程涉及到你和支付宝双方的App,双方的后台服务器,故事情节大概可以这样理解



    奉上支付宝 开发者文档: https://docs.open.alipay.com/api_1/alipay.trade.pay/



    个人梳理如有不对 请及时指正 欢迎大家 编辑更新此文档

    PS. 支付返回状态码

    状态码
    msg
    0支付成功
    411订单已支付
    413订单已关闭
    415校验订单信息失败(未到支付状态/未查询到订单)
    420支付渠道错误
    421MQ广播通知错误
    999操作失败


    参考链接: https://www.jianshu.com/p/1f48b544660e

  • 相关阅读:
    jQuery属性遍历、HTML操作
    jQuery效果函数
    【Solr初探】Solr安装,启动,查询,索引
    【mac osx安装opencv,python总结】
    反射给对象赋值——类型转换
    js 模拟a标签打开新网页
    MVC post 方法导出word文档
    Jquery ajax json 值回传不了
    商城
    批处理的赋值 调用 参数
  • 原文地址:https://www.cnblogs.com/xmanblue/p/10956956.html
Copyright © 2011-2022 走看看