栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

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

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

$orderNo])->lock(true)->find();
// $order = Order::get(['order_no'=>$orderNo]);
 //如果未支付
 if ($order->status == 1) {
   $service = new appapiserviceOrder();
   //查询到该订单号的商品和库存量信息
   $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();
  }

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/40021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号