load->model('frontend/user_model', 'objUserModel'); $this->load->helper('lockfile'); $this->load->model('services_model'); $this->load->helper('language'); $this->lang->load('messages', 'message'); } public function recharge_card() { $trackingFile = '/srv/www/sbg/log/recharge_card.log'; error_log ('--START CARD CHARGE--'."\n", 3, $trackingFile); error_log ('TIME: '.date('Y-m-d H:i:s')."\n", 3, $trackingFile); $userID = $this->uri->segment(4); $input = $this->input->post(); $cardSerial = $input['card_serial']; $pinCard = $input['pin_card']; $isLocked = 0; error_log ('$cardSerial: '.$cardSerial."\n", 3, $trackingFile); error_log ('$cardSerial: '.$pinCard."\n", 3, $trackingFile); error_log ('$userID: '.$userID."\n", 3, $trackingFile); $user = $this->objUserModel->get_user_by_id($userID); $lockFilePreFix = $user['cellphone']; $lockFilePath = $this->config->item('topup_lock_path'); $maxReach = $this->config->item('topup_lock_max_reach'); $timeToUnlock = $this->config->item('topup_unlock_minute'); error_log ('Phone num: '.$user['cellphone']."\n", 3, $trackingFile); error_log ('Locked: '.($isLocked ? 'LOCKED':'UNLOCKED')."\n", 3, $trackingFile); $isLocked = createLockFile($lockFilePreFix, $maxReach, $timeToUnlock, $lockFilePath, TRUE); $chargCard = _SBG_CARD_PAY_SUCCESS; $result = array(); $result['maxReach'] = $maxReach; $result['timeToUnlock'] = $timeToUnlock; $result['isLocked'] = $isLocked; $result['tmp'] = $maxReach; //$lockedMsg = 'Quý vị đã nhập sai thông tin thẻ cào '. $maxReach .' lần liên tiếp.
Xin chờ '. $timeToUnlock .' phút sau để thao tác lại!'; $aryPatterns = array('/:maxReach:/', '/:timeToUnlock:/'); $lockedMsg = preg_replace($aryPatterns, array($maxReach, $timeToUnlock), lang('_SBG_CHARGING_FROM_CARD_LOCKED_MSG')); //$chargErrMsg = 'Mã thẻ hoặc Serial không đúng hoặc đã được sử dụng. Quý vị vui lòng kiểm tra lại!'; $chargErrMsg = lang('_SBG_CHARGING_FROM_CARD_FAIL_MSG'); $errMsg = ''; $cardValue = 0; $updatedTime = date('Y-m-d H:i:s'); $status = -1; if ($isLocked == 0) { $aryParams = array( 'EWalletID' => $this->config->item('EWalletID'), 'CardSerial' => $cardSerial, 'PinCard' => $pinCard, ); $aryResult = array(); $chargCard = $this->services_model->cardPaidProcess($aryParams, $aryResult); $status = $chargCard; error_log ('CALL TOPUP SERVICE: '.($status ? 'SUCCESS':'NOT SUCCESS')."\n", 3, $trackingFile); error_log ('CALL TOPUP SERVICE DATA: '.var_export($aryResult, TRUE)."\n", 3, $trackingFile); $paidType = 2; $amount = $aryResult['TransactionAmount']; $cardValue = $amount; $paidTime = date('Y-m-d H:i:s'); $user['acc_balanced'] = $user['acc_balanced'] + $amount; $user['updated_time'] = $updatedTime; if ($amount > 0){ $updateData = array('acc_balanced' => $user['acc_balanced'], 'updated_time' => $user['updated_time'] ); $updated = $this->objUserModel->updateUser($userID, $updateData); error_log ('UPDATE ACCOUNT SUCCESS: '.($updated ? 'SUCCESS':'NOT SUCCESS')."\n", 3, $trackingFile); } $result['success'] = $chargCard; if ($chargCard == _SBG_CARD_PAY_SUCCESS){ //$result['username'] = $user['cellphone']; $result['acc_balanced'] = $user['acc_balanced']; //$result['amount'] = $amount; $aryPatterns = array('/:amount:/', '/:username:/', '/:acc_balanced:/'); $result['message'] = preg_replace($aryPatterns, array($amount, $user['cellphone'], $user['acc_balanced']), lang('_SBG_CHARGING_FROM_CARD_SUCCESS_MSG')); $paidResult = $this->objUserModel->insertPaidlog($user['cellphone'], $user['cellphone'], $paidType, $amount, $paidTime); error_log ('INSERT PAID LOG: '.var_export($paidResult, TRUE)."\n", 3, $trackingFile); releaseLockFile($lockFilePreFix, $lockFilePath); } else { $isLocked = createLockFile($lockFilePreFix, $maxReach, $timeToUnlock, $lockFilePath, FALSE); $errMsg = $isLocked == 1 ? $chargErrMsg .'
'.$lockedMsg : $chargErrMsg; } }else if ($isLocked == 1) { $errMsg = $lockedMsg; $result['success'] = _SBG_CARD_PAY_FAIL; $status = 0; } $cardLogResult = $this->objUserModel->insertCardlog($user['cellphone'],$userID, $status, $pinCard, $cardSerial, $cardValue, $updatedTime); error_log ('INSERT CARD LOG: '.var_export($cardLogResult, TRUE)."\n", 3, $trackingFile); $result['us_id'] = $userID; $result['UPDATED_DATA'] = $user; $result['errMsg'] = $errMsg; echo json_encode($result); error_log ('RETURN JSON: '.json_encode($result)."\n", 3, $trackingFile); error_log ('--FINISH CARD CHARGE--'."\n", 3, $trackingFile); } }