where(['batch_status' => ['WAIT_PAY','ACCEPTED','PROCESSING','']])->limit(10)->all(); $fail_reason = WechatTransferLog::FAIL_REASON; foreach($list as $val) { /** @var WechatTransferLog $val */ $config = \Yii::$app->services->pay->getConfig($val->mall_id,'wechat'); if(!$config){ continue; } $config['app_id'] = ''; $config['mini_program_app_id'] = $config['miniprogram_appid']??''; $batch_info = \Yii::$app->payment->wechat($config)->queryBatches($val); if($batch_info && !empty($batch_info['transfer_detail_list']) && $val->cash_id > 0){ //如果批次状态等于 FINISHED , 且明细状态等于FAIL , 需要将提现设置为失败 if($batch_info['transfer_batch']['batch_status'] == 'FINISHED' && $batch_info['transfer_detail_list'][0]['detail_status'] == 'FAIL'){ $cash_id = $val->cash_id; $cash_info = UserWithdrawLog::findOne(['id' => $cash_id,'status'=> UserWithdrawLog::STATUS_ALREADY_TRANS]); if($cash_info){ $transfer_detail = $val->transfer_detail; $transfer_detail = json_decode($transfer_detail,true); $cash_info->status = UserWithdrawLog::STATUS_AGREE; $cash_info->transfer = $fail_reason[$transfer_detail['fail_reason']] ?? $transfer_detail['fail_reason']; $content = $cash_info->content ? json_decode($cash_info->content,true) : []; $content['remit_content'] = $cash_info->transfer ; $cash_info->content = json_encode($content); if(!$cash_info->save()){ \Yii::error('UserWithdrawLog status save'.$cash_info->getErrorMessage()); } } } } } echo 'success'; return ExitCode::OK; } catch (\Exception $e) { echo $e->getMessage(); $this->stderr('Error: ' . ExitCode::getReason(ExitCode::UNSPECIFIED_ERROR)); return ExitCode::UNSPECIFIED_ERROR; } } }