public function createTransOrderForBatch($fields) { $longId = CommonUtil::longId(); //$batchNo = $longId . sprintf('%03s', $fields['channel']) . sprintf('%02s', $fields['gateway']) . mt_rand(100, 999) ; $batchNo = date('ymdHis') . mt_rand(100, 999); $requestData = json_decode($fields['request_data'], true); foreach ($requestData as $field) { if (!in_array($fields['gateway'], $this->_allowTransGateway)) { throw new PayException(ErrorCode::ERR_GATEWAY_FAIL, '该gateway不允许提现'); } $validation = new TransValidator($field); if (!$validation->passes(TransValidator::$transDetailRule)) { throw new PayException(ErrCode::ERR_PARAM, $validation->errors); } if ($fields['gateway'] == PayVars::GATEWAY_YEEPAY) { if (!isset($field['bank_code']) || !isset(PayBankVars::$yeepayBankAlis[$field['bank_code']])) { throw new PayException(ErrCode::ERR_PARAM, '银行编码错误!'); } } $account = AccountBiz::getInstance()->getOrCreateAccount($field['user_id'], $fields['channel']); $primaryId = CommonUtil::LongIdIncrease($longId); $merTransNo = $primaryId; $insertArr[] = ['id' => $primaryId, 'user_id' => $field['user_id'], 'account_id' => $account['id'], 'mer_trans_no' => null !== ($localEnv = \GlobalConfig::getLocalEnv()) ? $merTransNo . $localEnv : $merTransNo, 'batch_no' => $batchNo, 'trans_amount' => $field['trans_amount'], 'create_time' => time(), 'person_name' => $field['user_name'], 'person_account' => $field['user_account'], 'channel' => $fields['channel'], 'gateway' => $fields['gateway'], 'callback_url' => $fields['callback_url'], 'subject' => $fields['subject'], 'body' => isset($field['body']) ? $field['body'] : '', 'mobile_no' => isset($field['mobile']) ? $field['mobile'] : '', 'bank_code' => isset($field['bank_code']) ? $field['bank_code'] : '', 'busi_trans_no' => isset($field['busi_trans_no']) ? $field['busi_trans_no'] : '']; } $trans = new TransModel(); if (true !== $trans->insert($insertArr)) { throw new PayException(ErrCode::ERR_SYSTEM, '数据库保存失败'); } return $batchNo; }