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); } //订单状态 $order = Order::findOne(['order_no' => $paymentOrder->order_no]); if($order == null){ $t->rollBack(); return $this->apiReturnError('订单不存在'); } $order->pay_type = $paymentOrder->pay_type; $order->is_pay = 1; $order->pay_time = time(); $order->total_pay_price = $paymentOrder->amount; $order->status = 0; if(!$order->save()){ $t->rollBack(); return $this->getModelError($order); } Goods::handleOrderPayAfter($order->id, $order->cx_mch_id); $ball_arm = UserBallArm::findOne(['id' => $order->use_user_coupon_id,'is_delete' => 0]); if(!empty($ball_arm)){ $ball_arm->status = 2; if(!$ball_arm->save()){ $t->rollBack(); return $this->getModelError($ball_arm); } } $t->commit(); $earnings = StoreEarnings::findOne(['order_id' => $order->id,'user_id' => $order->user_id,'is_delete' => 0]); if(!empty($earnings) && !empty($earnings->id) && !empty($earnings->card_id) && !empty($earnings->money)){ $param['id'] = $earnings->id; $param['card_id'] = $earnings->card_id; $param['money'] = $earnings->money; $param['tranDate'] = date('Ymd', $order->pay_time); //分账 $cardForm = new CardFrom(); $multi = $cardForm->psOrder($paymentOrder,$param); if($multi['code'] == 0){ $earnings->status = 1; $param2['merOrderNo'] = $multi['data']['merOrderNo']; $param2['psMerOrderNo'] = $multi['data']['psMerOrderNo']; $param2['order_no'] = $order->order_no; $query = $cardForm->psResultQuery($param2); if($query['code'] == 0){ if($query['data']['status'] == '02'){ $earnings->status = 3; }elseif ($query['data']['status'] == '03'){ $earnings->status = 2; }else{ $earnings->status = 1; } $earnings->save(); } } } return $this->apiReturnSuccess(); } }