db->beginTransaction(); $paymentOrder = \app\models\PaymentOrder::findOne(['order_no' => $paymentOrder->orderNo, 'notify_status' => [0,2]]); if($paymentOrder == null){ return $this->apiReturnError('支付回调已经处理或不存在'); } $paymentOrder->notify_status = 1; if(!$paymentOrder->save()){ $t->rollBack(); return $this->getModelError($paymentOrder); } //充值订单状态 $rechargeOrder = RechargeOrder::findOne(['order_no' => $paymentOrder->order_no]); if($rechargeOrder == null){ $t->rollBack(); return $this->apiReturnError('充值订单不存在'); } $rechargeOrder->pay_type = $paymentOrder->pay_type; $rechargeOrder->is_pay = 1; $rechargeOrder->pay_time = $paymentOrder->updated_at; if(!$rechargeOrder->save()){ $t->rollBack(); return $this->getModelError($rechargeOrder); } $user = User::findOne(['id' => $rechargeOrder->user_id,'status' => 0,'is_delete' => 0]); //账户余额变动 $type = Balance::TYPE_INCOME; $money = $rechargeOrder->pay_price + $rechargeOrder->send_price; $money = sprintf('%.2f',$money); $desc = "钱包充值"; $order_no = $rechargeOrder->order_no; $order_type = UniqueOrderNo::getOrderTypeByOrderNo($order_no); $ext = ""; $res = Balance::userWalletLog($rechargeOrder->user_id, $type, (float) $money, $desc, $order_type, $order_no, $ext, $rechargeOrder->cx_mch_id,0); if($res['code'] != 0){ $t->rollBack(); return $res; } $user->level_exp += (float)$money; $level_id = Level::checkUpgrade($user->level_id,$user->level_exp); if($level_id !== false){ $user->level_id = $level_id; } if(!$user->save()){ $t->rollBack(); return $this->getModelError($user); } $t->commit(); return $this->apiReturnSuccess(); } }