public function actionEpayBg() { $db_ext = new DbExt(); $data = $_GET; $msg = ''; $error_receiver = ''; if ($data['mode'] == "receiver") { $mode = Yii::app()->functions->getOptionAdmin('admin_mode_epaybg'); if ($mode == "sandbox") { $min = Yii::app()->functions->getOptionAdmin('admin_sandbox_epaybg_min'); $secret = Yii::app()->functions->getOptionAdmin('admin_sandbox_epaybg_secret'); } else { $min = Yii::app()->functions->getOptionAdmin('admin_live_epaybg_min'); $secret = Yii::app()->functions->getOptionAdmin('admin_live_epaybg_secret'); } /*dump($min); dump($secret);*/ $EpayBg = new EpayBg(); $ENCODED = $data['encoded']; $CHECKSUM = $data['checksum']; $hmac = $EpayBg->hmac('sha1', $ENCODED, $secret); /*dump("Check"); dump($CHECKSUM); dump($hmac);*/ //if ($hmac == $CHECKSUM) { $data_info = base64_decode($ENCODED); $lines_arr = split("\n", $data_info); $info_data = ''; //dump($lines_arr); if (is_array($lines_arr) && count($lines_arr) >= 1) { foreach ($lines_arr as $line) { if (!empty($line)) { $payment_info = explode(":", $line); $invoice_number = str_replace("INVOICE=", '', $payment_info[0]); $status = str_replace("STATUS=", '', $payment_info[1]); if (preg_match("/PAID/i", $payment_info[1])) { $info_data .= "INVOICE={$invoice_number}:STATUS=OK\n"; Yii::app()->functions->epayBgUpdateTransaction($invoice_number, $status); } else { $info_data .= "INVOICE={$invoice_number}:STATUS=ERR\n"; Yii::app()->functions->epayBgUpdateTransaction($invoice_number, $status); } } } echo $info_data; Yii::app()->functions->createLogs($info_data, "epaybg"); die; } else { $error_receiver = "ERR=Not valid CHECKSUM\n"; } /*} else { $error_receiver="ERR=Not valid CHECKSUM\n"; }*/ if (!empty($error_receiver)) { echo $error_receiver; Yii::app()->functions->createLogs($error_receiver, "epaybg"); } else { Yii::app()->functions->createLogs("none response", "epaybg"); } die; } elseif ($data['mode'] == "cancel") { $msg = t("Transaction has been cancelled"); } elseif ($data['mode'] == "accept") { if ($trans_info = Yii::app()->functions->barclayGetTokenTransaction($data['token'])) { //dump($trans_info); switch ($data['mode']) { case "accept": if ($trans_info['transaction_type'] == "order") { $params_update = array('status' => "pending", 'date_modified' => date('c')); $db_ext->updateData("{{order}}", $params_update, 'order_id', $data['token']); header('Location: ' . websiteUrl() . "/store/receipt/id/" . $data['token']); } else { if ($token_details = Yii::app()->functions->getMerchantByToken($data['token'])) { $db_ext->updateData("{{merchant}}", array('payment_steps' => 3, 'membership_purchase_date' => date('c')), 'merchant_id', $token_details['merchant_id']); header('Location: ' . websiteUrl() . "/store/merchantSignup/Do/thankyou2/token/" . $data['token']); } else { $msg = t("Token not found"); } } break; case "cancel": if ($trans_info['transaction_type'] == "order") { header('Location: ' . websiteUrl() . "/store/"); } else { header('Location: ' . websiteUrl() . "/store/merchantSignup/Do/step3/token/" . $data['token']); } break; } } else { $msg = t("Transaction information not found"); } } if (!empty($msg)) { $this->render('error', array('message' => $msg)); } }
$secret = Yii::app()->functions->getOptionAdmin('admin_live_epaybg_secret'); $page = Yii::app()->functions->getOptionAdmin('admin_live_epaybg_request'); $lang = Yii::app()->functions->getOptionAdmin('admin_live_epaybg_lang'); } $params['MIN'] = $min; $params['INVOICE'] = $payment_ref; $params['AMOUNT'] = $amount_to_pay; $params['CURRENCY'] = adminCurrencyCode(); $params['EXP_TIME'] = date('d.m.Y', strtotime('+5 days')); $params['DESCR'] = $payment_description; $fields['PAGE'] = $page; $fields['LANG'] = $lang; $fields['URL_OK'] = websiteUrl() . "/merchant/epaybg/mode/accept/token/{$my_token}"; $fields['URL_CANCEL'] = websiteUrl() . "/merchant/epaybg/mode/cancel"; $params['AMOUNT'] = $amount_to_pay; $EpayBg = new EpayBg(); $EpayBg->params = $params; $EpayBg->fields = $fields; $EpayBg->min = $min; $EpayBg->secret = $secret; $forms = $EpayBg->generateForms(); /*dump($params); dump($fields);*/ $trans_type = "sms_purchase"; Yii::app()->functions->barclaySaveTransaction($payment_ref, $my_token, $trans_type, $package_id); } else { $error = Yii::t("default", "Sorry but we cannot find what your are looking for."); } ?> <div class="page-right-sidebar payment-option-page"> <div class="main">
$params['MIN'] = $min; $params['INVOICE'] = $payment_ref; $params['AMOUNT'] = $amount_to_pay; $params['CURRENCY'] = adminCurrencyCode(); $params['EXP_TIME'] = date('d.m.Y', strtotime('+5 days')); $params['DESCR'] = $payment_description; $fields['PAGE'] = $page; $fields['LANG'] = $lang; $fields['URL_OK'] = websiteUrl() . "/store/epaybg/mode/accept/token/{$order_id}"; $fields['URL_CANCEL'] = websiteUrl() . "/store/epaybg/mode/cancel"; /*dump($min); dump($secret); dump($params); dump($fields);*/ if (!empty($min) && !empty($secret)) { $EpayBg = new EpayBg(); $EpayBg->params = $params; $EpayBg->fields = $fields; $EpayBg->min = $min; $EpayBg->secret = $secret; $forms = $EpayBg->generateForms(); //save information later get the information $trans_type = 'order'; $param3 = $EpayBg->getEncoded(); Yii::app()->functions->barclaySaveTransaction($payment_ref, $order_id, $trans_type, '', $merchant_id, $param3); } else { $error = t("This merchant has not properly setup payment gateway"); } } else { $error = t("Something went wrong during processing your request. Please try again later."); }