1.对于update 必须修改里面的字段才算修改成功,不改的话也算失败,因此最好加入一个updated_at字段。
2.对于数据库里的字段 若有状态最好从1开始。
支付这块功能,比如说
有订单要去支付 此时前台应一直访问一个检测支付的接口,判断返回值是否支付成功,没有成功的话一直去请求(有一定的延迟效应)。(更安全的做法是不仅前台判断支付成功,后台也判断是否支付成功)
而后台去绑定一个字段,例如为lock=0 表示第一次支付的时候,当支付完成的时候把lock=1,下次判断该订单如果lock=1的话,就不执行上次执行过的代码。这样就相当于当前订单已支付,不重新生成订单。(处理并发问题)有时候SQL的确能解决问题但是太复杂,查询时间太长,还不如简单的查出来详情,然后去if判断各种类型。
[修改生成一口价订单接口] 一口价点击微信支付的瞬间,锁定当前拍品给当前生成订单的用户 ,生成订单表 , 存 trade_out_no , goods_id,user_id , [注意 : 如果佳蕾给你了order_id 则代表当前用户是从我买到的进来,然后生成新的trade_out_no的时候修改原来的order表,不要生成新的order];
[修改检查一口价订单接口] 类似竞拍订单,由生成新订单更改为修改原订单
[写一个计划任务] 检查15分钟之内, 未支付,trade_out_no存在的订单 , 调用微信的check_pay,判断在微信那边是否支付成功。然后修改订单状态。
微信支付的时候不点完成是不触发检测支付的,尽管付款成功,但没点完成按钮,还是未修改状态,这时后台应该去监听那个订单是否还未支付,如果有,则手动调用检测支付,完成支付,修改状态。
9.接受参数去判断的时候,尽量去找关键点,这个意思是如果条件不满足就不需要查其他的东西了,这样可以节省访问时间。
10.微信支付成功码: $order[‘trade_state’] == 'SUCCESS';