微信小程序服务器支付sdk,微信小程序之支付后如何调用SDK的异步通知
微信小程序之支付后如何调用SDK的异步通知
发布时间:2021-07-05 10:47:33
来源:亿速云
阅读:57
作者:小新
这篇文章主要介绍微信小程序之支付后如何调用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语句的事务想要操作表记录之前,先向数据库发出请求,对你访问的记录集加锁
//在这个事务释放这个锁之前,其他事务不能对这些数据进行更新操作
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的异步通知”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
微信小程序服务器支付sdk,微信小程序之支付后如何调用SDK的异步通知相关推荐
- win7下搭建小程序服务器,重磅!微信PC端支持小程序直接开启 适配Win7及以上系统...
原标题:重磅!微信PC端支持小程序直接开启 适配Win7及以上系统 腾讯科技讯 8月9日,腾讯科技在"微信开放社区"发现,微信正在测试"PC端支持打开小程序"能 ...
- win下搭建小程序服务器,win下搭建小程序服务器
win下搭建小程序服务器 内容精选 换一换 云硬盘挂载至云服务器后,需要登录云服务器初始化云硬盘,即格式化云硬盘,之后云硬盘才可以正常使用.云耀云服务器磁盘初始化的操作方法与ECS相同,本节操作介绍使 ...
- 微赞 小程序 服务器 配置,微赞小程序平台
微赞小程序平台 内容精选 换一换 锁与等待分析基于Linux perf工具的采样数据,对glibc和开源软件(如MySQL.Open MP)的锁与等待函数(包括sleep.usleep.mutex.c ...
- 小程序修改服务器域名多久生效,小程序 服务器域名配置多久生效
小程序 服务器域名配置多久生效 内容精选 换一换 依照配置并导入样例工程中导入和修改样例后,即可在开发环境中,右击"JDBCExample.java",选择"Run 'J ...
- 小程序服务器与系统维护协议,小程序后台维护
小程序后台维护 内容精选 换一换 您可以选择华为云搭建您的网站,华为云提供丰富的建站资源和建站方式,如表1所示. 在登录用户门户.忘记密码.二次验证.Radius认证.重置密码场景,OneAccess ...
- 微信鉴权服务器地址,授权 | 微信开放文档
# 授权 部分接口需要经过用户授权同意才能调用.我们把这些接口按使用范围分成多个 scope ,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用. 此 ...
- 微信加菲猫连接服务器失败,加菲猫微信表情包
这是加菲猫微信表情包下载,加菲猫微信表情包是一组最近的热门表情包,这是近期网上大家使用比较多的一组表情,小编整理了一下,可以让更多的小伙伴使用,欢迎前来下载!动漫人物加菲猫是一只超级慵懒的小黄猫,平常 ...
- 微信平台 和服务器什么区别,微信公众平台是选择服务号还是订阅号?两者有什么区别?...
作为微信营销和微信运营人员,必须对微信营销基础和微信营销的一些技巧都要有所了解;不然,新手将难以从微信入手开始微信营销之路.下面小编为大家介绍微信公众平台是选择服务号还是订阅号以及两者的区别,一起来看 ...
- 微信卡商服务器搭建,关于微信养号中的卡商、号商和通用规则
自9月份以来,微信是越来越变态了,人所皆知的封号问题非常的多.不管是新号批量封,还是动辄老号也被封,基本原因都是"登陆环境异常",所以微信号市场也是水涨船高,价格翻了好几倍.至于腾 ...
最新文章
- GitHub开源的吃鸡版超级玛丽
- redis配置开机启动
- 长连接、短连接、短轮询、长轮询
- python 做个创越火线挂_一日一技:用Python做个能挂墙上的大钟表
- UA MATH523A 实分析3 积分理论例题 Fubini定理计算一元积分
- np.random.seed的有效期及固定的种子会有固定的顺序
- 在Android Native层中创建Java虚拟机实例
- 50个linux指令,每天学一个 Linux 命令(50):date
- 算法设计与分析——贪心算法——背包问题
- ubuntu14.04安装 R16 Tina Linux SDK
- ElasticSearch-JDBC驱动 像使用SQL一样使用ElasticSearch查询语句
- [转]char数组赋值
- 如何生成每秒百万级别的 HTTP 请求
- NetBeans 时事通讯(刊号 # 143 - Apr 19, 2011)
- JasperReports学习(1)
- 用python爬取链家二手房楼盘
- xci转化nsp_4nxci软件下载[xci游戏转nsp格式工具]v2.10-k73游戏之家
- [2021年新鲜出炉]K8s工程师资料合辑,书籍推荐,面试题,精选文章,开源项目,PPT,视频,大厂资料
- 2019第十届蓝桥杯——I.胖子迷宫
- CSS RGB颜色设置
热门文章
- java 验证时间格式 效率_有关Java中日期格式化的效率实录
- 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H)
- HDU 2643 Rank:第二类Stirling数
- android开发之后端云bmob的使用
- Python学习(九)IO 编程 —— 文件夹及文件操作
- ubuntu下解决wireshark权限问题
- CSS英文单词强制换行
- 自动生成三层结构代码(2)--生成实体类
- 如果人类的历史共有100万年,假设这等于一天
- 从图片搜索到人脸识别,CV正在成为“互动营销”领域的【硬核技术】