order_no; $orderNoHead = substr($init_order_no, 0, 2); $where = [ 'pay_type' => Order::PAY_TYPE_YUNST_WECHAT_PAY ]; $model = Order::find(); $is_scan = 0; $is_mall = 0; switch ($orderNoHead) { case 'ML': $is_mall = 1; $model = Order::find(); $where = [ 'order_no' => $init_order_no, 'is_delete' => 0, 'trade_status' => Order::ORDER_FLOW_CONFIRM ]; break; case 'AL': //商盟会员购物订单 $model = Order::find(); $where = [ 'order_no' => $init_order_no, 'is_delete' => 0, 'trade_status' => Order::ORDER_FLOW_CONFIRM ]; break; case 'SC': //当面付订单 $model = \app\plugins\scanCodePay\models\Order::find(); $where = [ 'order_no' => $init_order_no, 'is_delete' => 0, 'is_pay' => 1 ]; $is_scan = 1; break; } $order = $model->where($where)->one(); if ($order) { $receivers_share = SharingReceiver::find()->where(['order_no' => $init_order_no]) ->andWhere(['is_pay'=>SharingReceiver::PAY_FAIL]) ->asArray() ->all(); foreach($receivers_share as $receivers_share1){ sleep(1); //开始分账 //这里重新方法调用orderYunst来实现分账 $res = OrderYunst::share($order, $receivers_share1); //通联分账 if ($res['code'] == 0) { $order_id = $res['res']['order_id']; SharingReceiver::updateAll(['updated_at' => time(), 'is_pay' => SharingReceiver::PAY_SUCCESS, 'order_id' => $res['res']['order_id']], ['id' => $receivers_share1['id']]); // $this->saasUserPriceLog($order, [$receivers_share1]); // $this->saasUserPriceLog($order, [$receivers_share1], true); //如果是分账成功自动提现 // $this->autoCash($order_id);//不在分账后再自动分账,变为每天t+1十点半以后在处理提现 }else{ $faildDes = $res['msg']; $faildDes && $faildDes = addslashes('(失败:' . $faildDes . ')'); //分到平台 if($receivers_share1['type'] == 2){ if ($is_scan) { $order_no = OrderNo::getOrderNo(OrderNo::ORDER_SCAN_CODE_PAY); $scan_order = \app\plugins\scanCodePay\models\Order::findOne(['id'=>$order->id]); } else { $order_no_head = OrderNo::ORDER_ALLIANCE; if ($is_mall) { $order_no_head = OrderNo::ORDER_MALL; } $order_no = OrderNo::getOrderNo($order_no_head); $scan_order = \app\models\Order::findOne(['id' => $order->id]); } $scan_order->order_no = $order_no; $scan_order->save(); SharingReceiver::updateAll([ 'updated_at' => time(), 'order_no' => $order_no, 'yunst_order_no'=>$res['res']['yunst_order_no'], 'is_pay' => SharingReceiver::PAY_FAIL, 'err_code' => !empty($res['res']['err_code']) ? $res['res']['err_code'] : $res['msg'], 'err_code_des' => !empty($res['res']['err_code_des']) ? $res['res']['err_code_des'] : $res['msg']], ['id' => $receivers_share1['id']]); $id = \Yii::$app->cache->get('yunst_receiver_fail_id' . $receivers_share1['id']); if ($id && !\Yii::$app->queue->isDone($id)) { \Yii::$app->queue->remove($id); } $id = \queue_push(new \app\jobs\YunstSharingReceiverHandleFailJob(['order_no' => $order_no]), 3600); \Yii::$app->cache->set('yunst_receiver_fail_id' . $receivers_share1['id'], $id); continue; } } } } } catch(\Exception $e) { // \Yii::error($e); debug_log('--------auto-yunst-error---- '.$this->order_no.' ----auto-yunst-error--------' . $e->getMessage() . $e->getFile() . $e->getLine(), 'yunst.log'); } } private function saasUserPriceLog($order, $SharingReceivers = [], $expend = false, $log = '') { try { $log_type = SaasUserPriceLog::LOG_TYPE_INCOME; $remark = ''; if($expend){ $log_type = SaasUserPriceLog::LOG_TYPE_EXPEND; $remark = '-分账成功'; } $log && $remark = $log; foreach ($SharingReceivers as $item) { \Yii::warning(['---- saasUserPriceLog Err11 ----', $item]); if(in_array($item['type'], [SharingReceiver::RECEIVE_MERCHANT_ID])){ continue; } $desc = $item['remark'] . $remark; $saas_id = $item['saas_id']; if(!$saas_id){ if(!$order->is_platform){ $saas_id = $item['user_id']; }else{ $userInfo = User::findOne($item['user_id']); if(!empty($userInfo)){ $saas = SaasUser::findOne(['mobile' => $userInfo->binding]); $saas_id = $saas->id; } } } \Yii::warning(['---- saasUserPriceLog Err22 ----', $saas_id, $item['amount'], $item['from'], $log_type, $order->order_no, $desc]); SaasUserPriceLog::saveLog($saas_id, $item['amount'], $item['from'], $log_type, $order->order_no, $desc); } } catch (\Exception $e) { \Yii::warning('---- saasUserPriceLog Err ----' . __LINE__); } } }