好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 微信小程序之支付后調用SDK的異步通知及驗證處理訂單方法

微信小程序之支付后調用SDK的異步通知及驗證處理訂單方法

熱門標簽:江蘇外呼電銷機器人報價 專業電話機器人批發商 電話機器人危險嗎 深圳外呼系統收費 長沙crm外呼系統業務 400電話辦理福州市 離石地圖標注 400電話申請方法收費 南寧高頻外呼回撥系統哪家好

小程序之后的異步驗證和訂單處理

?php
/**
 * Created by YuanPan.
 * User: YuanPan
 * Date: 2017/12/21
 * Time: 15:15
 */

namespace 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();
      try
      {
        //判斷訂單狀態
        //在這里可以進行對數據庫進行所機制
        //簡單說,當一個執行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->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的異步通知及驗證處理訂單方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 微信小程序中使用Async-await方法異步請求變為同步請求方法
  • 詳解將微信小程序接口Promise化并使用async函數
  • 微信小程序 緩存(本地緩存、異步緩存、同步緩存)詳解
  • 詳解微信小程序 同步異步解決辦法
  • 微信小程序異步處理詳解
  • 微信小程序 wx.request方法的異步封裝實例詳解
  • 微信小程序onLaunch異步,首頁onLoad先執行?
  • 微信小程序中使用ECharts 異步加載數據的方法
  • 微信小程序中使用Promise進行異步流程處理的實例詳解
  • 微信小程序 es6-promise.js封裝請求與處理異步進程
  • 微信小程序利用co處理異步流程的方法教程
  • 微信小程序中使用 async/await的方法實例分析

標簽:南昌 株洲 濱州 太原 興安盟 曲靖 白酒營銷 南京

巨人網絡通訊聲明:本文標題《微信小程序之支付后調用SDK的異步通知及驗證處理訂單方法》,本文關鍵詞  微信,小,程序,之,支付,后,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《微信小程序之支付后調用SDK的異步通知及驗證處理訂單方法》相關的同類信息!
  • 本頁收集關于微信小程序之支付后調用SDK的異步通知及驗證處理訂單方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 牝教师4~婬辱の教室全集在线| 免费观看的毛片| 北岛玲在厨房被猛烈进入| freesex寂寞老妇hd| 与夫妇交换性视频| 色香蕉视频| 忘穿内裤被同桌摸了好爽| 国产老色鬼无码免费视频| 国精产品一区二区三区人人人| 无码人妻久久久午夜一区二区三区| 黑人bbcvideos日本极品| 秘书大胸奶头晃着喷奶水| A片好大好紧好爽视频麻豆| 野外xxxxfreexxxx自己| 美国一级做a一级爱视频| 被5个粗大的??巴捣出白浆| 久久精品一区二区| 国产绿奴| 男男做肉视频| 男人扒开腿狂躁女人gif| 色老板在线看| 性短视频在线观看免费不卡流畅| 一级特黄大片欧美久久久蜜臀| 偷看各类wc女厕嘘嘘近距离| 国产98在线传媒在线视频 | 无码aⅴ精品欧美一区二区三区 | 国产高清国内精品福利| 日韩毛片在线免费观看| 女性做私密| 日本边摸边吃奶边做视频叫床未删减版| 在线观看黄台的免费视频| 旧里番牝教师~婬辱yy6080| 揉我胸?啊?嗯~出奶了3D | 杨幂车里娇喘迎合呻吟| 在小树林里做好爽| 国产精品久久久久无毒| 在线看欧美三级中文经典| 秘密教学漫画画免费读第4画| 欧美精品久久久久A片丁香| 色AV在线香蕉国产亚洲| 舔美女下面的视频免费|