### [微信小程序中支付后调用SDK的异步通知及验证处理订单方法](https://www.prosaas.cn/article/17298) **Published:** 2018-06-27T03:58:06 **Author:** 5201314 **Excerpt:** 下面为大家分享一篇微信小程序之支付后调用SDK的异步通知及验证处理订单方法,具有很好的参考价值,希望对大家有所… 下面为大家分享一篇微信小程序之支付后调用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(); //返回给微信 return true; }catch (Exception $e){ Db::rollback(); return fasle; } }else{ //如果微信返回失败的处理信息,那我们这里依然返回true,向微信表明态度 return true; } } //支付成功,减去商品库存 private function reduceStock($stockStatus) { //遍历减去 foreach ($stockStatus\['pStatusArray'\] as $v) { //使用tp5的setDec方法 Product::where(\['id'=>$v\['id'\]\])->setDec('stock',$v\['count'\]); } } //success为真,则订单修改为PAID,如果为假则修改为已支付,但订单未处理的状态,对应枚举信息修改 private function updateOrderStatus($orderID,$success) { $status = $success?OrderStatusEnum::PAID:OrderStatusEnum::PAID\_BUT\_OUT\_OF; Order::where(\['id'=>$orderID\])->update(\['status'=>$status\]); } } **控制器中如下:** public function receiveNotify() { //1:检查库存量防止超卖 //2:更新status状态 //3:减库存 //如果成功处理,返回成功处理信息,否则返回没有成功处理信息 $notify = new WxNotify(); $notify->handle(); } 以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网! 相关推荐: 微信小程序中购物车功能的实现 微信小程序中页面间通信的方式 微信小程序中定义全局数据和函数复用及模版的介绍 以上就是微信小程序中支付后调用SDK的异步通知及验证处理订单方法的详细内容,更多请关注知企PROSAAS其它相关文章! **Tags:** php, 异步, 微信小程序 **Categories:** 后端开发 ---