自宅创业 - 小程序支付下单

本期概要

这一期主要在做小程序支付下单功能,对接微信支付,写前端界面,后端接口,后台管理界面。

 模块完成度
前端商品详情50%
 下单结算95%
 商品评测50%
 订单查询50%
后端商品接口80%
 订单接口95%
 对接微信支付95%
 对接物流信息10%
后台管理商品管理80%
 订单管理0%
 微信支付配置100%

界面设计工作在上一期基本做好了,这些功能模块中,订单和支付是最复杂的,硬骨头先啃掉了。

订单和支付

由于之前做蚁阅时,对接过一个第三方支付系统,所以对订单状态机,主要流程和接口都比较熟悉了。这次对接的是微信支付,主要是接口内容和认证方式有些区别。

订单系统复杂的根源在于要和支付系统进行网络交互,同步支付状态。要保证在各种网络情况下都不出错,订单接口都需要做幂等设计,也就是同样的参数重复调用接口,效果和只调用一次一样。

在创建订单之前,一定要先生成订单号,不可以用数据库自增ID。大型系统的订单号可以参考大厂的开源方案,小系统用日期时间加随机数即可,可以将用户ID末几位放到订单号中,在遥远的将来做数据分片用。

我的方案是:日期 + 小时 + 用户ID末3位 + 随机数5位,生成之后再到数据库中检查一下是否存在,已存在就重新生成。

前端请求到订单号之后,就可以发起创建订单请求,如果请求失败可以用同样的订单号重试,后端也不会创建重复的订单,因为可以根据订单号识别重复请求,实现接口幂等性。

订单创建之后,请求支付系统获取支付信息,请求中同样携带订单号,支付系统会根据订单号识别重复请求,这样支付系统也不会创建重复订单。

支付信息会返回到前端,用于拉起支付App或者显示付款二维码。用户付款之后,再调用查单接口获取支付状态,支付完成。支付系统同时也会主动请求你的后端接口,通知支付状态,保证支付状态及时同步。

订单取消、退款等逆向操作,需要考虑优惠券退还和库存变更。

感兴趣的朋友可以学习极客时间《后端存储实战课 - 李玥》这个课程,很深入很实用。

其他商品和订单功能

如果按常规电商的做法,商品详情订单管理之类都很好做,不需要太多思考。但我倾向于做点差异化,把功能做的更简单实用,所以很多产品交互就需要思考,有时候想不清楚就很头大,也会花费不少时间。

争取下一期把剩余的功能模块全部搞定,上线内测。

最后

你可以在 关于我 页面找到我的联系方式,欢迎交流!

Back

留言 - Github Issues | 订阅 - RSS源