欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序之支付后調(diào)用SDK的異步通知及驗(yàn)證處理訂單方法

 更新時(shí)間:2018年01月02日 14:03:44   作者:myarche  
下面小編就為大家分享一篇微信小程序之支付后調(diào)用SDK的異步通知及驗(yàn)證處理訂單方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助

小程序之后的異步驗(yàn)證和訂單處理

<?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
      {
        //判斷訂單狀態(tài)
        //在這里可以進(jìn)行對(duì)數(shù)據(jù)庫(kù)進(jìn)行所機(jī)制
        //簡(jiǎn)單說,當(dāng)一個(gè)執(zhí)行sql語句的事務(wù)想要操作表記錄之前,先向數(shù)據(jù)庫(kù)發(fā)出請(qǐng)求,對(duì)你訪問的記錄集加鎖
        //在這個(gè)事務(wù)釋放這個(gè)鎖之前,其他事務(wù)不能對(duì)這些數(shù)據(jù)進(jìn)行更新操作
        Order::where(['order_no'=>$orderNo])->lock(true)->find();
//        $order = Order::get(['order_no'=>$orderNo]);
        //如果未支付
        if ($order->status == 1) {
          $service = new \app\api\service\Order();
          //查詢到該訂單號(hào)的商品和庫(kù)存量信息
          $stockStatus = $service->checkOrderStock($order->id);
          //如果庫(kù)存量有,更新訂單狀態(tài),以及減去商品庫(kù)存
          if ($stockStatus['pass']) {
            $this->updateOrderStatus($order->id, true);
            $this->reduceStock($stockStatus);
            //如果沒有庫(kù)存,訂單狀態(tài)修改為已支付,但訂單未處理
          } else {
            $this->updateOrderStatus($order->id, false);
          }
        }
        Db::commit();
        //返回給微信
        return true;
      }catch (Exception $e){
        Db::rollback();
        return fasle;
      }
    }else{
      //如果微信返回失敗的處理信息,那我們這里依然返回true,向微信表明態(tài)度
      return true;
    }
  }

  //支付成功,減去商品庫(kù)存
  private function reduceStock($stockStatus)
  {
    //遍歷減去
    foreach ($stockStatus['pStatusArray'] as $v) {
      //使用tp5的setDec方法
      Product::where(['id'=>$v['id']])->setDec('stock',$v['count']);
    }
  }

  //success為真,則訂單修改為PAID,如果為假則修改為已支付,但訂單未處理的狀態(tài),對(duì)應(yīng)枚舉信息修改
  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:檢查庫(kù)存量防止超賣
    //2:更新status狀態(tài)
    //3:減庫(kù)存
    //如果成功處理,返回成功處理信息,否則返回沒有成功處理信息
    $notify = new WxNotify();
    $notify->handle();
  }

以上這篇微信小程序之支付后調(diào)用SDK的異步通知及驗(yàn)證處理訂單方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • php權(quán)限調(diào)整強(qiáng)制用戶退出的解決步驟

    php權(quán)限調(diào)整強(qiáng)制用戶退出的解決步驟

    這篇文章主要介紹了php權(quán)限調(diào)整強(qiáng)制用戶退出的解決步驟,當(dāng)用戶登錄時(shí),將用戶的登錄狀態(tài)和其他相關(guān)信息存儲(chǔ)在服務(wù)器端,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • php多功能圖片處理類分享(php圖片縮放類)

    php多功能圖片處理類分享(php圖片縮放類)

    本文提供的php類用于完成圖片縮放,水印添加,當(dāng)水印圖超過目標(biāo)圖片尺寸時(shí),水印圖能自動(dòng)適應(yīng)目標(biāo)圖片而縮小,當(dāng)水印圖超過目標(biāo)圖片尺寸時(shí),水印圖能自動(dòng)適應(yīng)目標(biāo)圖片而縮小,需要的朋友可以參考下
    2014-03-03
  • PHP實(shí)現(xiàn)隨機(jī)生成水印圖片功能

    PHP實(shí)現(xiàn)隨機(jī)生成水印圖片功能

    這篇文章主要為大家詳細(xì)介紹了PHP生成隨機(jī)水印圖片的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Symfony2學(xué)習(xí)筆記之控制器用法詳解

    Symfony2學(xué)習(xí)筆記之控制器用法詳解

    這篇文章主要介紹了Symfony2控制器用法,詳細(xì)分析了Symfony控制器的功能,實(shí)現(xiàn)技巧與相關(guān)技術(shù)細(xì)節(jié),需要的朋友可以參考下
    2016-03-03
  • ThinkPHP5郵件發(fā)送服務(wù)封裝(可發(fā)附件)

    ThinkPHP5郵件發(fā)送服務(wù)封裝(可發(fā)附件)

    這篇文章主要介紹了ThinkPHP5封裝郵件發(fā)送服務(wù),可發(fā)附件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • php語法檢查的方法總結(jié)

    php語法檢查的方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于php語法檢查的方法的知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • PHP7引入的

    PHP7引入的"??"和"?:"的區(qū)別講解

    今天小編就為大家分享一篇關(guān)于PHP7引入的"??"和"?:"的區(qū)別講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • php 獲取xml接口數(shù)據(jù)的處理方法

    php 獲取xml接口數(shù)據(jù)的處理方法

    今天小編就為大家分享一篇php 獲取xml接口數(shù)據(jù)的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • ThinkPHP5&5.1實(shí)現(xiàn)驗(yàn)證碼的生成、使用及點(diǎn)擊刷新功能示例

    ThinkPHP5&5.1實(shí)現(xiàn)驗(yàn)證碼的生成、使用及點(diǎn)擊刷新功能示例

    這篇文章主要介紹了ThinkPHP5&5.1實(shí)現(xiàn)驗(yàn)證碼的生成、使用及點(diǎn)擊刷新功能,結(jié)合實(shí)例形式詳細(xì)分析了thinkPHP5驗(yàn)證碼具體定義、使用方法及點(diǎn)擊刷新相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • laravel框架添加數(shù)據(jù),顯示數(shù)據(jù),返回成功值的方法

    laravel框架添加數(shù)據(jù),顯示數(shù)據(jù),返回成功值的方法

    今天小編就為大家分享一篇laravel框架添加數(shù)據(jù),顯示數(shù)據(jù),返回成功值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10

最新評(píng)論