Example #1
0
 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;
 }