微信小程序之支付后调用SDK的异步通知及验证处理订单方法
小程序之后的异步验证和订单处理
$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();
//返回给微信
returntrue;
}catch(Exception$e){
Db::rollback();
returnfasle;
}
}else{
//如果微信返回失败的处理信息,那我们这里依然返回true,向微信表明态度
returntrue;
}
}
//支付成功,减去商品库存
privatefunctionreduceStock($stockStatus)
{
//遍历减去
foreach($stockStatus['pStatusArray']as$v){
//使用tp5的setDec方法
Product::where(['id'=>$v['id']])->setDec('stock',$v['count']);
}
}
//success为真,则订单修改为PAID,如果为假则修改为已支付,但订单未处理的状态,对应枚举信息修改
privatefunctionupdateOrderStatus($orderID,$success)
{
$status=$success?OrderStatusEnum::PAID:OrderStatusEnum::PAID_BUT_OUT_OF;
Order::where(['id'=>$orderID])->update(['status'=>$status]);
}
}
控制器中如下:
publicfunctionreceiveNotify()
{
//1:检查库存量防止超卖
//2:更新status状态
//3:减库存
//如果成功处理,返回成功处理信息,否则返回没有成功处理信息
$notify=newWxNotify();
$notify->handle();
}
以上这篇微信小程序之支付后调用SDK的异步通知及验证处理订单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。