自宅创业 - 小程序支付下单
本期概要
这一期主要在做小程序支付下单功能,对接微信支付,写前端界面,后端接口,后台管理界面。
模块 | 完成度 | |
---|---|---|
前端 | 商品详情 | 50% |
下单结算 | 95% | |
商品评测 | 50% | |
订单查询 | 50% | |
后端 | 商品接口 | 80% |
订单接口 | 95% | |
对接微信支付 | 95% | |
对接物流信息 | 10% | |
后台管理 | 商品管理 | 80% |
订单管理 | 0% | |
微信支付配置 | 100% |
界面设计工作在上一期基本做好了,这些功能模块中,订单和支付是最复杂的,硬骨头先啃掉了。
订单和支付
由于之前做蚁阅时,对接过一个第三方支付系统,所以对订单状态机,主要流程和接口都比较熟悉了。这次对接的是微信支付,主要是接口内容和认证方式有些区别。
订单系统复杂的根源在于要和支付系统进行网络交互,同步支付状态。要保证在各种网络情况下都不出错,订单接口都需要做幂等设计,也就是同样的参数重复调用接口,效果和只调用一次一样。
在创建订单之前,一定要先生成订单号,不可以用数据库自增ID。大型系统的订单号可以参考大厂的开源方案,小系统用日期时间加随机数即可,可以将用户ID末几位放到订单号中,在遥远的将来做数据分片用。
我的方案是:日期 + 小时 + 用户ID末3位 + 随机数5位,生成之后再到数据库中检查一下是否存在,已存在就重新生成。
前端请求到订单号之后,就可以发起创建订单请求,如果请求失败可以用同样的订单号重试,后端也不会创建重复的订单,因为可以根据订单号识别重复请求,实现接口幂等性。
订单创建之后,请求支付系统获取支付信息,请求中同样携带订单号,支付系统会根据订单号识别重复请求,这样支付系统也不会创建重复订单。
支付信息会返回到前端,用于拉起支付App或者显示付款二维码。用户付款之后,再调用查单接口获取支付状态,支付完成。支付系统同时也会主动请求你的后端接口,通知支付状态,保证支付状态及时同步。
订单取消、退款等逆向操作,需要考虑优惠券退还和库存变更。
感兴趣的朋友可以学习极客时间《后端存储实战课 - 李玥》这个课程,很深入很实用。
其他商品和订单功能
如果按常规电商的做法,商品详情订单管理之类都很好做,不需要太多思考。但我倾向于做点差异化,把功能做的更简单实用,所以很多产品交互就需要思考,有时候想不清楚就很头大,也会花费不少时间。
争取下一期把剩余的功能模块全部搞定,上线内测。
最后
你可以在 关于我 页面找到我的联系方式,欢迎交流!