拆分
商品模块:包括后台管理产品分类,SKU,商品上架,发布,页面静态化,前台商品展示
用户模块:包括用户登录注册,积分,安全信息
账户模块:包括用户账号信息,钱包账号,红包账号,积分账号,优惠券等,第三方支付
交易模块:用户下单,完成交易整个流程
活动模块:主要是活动相关信息
系统技术架构:Rest层,微服务层,持久化层,持久化缓存,分布式
数据库: MyCat 做读写分离
支付主要流程
- App 发起支付,服务端接收请求生成订单号,根据第三方参数规定调用第三方支付平台的下单接口,成功后返回相应支付凭据
- 把支付凭据返还给 APP,APP 根据支付凭据信息,在客户端完成支付
- 如果支付实际成功后第三方平台,会调用我们提供的 HTTP 回调接口进行回调
- 验证签名比对价格,更新订单状态,将支付成功消息异步推送给交易模块
签名
上述步骤中每一步不管是调用第三方接口,或者第三方调用我们接口,都需要严格根据文档验证签名,防止请求伪造
支付过程回查
部分第三方支付平台同一个订单号直接调用下单接口只能调用成功一次,并且每次调用过程都需要记录保存下来,所以一笔支付应该对应多条支付记录,但是有且最多只能有一条是成功的。
退款:
部分支付渠道不支持原路退款,例如易宝,智慧支付
并且支付过程中基本会包含钱包,红包,优惠券,现金等好多组成
退款有复杂性,所以采用退款退到账户余额
考虑支付方的条件
老板优先考虑费率、手续费
程序员优先考虑健壮性、稳定