| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- /**
- * 微信商家转账到零钱-定时任务,修改对应状态
- */
- namespace console\controllers;
- use common\models\user\UserWithdrawLog;
- use yii\console\Controller;
- use yii\console\ExitCode;
- use common\models\wechat\WechatTransferLog;
- class WechatTransferCrontabController extends Controller
- {
- /**
- * 微信批次单号查询批次单
- * @desc 可设置10分钟查询一次
- * @return int
- */
- public function actionCheckTimer()
- {
- try {
- $list = WechatTransferLog::find()->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;
- }
- }
- }
|