多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 提交订单 ```php $_res = ['status' => 1, 'msg' => '', 'data' => ['seServerList' => $seServerList, 'seCardServerUseRecord' => $seCardServerUseRecord, 'total_final' => $total_final, 'total' => $total, 'card_total' => $card_total]]; // 提交订单时要校验这个k,如果提交订单是时k不一致,说明购物环境发生变化(订单金额,商品,套餐卡,结算信息等发生改变),则需要用户刷新页面重写确认。 $_res['data']['check_str'] = md5(serialize($_res)); if ($check_str != $_res['data']['check_str']) { // 抛异常 throw new Exception("购物环境发生变化(订单金额,商品,套餐卡,结算信息等发生改变),请刷新页面重写确认。"); } ``` >[danger] 这包含了用户的结算决策信息,一些条件发生改变了,比如优惠券等信息变更了,用户可能会重新决策,所以,交易的一些信息发生变更,交易环境,就需要用户重新确认。 一般情况下,请求一次支付会创建一个订单,如果没支付的订单就不显示而已,这是为了,让创建订单和支付像是一步一样,简化了流程,其实实际情况不是用户感知到这样的,只不过没支付的订单,没必要显示给用户而已,用户感知不到会创建订单,比如充值,购买会员等,用户感知不到这些操作会创建订单,但实际上是创建了订单的,这和商品订单有所不同。但是有时创建订单和支付也可以一步完成,比如只规定使用余额支付的订单,就可以创建订单和支付为一步原子操作。 * * * * * ### 费率以交易成功时为准? ![](http://cdn.aipin100.cn/18-4-13/4223096.jpg) 下单时数据和交易成功后的数据有可能不一致(实际的手续费可能高于当前显示的金额),这样就不太好了,**用户可能会不接受这样的结果**,不过有的业务确实很难保证,交易成功数据和提交订单时一致,比如股票这样实时变化的数据等等,不过无论怎样,我们还是尽量做到所见即所得这样的交易。这样才是用户最认可的方式。 跟支付宝上的口碑有点像,但我们要做微信上的,并且不依赖于微信卡包这种的 提交时的价格和优惠使用情况为初步预估,不代表最终提交,如果和最终提交时有差别,需要提醒用户刷新页面重新检查 ~~~ 支付流水 请求表,订单表 直接用订单号还是用支付流水号请求第三方支付,取决于你的应用,12306用的是前者。 ~~~ * * * * * last update:2018-3-10 15:26:12