提交订单
最后更新于:2022-04-02 04:32:15
## 提交订单
```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
';