5

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

 2 years ago
source link: https://blog.guyskk.com/notes/onebiz-7
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2021年, 7月20日

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

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

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

订单和支付

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

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

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

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

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

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

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

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

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

其他商品和订单功能

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK