麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 課堂 > 小程序 > 正文

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

2020-03-22 18:24:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
下面小編就為大家分享一篇html' target='_blank'>微信小程序之支付后調(diào)用SDK的異步通知及驗(yàn)證處理訂單方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助

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

 ?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(); //判斷訂單狀態(tài) //在這里可以進(jìn)行對(duì)數(shù)據(jù)庫(kù)進(jìn)行所機(jī)制 //簡(jiǎn)單說(shuō),當(dāng)一個(gè)執(zhí)行sql語(yǔ)句的事務(wù)想要操作表記錄之前,先向數(shù)據(jù)庫(kù)發(fā)出請(qǐng)求,對(duì)你訪問(wèn)的記錄集加鎖 //在這個(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-  //如果庫(kù)存量有,更新訂單狀態(tài),以及減去商品庫(kù)存 if ($stockStatus[ pass ]) { $this- updateOrderStatus($order- id, true); $this- reduceStock($stockStatus); //如果沒(méi)有庫(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ù)存 //如果成功處理,返回成功處理信息,否則返回沒(méi)有成功處理信息 $notify = new WxNotify(); $notify- handle(); }

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

您可能感興趣的文章:

PHP 使用Echarts生成數(shù)據(jù)統(tǒng)計(jì)報(bào)表的實(shí)現(xiàn)

PHP根據(jù)手機(jī)號(hào)判斷運(yùn)營(yíng)商

Laravel5.2使用Captcha生成驗(yàn)證碼實(shí)現(xiàn)登錄

以上就是微信小程序之支付后調(diào)用SDK的異步通知及驗(yàn)證處理訂單方法的詳解的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 九九热在线观看视频 | 欧美性生活视频免费 | 亚洲综合无码一区二区 | 九九精品在线播放 | 污黄视频在线播放 | av久草| 成年人在线视频 | 黄色网址免费入口 | 久久久久北条麻妃免费看 | 亚洲欧美不卡视频 | wwwxxx视频 | 久久久久亚洲精品 | 久久精品免费国产 | 91国内精品久久久久免费影院 | 激情五月少妇a | 国产一级αv片免费观看 | 久久毛片免费 | 亚洲一区二区中文字幕在线观看 | 日韩精品hd | 色视频一区二区 | 最近免费观看高清韩国日本大全 | 日韩三级伦理在线观看 | 精品无吗乱吗av国产爱色 | 天天操综 | 久久tv免费国产高清 | 免费一级毛片在线播放视频老 | 日本成年免费网站 | 国产1区视频 | 国产免费传媒av片在线 | 久久精品亚洲一区二区 | 高清在线国产 | 99riav视频一区二区 | 日本高清在线免费 | 在线观看视频日本 | 成人午夜视频在线观看免费 | 精品国产视频一区二区三区 | 91短视频版高清在线观看免费 | 成人一区三区 | 国产精品99久久久久久久女警 | 亚洲欧美日韩一区二区三区在线观看 | 免费在线观看国产精品 |