php怎么看回调的异步通知的数据_php处理微信支付回调[【异步】信息处理(版本sdk_v3.0.10)...

本文介绍了在使用微信支付SDK_v3.0.10时如何处理回调的异步通知数据。当接收到回调并判断结果成功时,通过数据库事务更新订单状态为已支付,并根据订单商品减少库存。如果在处理过程中发生异常,则回滚事务并请求微信重新发送通知。
摘要由CSDN通过智能技术生成

在新版本的微信支付SDK中(本人使用的是:php_sdk_v3.0.10),微信支付回调返回的是数据类型是:对象。在一般的小程序商城中,接收微信支付回调后,就是对订单支付状态的更改,从未支付->已经支付,并对相对应产品的库存量的减少客户购买的产品数量,以下是参考代码:public function NotifyProcess($objData, $config, &$msg)

{

$data = $objData->GetValues();

if ($data['result_code'] == 'SUCCESS') {

$orderNo = $data['out_trade_no'];

Db::startTrans();

try {

$order = OrderModel::where('order_no', '=', $orderNo)->lock(true)->find();

if ($order->status == 1) {

$service = new OrderService();

$stockStatus = $service->checkOrderStock($order->id);

if ($stockStatus['pass']) {

$this->updateOrderStatus($order->id, true);

$this->reduceStock($stockStatus);

} else {

$this->updateOrderStatus($order->id, false);

}

}

Db::commit();

} catch (Exception $ex) {

Db::rollback();

Log::error($ex);

// 如果出现异常,向微信返回false,请求重新发送通知

return false;

}

}

return true;

}

其中更改订单状态:private function updateOrderStatus($orderID, $success)

{

$status = $success ? OrderStatusEnum::PAID : OrderStatusEnum::PAID_BUT_OUT_OF;

OrderModel::where('id', '=', $orderID)->update(['status' => $status]);

}

减少产品库存量:private function reduceStock($stockStatus)

{

foreach ($stockStatus['pStatusArray'] as $singlePStatus) {

Product::where('id', '=', $singlePStatus['id'])

->setDec('stock', $singlePStatus['counts']);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值