/includes/modules/payment/smscoin.php
PHP | 253 lines | 132 code | 29 blank | 92 comment | 14 complexity | 3ea175f06bb9effd505e4b319dd9cd94 MD5 | raw file
- <?php
- /*
- =====================================================
- OSCommerce plugin - by SmsCoin
- -----------------------------------------------------
- http://smscoin.com
- -----------------------------------------------------
- Copyright (c) 2008 SmsCoin
- =====================================================
- Файл: smscoin.php
- -----------------------------------------------------
- Purpose: payment module via SMS message
- =====================================================
- */
- include_once(dirname(__FILE__)."/../../languages/$_SESSION[language]/modules/payment/smscoin.php");
- ###
- # MD5 sign
- # Функция генерации md5 подписи
- ###
- function ref_sign() {
- $params = func_get_args();
- $prehash = implode("::", $params);
- return md5($prehash);
- }
- class smscoin extends base {
- var $code, $title, $description, $enabled;
- ###
- # Constructor
- # Функция конструктор
- ###
- function smscoin() {
- global $order;
- $this->code = 'smscoin';
- $this->title = MODULE_PAYMENT_SMSCOIN_TEXT_TITLE;
- $this->description = MODULE_PAYMENT_SMSCOIN_TEXT_DESCRIPTION;
- $this->sort_order = MODULE_PAYMENT_SMSCOIN_SORT_ORDER;
- $this->enabled = ((MODULE_PAYMENT_SMSCOIN_STATUS == 'True') ? true : false);
- if (is_object($order)) $this->update_status();
- $this->form_action_url = MODULE_PAYMENT_SMSCOIN_HTTP_ADDR;
- }
- ###
- # Update status
- # Функция обновления статуса
- ###
- function update_status() {
- global $order, $db;
- if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_SMSCOIN_ZONE > 0) ) {
- $check_flag = false;
- $check_query = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_SMSCOIN_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
- while (!$check_query->EOF) {
- if ($check_query->fields['zone_id'] < 1) {
- $check_flag = true;
- break;
- } elseif ($check_query->fields['zone_id'] == $order->billing['zone_id']) {
- $check_flag = true;
- break;
- }
- $check_query->MoveNext();
- }
- if ($check_flag == false) {
- $this->enabled = false;
- }
- }
- }
- ###
- # Validation
- # Функция валидации
- ###
- function javascript_validation() {
- return false;
- }
- ###
- # Select
- # Функция выделения
- ###
- function selection() {
- return array('id' => $this->code,
- 'module' => $this->title);
- }
- ###
- # Pre confirmation
- # Функция проверки подтверждения
- ###
- function pre_confirmation_check() {
- return false;
- }
- ###
- # Confirmation
- # Функция подтверждения
- ###
- function confirmation() {
- global $_POST;
- return array('title' => MODULE_PAYMENT_SMSCOIN_TEXT_DESCRIPTION);
- }
- ###
- # Show payment button
- # Функция генерации кнопки
- ###
- function process_button() {
- global $order, $currencies, $currency, $db;
- $products = '';
- foreach($order->products as $key => $product) {
- $products .= $product['name'];
- if (@$product['attributes'] !='') {
- foreach($product['attributes'] as $key => $attribut) {
- $products .= ' (' . $attribut['option'].': ' . $attribut['value'] . ')';
- }
- }
- }
- $currency = $_SESSION['currency'];
- $amount = number_format($order->info['total'] * $currencies->get_value($currency), 2);
- $clear_amount = '0';
- $crc = ref_sign(MODULE_PAYMENT_SMSCOIN_ID,$_SESSION['customer_id'],$amount,$clear_amount,$products,MODULE_PAYMENT_SMSCOIN_SECRET_KEY);
- $process_button_string = zen_draw_hidden_field('s_purse', MODULE_PAYMENT_SMSCOIN_ID) ."\n".
- zen_draw_hidden_field('s_order_id', $_SESSION['customer_id']) ."\n" .
- zen_draw_hidden_field('s_amount', $amount) ."\n".
- zen_draw_hidden_field('s_clear_amount', $clear_amount) ."\n" .
- zen_draw_hidden_field('s_description', $products) ."\n" .
- zen_draw_hidden_field('s_sign', $crc) ."\n";
- $order->info['payment_module_code'] = $_SESSION['payment'];
- $order->info['payment_method'] = $_SESSION['payment'];
- $order_total_modules = new order_total;
- $order_totals = $order_total_modules->pre_confirmation_check();
- $order_totals = $order_total_modules->process();
- $insert_id = $order->create($order_totals, 2);
- $order->create_add_products($insert_id);
- $_SESSION['cart']->reset(true);
- return $process_button_string;
- }
- ###
- # Payment proccess
- # Функция препроцесса
- ###
- function before_process() {
- global $_POST;
- $purse = $_POST["s_purse"]; // sms:bank id идентификатор смс:банка
- $order_id = $_POST["s_order_id"]; // operation id идентификатор операции
- $amount = $_POST["s_amount"]; // transaction sum сумма транзакции
- $clear_amount = $_POST["s_clear_amount"]; // billing algorithm алгоритм подсчета стоимости
- $s_status = $_POST["s_status"]; // Status 1 - delivered, 0 - Panding статус платежа: 1 - прошел, 0 - не прошел.
- $s_sign = $_POST["s_sign"]; // MD5-хэш строки, MD5 - hash
- // Check proccess
- // если проверка платежа неудачна - вернуться к выбору оплаты
- if ($s_sign != ref_sign(MODULE_PAYMENT_SMSCOIN_SECRET_KEY,$purse,$order_id,$amount,$clear_amount,$s_status)) {
- zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . MODULE_PAYMENT_SMSCOIN_TEXT_ERROR_MESSAGE, 'SSL', true, false));
- }
- // Allow
- // проверка платежа удачна
- return false;
- }
- ###
- # After proccess
- # Функция вызова после процесса
- ###
- function after_process() {
- global $insert_id, $db;
- }
- ###
- # Get error
- # Функция ошибки
- ###
- function get_error() {
- return false;
- }
- ###
- # Check
- # Функция проверки
- ###
- function check() {
- global $db;
- if (!isset($this->_check)) {
- $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_SMSCOIN_STATUS'");
- $this->_check = $check_query->RecordCount();
- }
- return $this->_check;
- }
- ###
- # installation of module payment method in the system
- # Функция для инсталляции модуля оплаты в систему
- ###
- function install() {
- global $db;
- // following payment method switched on or off
- // включен или выключен данный модуль оплаты
- $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('".MODULE_PAYMENT_SMSCOIN_STATUS_TITLE."', 'MODULE_PAYMENT_SMSCOIN_STATUS', 'True', '".MODULE_PAYMENT_SMSCOIN_STATUS_DESC."', '6', '1', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
- // allowed countries where the following module is accessible
- // разрешённые страны, для которых будет доступен данный модуль оплаты
- $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('".MODULE_PAYMENT_SMSCOIN_ALLOWED_TITLE."', 'MODULE_PAYMENT_SMSCOIN_ALLOWED', 'RU', '".MODULE_PAYMENT_SMSCOIN_ALLOWED_DESC."', '6', '2', now())");
- // your sms bank identification in the system
- // идентификатор вашего смс:банка в системе
- $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('".MODULE_PAYMENT_SMSCOIN_ID_TITLE."', 'MODULE_PAYMENT_SMSCOIN_ID', '123', '".MODULE_PAYMENT_SMSCOIN_ID_DESC."', '6', '3', now())");
- // your sms bank secret key
- // секретный ключ вашего смс:банка
- $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('".MODULE_PAYMENT_SMSCOIN_SECRET_KEY_TITLE."', 'MODULE_PAYMENT_SMSCOIN_SECRET_KEY', '', '".MODULE_PAYMENT_SMSCOIN_SECRET_KEY_DESC."', '6', '4', now())");
- // payment zones; enables access to payment method from that specific zone only
- // зоны оплаты; данный модуль оплаты доступен только для выбранной зоны
- $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title,configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('".MODULE_PAYMENT_SMSCOIN_ZONE_TITLE."', 'MODULE_PAYMENT_SMSCOIN_ZONE', '0', '6', '4', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
- // order status, which will be specified after the payment
- // cтатус заказа, который будет установлен после оплаты
- $db->Execute("insert into " . TABLE_CONFIGURATION . " ( configuration_title, configuration_key, configuration_value, configuration_description ,configuration_group_id, sort_order, set_function, use_function, date_added) values ('".MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_ID_TITLE."','MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_ID', '0','".MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_ID_DESC."' ,'6', '5', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())");
- // cтатус заказа, который будет установлен до оплаты
- $db->Execute("insert into " . TABLE_CONFIGURATION . " ( configuration_title, configuration_key, configuration_value, configuration_description ,configuration_group_id, sort_order, set_function, use_function, date_added) values ('".MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_BEFORE_ID_TITLE."','MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_BEFORE_ID', '0','".MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_BEFORE_ID_DESC."' ,'6', '5', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())");
- // payment module sort order (under which number in the payment module list will following module be accessible)
- // порядок сортировки модуля оплаты (под каким номером в списке модулей оплаты будет доступен данный модуль)
- $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description , configuration_group_id, sort_order, date_added) values ('".MODULE_PAYMENT_SMSCOIN_SORT_ORDER_TITLE."','MODULE_PAYMENT_SMSCOIN_SORT_ORDER', '0', '".MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_ID_DESC."', '6', '6', now())");
- // payment module sort order (under which number in the payment module list will following module be accessible)
- // порядок сортировки модуля оплаты (под каким номером в списке модулей оплаты будет доступен данный модуль)
- $db->Execute("insert into " . TABLE_CONFIGURATION . " ( configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('".MODULE_PAYMENT_SMSCOIN_HTTP_ADDR_TITLE."','MODULE_PAYMENT_SMSCOIN_HTTP_ADDR', 'http://bank.smscoin.com/bank/', '".MODULE_PAYMENT_SMSCOIN_HTTP_ADDR_DESC."' ,'6', '7', now())");
- }
- ###
- # Функция удаления
- ###
- function remove() {
- global $db;
- $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
- }
- ###
- # Функция ключей
- ###
- function keys() {
- return array('MODULE_PAYMENT_SMSCOIN_STATUS','MODULE_PAYMENT_SMSCOIN_ALLOWED', 'MODULE_PAYMENT_SMSCOIN_ZONE', 'MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_ID', 'MODULE_PAYMENT_SMSCOIN_ORDER_STATUS_BEFORE_ID', 'MODULE_PAYMENT_SMSCOIN_SORT_ORDER', 'MODULE_PAYMENT_SMSCOIN_ID', 'MODULE_PAYMENT_SMSCOIN_SECRET_KEY', 'MODULE_PAYMENT_SMSCOIN_HTTP_ADDR');
- }
- }
- ?>