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); } //账户余额变动 $type = Balance::TYPE_INCOME; $money = $rechargeOrder->pay_price + $rechargeOrder->send_price; $money = sprintf('%.2f',$money); if($rechargeOrder->send_price == 0){ $desc = "用户自助充值{$money}元"; } else { $desc = "用户参与自助充值{$rechargeOrder->pay_price}元赠送{$rechargeOrder->send_price}元,实际到账{$money}元"; } $order_no = $rechargeOrder->order_no; $order_type = UniqueOrderNo::getOrderTypeByOrderNo($order_no); $ext = ""; $res = Balance::userWalletLog($rechargeOrder->user_id, $type, $money, $desc, $order_type, $order_no, $ext, $rechargeOrder->cx_mch_id); if($res['code'] != 0){ $t->rollBack(); return $res; } $t->commit(); return $this->apiReturnSuccess(); } }