首页 > 课堂 > 小程序 > 正文

微信小程序之支付后调用SDK的异步通知及验证处理订单方法的详解

2020-03-22 18:24:23
字体:
来源:转载
供稿:网友
下面小编就为大家分享一篇html' target='_blank'>微信小程序之支付后调用SDK的异步通知及验证处理订单方法,具有很好的参考价值,希望对大家有所帮助

小程序之后的异步验证和订单处理

 ?php * Created by YuanPan. * User: YuanPan * Date: 2017/12/21 * Time: 15:15namespace app/api/service;use app/api/model/Product;use app/lib/enum/OrderStatusEnum;use think/Db;use think/Exception;use think/Loader;use app/api/model/Order;//在这里依然引入WxPay.API.php即可完成引入Loader::import( WxPay.WxPay ,EXTEND_PATH, .Api.php class WxNotify extends /WxPayNotify //继承了父类,所以直接重写方法 public function NotifyProcess($data, $msg) //如果返回支付成功信息 if($data[ return_code ] = SUCCESS ){ $orderNo = $data[ out_trade_no  Db::startTrans(); //判断订单状态 //在这里可以进行对数据库进行所机制 //简单说,当一个执行sql语句的事务想要操作表记录之前,先向数据库发出请求,对你访问的记录集加锁 //在这个事务释放这个锁之前,其他事务不能对这些数据进行更新操作 Order::where([ order_no = $orderNo])- lock(true)- find();// $order = Order::get([ order_no = $orderNo]); //如果未支付 if ($order- status == 1) { $service = new /app/api/service/Order(); //查询到该订单号的商品和库存量信息 $stockStatus = $service- checkOrderStock($order-  //如果库存量有,更新订单状态,以及减去商品库存 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(); }

以上这篇微信小程序之支付后调用SDK的异步通知及验证处理订单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持php 。

您可能感兴趣的文章:

PHP 使用Echarts生成数据统计报表的实现

PHP根据手机号判断运营商

Laravel5.2使用Captcha生成验证码实现登录

以上就是微信小程序之支付后调用SDK的异步通知及验证处理订单方法的详解的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表