全网整合营销服务商

营销型网站+SEO优化+关键词快排=一站式服务

免费咨询热线:15959292472

[吴忠seo公司找久澳]微信小程序中支付后调用SDK的异步通知及验证处理订单方

  下面为大家分享一篇微信小程序之支付后调用SDK的异步通知及验证处理订单方法,焦作市小程序开发哪家好具有很好的参考价值,希望对大家有所帮助

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

  

 

  

<?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语句的事务想要操作表记录之前,先向数据库发出请求,对你访问的记录集加锁
 //在这个事务释放这个锁之前◆◁□…,[吴忠seo公司找久澳]其他事务不能对这些数据进行更新操作
 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:减库存
 //如果成功处理,邵阳市小程序制作公司佳木斯市小程序制作公司27
										2020.10
									
									
								
								
									[做淘宝需要seo外包公司吗]分享一个简单的小程序demo
									
										前言 这是一个比较简单的小程序demo,就是简单能记录文字笔记而已,两个月前写的,写好没多久就忙着考试了从我一开始接触小程序到写完这项目用了一天不到的时间,服务器是我自返回成功处理信息,否则返回没有成功处理信息
 $notify = new WxNotify()◇▼;
 $notify->handle()□=◆;
 }

 

  以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

  相关推荐•▼▷▼:

  微信小程序中购物车功能的实现
 

  微信小程序中页面间通信的方式
 

  微信小程序中定义全局数据和函数复用及模版的介绍
 

  

 

  以上就是微信小程序中支付后调用SDK的异步通知及验证处理订单方法的详细内容,更多请关注久澳传媒编程栏目其它相关文章!

[吴忠seo公司找久澳]微信小程序中支付后调用SDK的异步通知及验证处理订单方法

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。