微信小程序之支付后调用SDK的异步通知及验证处理订单方法
小程序之后的异步验证和订单处理
$orderNo])->lock(true)->find(); //$order=Order::get(['order_no'=>$orderNo]); //如果未支付 if($order->status==1){ $service=new\app\api\service\Order(); //查询到该订单号的商品和库存量信息 $stockStatus=$service->checkOrderStock($order->id); //如果库存量有,更新订单状态,以及减去商品库存 if($stockStatus['pass']){ $this->updateOrderStatus($order->id,true); $this->reduceStock($stockStatus); //如果没有库存,订单状态修改为已支付,但订单未处理 }else{ $this->updateOrderStatus($order->id,false); } } Db::commit(); //返回给微信 returntrue; }catch(Exception$e){ Db::rollback(); returnfasle; } }else{ //如果微信返回失败的处理信息,那我们这里依然返回true,向微信表明态度 returntrue; } } //支付成功,减去商品库存 privatefunctionreduceStock($stockStatus) { //遍历减去 foreach($stockStatus['pStatusArray']as$v){ //使用tp5的setDec方法 Product::where(['id'=>$v['id']])->setDec('stock',$v['count']); } } //success为真,则订单修改为PAID,如果为假则修改为已支付,但订单未处理的状态,对应枚举信息修改 privatefunctionupdateOrderStatus($orderID,$success) { $status=$success?OrderStatusEnum::PAID:OrderStatusEnum::PAID_BUT_OUT_OF; Order::where(['id'=>$orderID])->update(['status'=>$status]); } }
控制器中如下:
publicfunctionreceiveNotify() { //1:检查库存量防止超卖 //2:更新status状态 //3:减库存 //如果成功处理,返回成功处理信息,否则返回没有成功处理信息 $notify=newWxNotify(); $notify->handle(); }
以上这篇微信小程序之支付后调用SDK的异步通知及验证处理订单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。