db->beginTransaction(); try { if (empty($trade_info)) throw new \Exception('传递进来的流水数据为空'); $fill_order = CloudStockFillOrder::find() // ->where(['trade_id' => $trade_info['trade_id'], 'order_no' => $trade_info['order_no'], 'is_pay' => CloudStockEnum::FILL_STATUS_NOT_PAY]) ->where(['trade_id' => $trade_info['trade_id'], 'order_no' => $trade_info['order_no']]) ->one(); if (empty($fill_order)) throw new \Exception('云库存订单不存在或者已经支付。trade_info => ' . json_encode(ArrayHelper::toArray($trade_info), JSON_UNESCAPED_UNICODE)); $fill_order->is_pay = CloudStockEnum::FILL_STATUS_PAY; $fill_order->payment_type = $trade_info['pay_type']; $res = $fill_order->save(); if (false === $res) throw new \Exception($fill_order->getErrorMessage()); $stock_agent = CloudStockAgent::findOne(['user_id'=>$fill_order['user_id'],'status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]); if(!empty($stock_agent)){ $stock_agent->fill_num+=$fill_order['num']; $stock_agent->save(); } $t->commit(); // 触发云库存订单支付事件 $event = new FillOrderPaidEvent($fill_order->mall_id); $data = ['id' => $fill_order->id]; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); return true; } catch (\Exception $e) { $t->rollBack(); $msg = '云库存支付回调处理失败:' . $e->getMessage() . ', file: ' . $e->getFile() . ', line: ' . $e->getLine(); \Yii::error($msg);\Yii::getLogger()->flush(true); return false; } } }