protected function getCustomFields($id, waPayment $plugin)
 {
     $contact = $this->getContact();
     $order_params = $this->getSessionData('params', array());
     $payment_params = isset($order_params['payment']) ? $order_params['payment'] : array();
     foreach ($payment_params as $k => $v) {
         $order_params['payment_params_' . $k] = $v;
     }
     $order = new waOrder(array('contact' => $contact, 'contact_id' => $contact ? $contact->getId() : null, 'params' => $order_params));
     $custom_fields = $plugin->customFields($order);
     if (!$custom_fields) {
         return $custom_fields;
     }
     $params = array();
     $params['namespace'] = 'payment_' . $id;
     $params['title_wrapper'] = '%s';
     $params['description_wrapper'] = '<br><span class="hint">%s</span>';
     $params['control_wrapper'] = '<div class="wa-name">%s</div><div class="wa-value">%s %s</div>';
     $selected = $id == $this->getSessionData('payment');
     $controls = array();
     foreach ($custom_fields as $name => $row) {
         $row = array_merge($row, $params);
         if ($selected && isset($payment_params[$name])) {
             $row['value'] = $payment_params[$name];
         }
         $controls[$name] = waHtmlControl::getControl($row['control_type'], $name, $row);
     }
     return $controls;
 }
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data['order_id'] = $transaction_raw_data['order_id'];
     $transaction_data['amount'] = $transaction_raw_data['amount'];
     $transaction_data['currency_id'] = $transaction_raw_data['currency_id'];
     $transaction_data['native_id'] = '';
     return $transaction_data;
 }
 public function execute()
 {
     if (!$this->getUser()->getRights('shop', 'settings')) {
         throw new waRightsException(_w('Access denied'));
     }
     $model = new shopPluginModel();
     $this->view->assign('instances', $model->listPlugins(shopPluginModel::TYPE_PAYMENT, array('all' => true)));
     $this->view->assign('plugins', waPayment::enumerate());
     $this->view->assign('installer', $this->getUser()->getRights('installer', 'backend'));
 }
 protected function callbackInit($request)
 {
     if (empty($request['x_invoice_num']) || empty($request['wa_app_id']) || empty($request['wa_merchant_id'])) {
         self::log($this->id, 'Invalid transaction data');
         throw new waException('Invalid transaction data');
     } else {
         $this->app_id = $request['wa_app_id'];
         $this->merchant_id = $request['wa_merchant_id'];
     }
     return parent::callbackInit($request);
 }
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $raw = array();
     parse_str(ifset($transaction_raw_data['payment']), $raw);
     $transaction_data = array_merge($transaction_data, array('type' => null, 'native_id' => ifset($raw['order']), 'amount' => ifset($raw['amt']), 'currency_id' => ifset($raw['ccy']), 'result' => 1, 'order_id' => $this->order_id, 'view_data' => 'Phone: ' . ifset($raw['sender_phone'], '-')));
     if ($transaction_raw_data['state'] == 'ok') {
         $transaction_data['state'] = self::STATE_CAPTURED;
     } elseif ($transaction_raw_data['state'] == 'fail') {
         $transaction_data['state'] = self::STATE_DECLINED;
     }
     return $transaction_data;
 }
Example #6
0
 public static function savePlugin($plugin)
 {
     $default = array('status' => 0);
     $plugin = array_merge($default, $plugin);
     $model = new shopPluginModel();
     if (!empty($plugin['id']) && ($id = max(0, intval($plugin['id']))) && ($row = $model->getByField(array('id' => $id, 'type' => shopPluginModel::TYPE_PAYMENT)))) {
         $plugin['plugin'] = $row['plugin'];
         $model->updateById($plugin['id'], $plugin);
     } elseif (!empty($plugin['plugin'])) {
         $plugin['type'] = shopPluginModel::TYPE_PAYMENT;
         $plugin['id'] = $model->insert($plugin);
     }
     if (!empty($plugin['id']) && isset($plugin['settings'])) {
         waPayment::factory($plugin['plugin'], $plugin['id'], self::getInstance())->saveSettings($plugin['settings']);
     }
     if (!empty($plugin['id'])) {
         ifset($plugin['shipping'], array());
         $plugins = $model->listPlugins(shopPluginModel::TYPE_SHIPPING, array('all' => true));
         $app_settings = new waAppSettingsModel();
         $settings = json_decode($app_settings->get('shop', 'shipping_payment_disabled', '{}'), true);
         if (empty($settings) || !is_array($settings)) {
             $settings = array();
         }
         if (!isset($settings[$plugin['id']])) {
             $settings[$plugin['id']] = array();
         }
         $s =& $settings[$plugin['id']];
         foreach ($plugins as $item) {
             if (empty($plugin['shipping'][$item['id']])) {
                 $s[] = $item['id'];
             } else {
                 $key = array_search($item['id'], $s);
                 if ($key !== false) {
                     unset($s[$key]);
                 }
             }
         }
         $s = array_unique($s);
         if (empty($s)) {
             unset($settings[$plugin['id']]);
         }
         $app_settings->set('shop', 'shipping_payment_disabled', json_encode($settings));
     }
     return $plugin;
 }
 public function execute()
 {
     $params = waRequest::request();
     $result = waPayment::callback(waRequest::param('module_id'), $params);
     if (!empty($result['redirect'])) {
         $this->getResponse()->redirect($result['redirect']);
     }
     if (!empty($result['template'])) {
         $this->template = $result['template'];
     } elseif (isset($result['template'])) {
         exit;
     }
     wa()->setActive('webasyst');
     if (!empty($result['header'])) {
         foreach ((array) $result['header'] as $name => $value) {
             $this->getResponse()->addHeader($name, $value);
         }
     }
     $this->view->assign('params', $params);
     $this->view->assign('result', $result);
 }
 protected function formalizeData($transaction_raw_data)
 {
     $unpack = $this->unpackTransactionCode($transaction_raw_data['VendorTxCode']);
     list($contact_id, $currency) = array_slice($unpack, 3);
     $contact = new waContact($contact_id);
     $view_data = implode(' ', array('Name: ' . $contact->getName(), 'Phone: ' . $contact->get('phone', 'default'), 'Email: ' . $contact->get('email', 'default')));
     $status = $transaction_raw_data['Status'];
     if ($status == 'OK') {
         $type = waPayment::OPERATION_AUTH_CAPTURE;
         $state = waPayment::STATE_AUTH;
     } else {
         $type = waPayment::OPERATION_CANCEL;
         $state = waPayment::STATE_CANCELED;
     }
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data = array_merge($transaction_data, array('type' => $type, 'native_id' => ifset($transaction_raw_data['VPSTxId']), 'amount' => ifset($transaction_raw_data['Amount']), 'currency_id' => $currency, 'customer_id' => $contact_id, 'result' => 1, 'order_id' => $this->order_id, 'view_data' => $view_data, 'state' => $state));
     return $transaction_data;
 }
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data['native_id'] = $this->order_id;
     $transaction_data['order_id'] = $this->order_id;
     $transaction_data['amount'] = ifempty($transaction_raw_data['OutSum'], '');
     $transaction_data['currency_id'] = $this->merchant_currency;
     return $transaction_data;
 }
 /**
  * Convert transaction raw data to formatted data
  * @param array $transaction_raw_data
  * @return array $transaction_data
  */
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $view_data = '';
     if (ifset($transaction_raw_data['paymentPayerCode'])) {
         $view_data .= 'Account: ' . $transaction_raw_data['paymentPayerCode'];
     }
     $transaction_data = array_merge($transaction_data, array('type' => null, 'native_id' => ifset($transaction_raw_data['invoiceId']), 'amount' => ifset($transaction_raw_data['orderSumAmount']), 'currency_id' => ifset($transaction_raw_data['orderSumCurrencyPaycash']) == 643 ? 'RUB' : 'N/A', 'customer_id' => ifempty($transaction_raw_data['customerNumber'], ifset($transaction_raw_data['CustomerNumber'])), 'result' => 1, 'order_id' => $this->order_id, 'view_data' => $view_data));
     switch ($transaction_raw_data['action']) {
         case 'checkOrder':
             $this->version = '3.0';
         case 'Check':
             //Проверка заказа
             $transaction_data['type'] = self::OPERATION_CHECK;
             break;
         case 'paymentAviso':
             $this->version = '3.0';
         case 'PaymentSuccess':
             //Уведомления об оплате
             $transaction_data['type'] = self::OPERATION_AUTH_CAPTURE;
             break;
         case 'PaymentFail':
             //после неуспешного платежа.
             break;
     }
     return $transaction_data;
 }
 /**
  * Конвертирует исходные данные о транзакции, полученные от платежной системы, в формат, удобный для сохранения в базе данных.
  *
  * @param array $request Исходные данные
  * @return array $transaction_data Форматированные данные
  */
 protected function formalizeData($request)
 {
     // формируем полный список полей, относящихся к транзакциям, которые обрабатываются платежной системой WebMoney
     $fields = array('LMI_MERCHANT_ID', 'LMI_PAYMENT_NO', 'LMI_PAYMENT_AMOUNT', 'LMI_CURRENCY', 'LMI_PAID_AMOUNT', 'LMI_PAID_CURRENCY', 'LMI_PAYMENT_SYSTEM', 'LMI_SYS_INVS_NO', 'LMI_SYS_TRANS_NO', 'LMI_SIM_MODE', 'LMI_PAYMENT_DESC', 'wa_app', 'wa_merchant_contact_id', 'LMI_PREREQUEST', 'LMI_HASH', 'LMI_SYS_PAYMENT_ID', 'LMI_SYS_PAYMENT_DATE');
     foreach ($fields as $f) {
         if (!isset($request[$f])) {
             $request[$f] = null;
         }
     }
     // выполняем базовую обработку данных
     $transaction_data = parent::formalizeData($request);
     // добавляем дополнительные данные:
     // тип транзакции
     $transaction_data['type'] = !empty($request['LMI_PREREQUEST']) ? self::OPERATION_CHECK : (!empty($request['LMI_HASH']) ? self::OPERATION_AUTH_CAPTURE : 'N/A');
     // идентификатор транзакции, присвоенный платежной системой
     if (!$request['LMI_SYS_PAYMENT_ID'] && ($request['LMI_SYS_INVS_NO'] || $request['LMI_SYS_TRANS_NO'])) {
         $transaction_data['native_id'] = $request['LMI_SYS_INVS_NO'] . ':' . $request['LMI_SYS_TRANS_NO'];
     } else {
         $transaction_data['native_id'] = $request['LMI_SYS_PAYMENT_ID'];
     }
     // номер заказа
     $transaction_data['order_id'] = $request['LMI_PAYMENT_NO'];
     // сумма заказа
     $transaction_data['amount'] = $request['LMI_PAYMENT_AMOUNT'];
     // идентификатор валюты заказа
     $transaction_data['currency_id'] = $request['LMI_CURRENCY'];
     if (empty($transaction_data['currency_id'])) {
         $currency = $this->allowedCurrency();
         if ($currency && !is_array($currency)) {
             $transaction_data['currency_id'] = $currency;
         }
     }
     if ((int) ifset($request['LMI_MODE'])) {
         $transaction_data['view_data'] = ' ТЕСТОВЫЙ ЗАПРОС';
     }
     return $transaction_data;
 }
 /**
  * Convert transaction raw data to formatted data
  * @param array $data - transaction raw data
  * @return array $transaction_data
  */
 protected function formalizeData($transaction_raw_data)
 {
     $fields = array('LMI_MERCHANT_ID', 'LMI_PAYMENT_NO', 'LMI_PAYMENT_AMOUNT', 'LMI_CURRENCY', 'LMI_PAID_AMOUNT', 'LMI_PAID_CURRENCY', 'LMI_PAYMENT_SYSTEM', 'LMI_SYS_INVS_NO', 'LMI_SYS_TRANS_NO', 'LMI_SIM_MODE', 'LMI_PAYMENT_DESC', 'wa_app', 'wa_merchant_contact_id', 'LMI_PREREQUEST', 'LMI_HASH', 'LMI_SYS_PAYMENT_ID', 'LMI_SYS_PAYMENT_DATE');
     foreach ($fields as $f) {
         if (!isset($transaction_raw_data[$f])) {
             $transaction_raw_data[$f] = null;
         }
     }
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data['type'] = !empty($transaction_raw_data['LMI_PREREQUEST']) ? self::OPERATION_CHECK : (!empty($transaction_raw_data['LMI_HASH']) ? self::OPERATION_AUTH_CAPTURE : 'N/A');
     if (!$transaction_raw_data['LMI_SYS_PAYMENT_ID'] && ($transaction_raw_data['LMI_SYS_INVS_NO'] || $transaction_raw_data['LMI_SYS_TRANS_NO'])) {
         $transaction_data['native_id'] = $transaction_raw_data['LMI_SYS_INVS_NO'] . ':' . $transaction_raw_data['LMI_SYS_TRANS_NO'];
     } else {
         $transaction_data['native_id'] = $transaction_raw_data['LMI_SYS_PAYMENT_ID'];
     }
     $transaction_data['order_id'] = $transaction_raw_data['LMI_PAYMENT_NO'];
     $transaction_data['amount'] = $transaction_raw_data['LMI_PAYMENT_AMOUNT'];
     $transaction_data['currency_id'] = $transaction_raw_data['LMI_CURRENCY'];
     return $transaction_data;
 }
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data['native_id'] = ifempty($transaction_raw_data['TransactionID']);
     $transaction_data['order_id'] = $this->order_id;
     $transaction_data['amount'] = $transaction_raw_data['Amount'];
     $transaction_data['currency_id'] = $transaction_raw_data['PaymentCurrency'];
     $details = '';
     $fields = array();
     $fields['TransactionID'] = 'Уникальный идентификатор транзакции или счета QIWI/WebMoney/Яндекс.Деньги';
     switch ($provider = ifempty($transaction_raw_data['Provider'])) {
         case 'Card':
             $fields['CardHolder'] = 'Имя держателя карты';
             $fields['CardNumber'] = 'Номер карты';
             $fields['Country'] = 'Страна';
             $fields['BinCountry'] = 'Код страны, определенный по BIN эмитента карты';
             $fields['City'] = 'Город';
             $fields['Address'] = 'Адрес';
             break;
         case 'Qiwi':
             $fields['Phone'] = 'Номер телефона';
             break;
         case 'WebMoney':
             $fields['WmTranId'] = 'Служебный номер счета в системе учета WebMoney';
             $fields['WmInvId'] = 'Уникальный номер счета в системе учета WebMoney';
             $fields['WmId'] = 'WMID плательщика';
             $fields['WmPurse'] = 'WM-кошелек плательщика';
             break;
         default:
             $details .= "Unknown payment provider {$provider}";
             break;
     }
     $fields['IpAddress'] = 'IP-адрес';
     $fields['IpCountry'] = 'Код страны, определенный по IP-адресу';
     foreach ($fields as $field => $description) {
         if (!empty($transaction_raw_data[$field])) {
             $details .= "\n{$description}: {$transaction_raw_data[$field]}";
         }
     }
     $transaction_data['view_data'] = $details;
     return $transaction_data;
 }
 protected function init()
 {
     $autload = waAutoload::getInstance();
     $autload->add("IShopServerWSService", "wa-plugins/payment/qiwi/vendors/qiwi/IShopServerWSService.php");
     $autload->add("IShopClientWSService", "wa-plugins/payment/qiwi/vendors/qiwi/IShopClientWSService.php");
     $autload->add("nusoap_base", "wa-plugins/payment/qiwi/vendors/nusoap/nusoap.php");
     return parent::init();
 }
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data['native_id'] = $this->order_id;
     $transaction_data['order_id'] = $this->order_id;
     $transaction_data['amount'] = ifempty($transaction_raw_data['OutSum'], '');
     $transaction_data['currency_id'] = $this->merchant_currency;
     if ($this->testmode || $this->request_testmode) {
         $transaction_data['view_data'] = 'Тестовый режим';
     }
     return $transaction_data;
 }
Example #16
0
 /**
  * Execute specified transaction by payment module on $request data
  *
  * @example waPayment::execTransaction(waPayment::TRANSACTION_CAPTURE,'AuthorizeNet',$adapter,$params)
  * @param $transaction
  * @param $module_id
  * @param $merchant_id
  * @param $params
  * @return mixed
  */
 public function execTransaction($transaction, $module_id, $merchant_id, $params)
 {
     $plugin = waPayment::factory($module_id, $merchant_id, $this);
     return call_user_func_array(array($plugin, $transaction), $params);
 }
Example #17
0
 protected function formalizeData($transaction_raw_data)
 {
     $currency_id = $transaction_raw_data['currency'];
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data['native_id'] = $this->order_id;
     $order = explode('_', $transaction_raw_data['OrderNumber']);
     $transaction_data['order_id'] = $order[0];
     $transaction_data['currency_id'] = $this->currency[$currency_id];
     $transaction_data['amount'] = $transaction_raw_data['Amount'] / 100.0;
     return $transaction_data;
 }
 protected function formalizeData($transaction_raw_data)
 {
     $view_data = array();
     if ($transaction_raw_data['name']) {
         $view_data[] = 'Name: ' . $transaction_raw_data['name'];
     }
     if ($transaction_raw_data['tel']) {
         $view_data[] = 'Phone: ' . $transaction_raw_data['tel'];
     }
     if ($transaction_raw_data['email']) {
         $view_data[] = 'Email: ' . $transaction_raw_data['email'];
     }
     $view_data = implode(' ', $view_data);
     if ($transaction_raw_data['transStatus'] == self::STATUS_SUCCESS) {
         $type = waPayment::OPERATION_AUTH_CAPTURE;
         $state = waPayment::STATE_AUTH;
     } else {
         $type = waPayment::OPERATION_CANCEL;
         $state = waPayment::STATE_CANCELED;
     }
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data = array_merge($transaction_data, array('type' => $type, 'native_id' => ifset($transaction_raw_data['transId']), 'amount' => ifset($transaction_raw_data['authAmount']), 'currency_id' => ifset($transaction_raw_data['authCurrency']), 'customer_id' => ifset($transaction_raw_data['M_contact_id']), 'result' => 1, 'order_id' => ifset($transaction_raw_data['cartId']), 'view_data' => $view_data, 'state' => $state));
     return $transaction_data;
 }
 /**
  * Converts raw transaction data received from payment gateway to acceptable format.
  *
  * @param array $request Raw transaction data
  * @return array $transaction_data Formalized data
  */
 protected function formalizeData($request)
 {
     // obtaining basic request information
     $transaction_data = parent::formalizeData(null);
     // adding various data:
     // transaction id assigned by payment gateway
     $transaction_data['native_id'] = ifset($request['txn_id']);
     // amount
     $transaction_data['amount'] = ifset($request['mc_gross']);
     // currency code
     $transaction_data['currency_id'] = ifset($request['mc_currency']);
     $types = array('cart', 'express_checkout', 'masspay', 'send_money', 'recurring_payment', 'virtual_terminal', 'web_accept');
     $transaction_data['type'] = 'N/A';
     if (in_array(ifset($request['txn_type']), $types) && strtolower(ifset($request['payment_status'])) == 'completed') {
         $transaction_data['type'] = self::OPERATION_AUTH_CAPTURE;
     }
     $view_data = array();
     /**
      * data fields to be included in 'view_data' which are available in payment gateway's notification on
      * payment completion
      */
     $view_fields = array('payer_email', 'first_name', 'last_name', 'address_street', 'address_city', 'address_state', 'address_zip', 'address_country');
     foreach ($view_fields as $field) {
         if (!empty($request[$field])) {
             $view_data[] = trim($request[$field]);
         }
     }
     /**
      * adding formalized data to auxiliary field 'view_data' to be displayed to administrator for reference and
      * general visual transaction control
      */
     if ($view_data = preg_replace('@\\s+@', ' ', implode(', ', $view_data))) {
         $transaction_data['view_data'] = $view_data;
     }
     return $transaction_data;
 }
 /**
  * Convert transaction raw data to formatted data
  * @param array $data - transaction raw data
  * @return array $transaction_data
  */
 protected function formalizeData($data)
 {
     $fields = array('txn_type', 'ipn_track_id', 'mc_gross', 'mc_currency', 'payment_status', 'receiver_email');
     foreach ($fields as $f) {
         if (!isset($data[$f])) {
             $data[$f] = null;
         }
     }
     $types = array('cart', 'express_checkout', 'masspay', 'send_money', 'recurring_payment', 'virtual_terminal', 'web_accept');
     $type = 'N/A';
     if (in_array($data['txn_type'], $types) && strtolower($data['payment_status']) == 'completed') {
         $type = self::OPERATION_AUTH_CAPTURE;
     }
     $view_data = '';
     if ($data['payer_email']) {
         $view_data .= $data['payer_email'] . ', ';
     }
     if ($data['first_name'] || $data['last_name']) {
         $view_data .= trim($data['first_name'] . ' ' . $data['last_name']) . ', ';
     }
     if (!empty($data['address_street']) || !empty($data['address_city']) || !empty($data['address_state']) || !empty($data['address_zip']) || !empty($data['address_country'])) {
         $view_data .= $data['address_street'] . ' ' . $data['address_city'] . ' ' . $data['address_state'] . ' ' . $data['address_zip'] . ' ' . $data['address_country'] . ', ';
     }
     $view_data = substr($view_data, 0, -2);
     $view_data = preg_replace('/ +/', ' ', $view_data);
     $transaction_data = parent::formalizeData(null);
     $transaction_data['type'] = $type;
     $transaction_data['native_id'] = $data['txn_id'];
     $transaction_data['amount'] = $data['mc_gross'];
     $transaction_data['currency_id'] = $data['mc_currency'];
     $transaction_data['view_data'] = $view_data;
     return $transaction_data;
 }
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $view_data = array();
     $order_id = null;
     if (preg_match($this->pattern, ifset($transaction_raw_data['ik_pm_no']), $matches)) {
         $order_id = $matches[3];
     }
     $fields = array('ik_fees_payer' => 'Плательщик комиссии', 'ik_pw_via' => 'Способ оплаты', 'ik_inv_id' => 'Идентификатор', 'ik_inv_crt' => 'Время создания платежа', 'ik_inv_prc' => 'Время проведения');
     $map = array('ik_pw_via' => array('privatterm_liqpay_merchant_uah' => 'Терминалы Приватбанка - LiqPay - Мерчант', 'anelik_w1_merchant_rub' => 'Anelik - Единый кошелек - Мерчант', 'beeline_w1_merchant_rub' => 'Билайн - Единый кошелек - Мерчант', 'contact_w1_merchant_rub' => 'CONTACT - Единый кошелек - Мерчант', 'lider_w1_merchant_rub' => 'ЛИДЕР - Единый кошелек - Мерчант', 'megafon_w1_merchant_rub' => 'Мегафон - Единый кошелек - Мерчант', 'mobileretails_w1_merchant_rub' => 'Салоны связи - Единый кошелек - Мерчант', 'mts_w1_merchant_rub' => 'МТС - Единый кошелек - Мер чант', 'qiwiwallet_w1_merchant_rub' => 'Qiwi Кошелек - Единый кошелек - Мерчант', 'ruspost_w1_merchant_rub' => 'Почта Росси - Единый кошелек - Мерчант', 'rusterminal_w1_merchant_rub' => 'Терминалы Росси - Единый кошелек - Мерчант', 'unistream_w1_merchant_rub' => 'Юнистрим - Единый кошелек - Мерчант', 'webmoney_merchant_wmb' => 'WebMoney - Мерчант', 'webmoney_merchant_wme' => 'WebMoney - Мерчант', 'webmoney_merchant_wmg' => 'WebMoney - Мерчант', 'webmoney_merchant_wmr' => 'WebMoney - Мерчант', 'webmoney_merchant_wmu' => 'WebMoney - Мерчант', 'webmoney_merchant_wmz' => 'WebMoney - Мерчант', 'nsmep_smartpay_invoice_uah' => 'НСМЕП - SmartPay - Выставление счета', 'yandexmoney_merchant_rub' => 'Yandex.Money - Мерчант', 'zpayment_merchant_rub' => 'Z-payment - Мерчант', 'sbrf_rusbank_receipt_rub' => 'Сбербанк РФ - Российский банк - Квитанция', 'webmoney_invoice_wmz' => 'WebMoney - Выставление счета', 'webmoney_invoice_wmu' => 'WebMoney - Выставление счета', 'webmoney_invoice_wmr' => 'WebMoney - Выставление счета', 'webmoney_invoice_wmg' => 'WebMoney - Выставление счета', 'webmoney_invoice_wme' => 'WebMoney - Выставление счета', 'webmoney_invoice_wmb' => 'WebMoney - Выставление счета', 'webcreds_merchant_rub' => 'WebCreds - Мерчант', 'w1_merchant_usdw1_w1_merchant_usd' => 'Единый кошелек - Мерчант', 'w1_merchant_uahw1_w1_merchant_uah' => 'Единый кошелек - Мерчант', 'w1_merchant_rubw1_w1_merchant_rub' => 'Единый кошелек - Мерчант', 'w1_merchant_eurw1_w1_merchant_eur' => 'Единый кошелек - Мерчант', 'visa_liqpay_merchant_usd' => 'Visa - LiqPay - Мерчант', 'visa_liqpay_merchant_rub' => 'Visa - LiqPay - Мерчант', 'visa_liqpay_merchant_eur' => 'Visa - LiqPay - Мерчант', 'ukrbank_receipt_uah' => 'Украинский банк - Квитанция', 'ukash_w1_merchant_usd' => 'Ukash - Единый кошелек - Мерчант', 'rusbank_receipt_rub' => 'Российский банк - Квитанция', 'rbkmoney_merchant_rub' => 'RBK Money - Мерчант', 'privat24_merchant_usd' => 'Privat24 - Мерчант', 'privat24_merchant_uah' => 'Privat24 - Мерчант', 'privat24_merchant_eur' => 'Privat24 - Мерчант', 'perfectmoney_merchant_usd' => 'PerfectMoney - Мерчант', 'perfectmoney_merchant_eur' => 'PerfectMoney - Мерчант', 'moneymail_merchant_usd' => 'MoneyMail - Мерчант', 'moneymail_merchant_rub' => 'MoneyMail - Мерчант', 'moneymail_merchant_eur' => 'MoneyMail - Мерчант', 'monexy_merchant_usd' => 'MoneXy - Мерчант', 'monexy_merchant_uah' => 'MoneXy - Мерчант', 'monexy_merchant_rub' => 'MoneXy - Мерчант', 'monexy_merchant_eur' => 'MoneXy - Мерчант', 'mastercard_liqpay_merchant_usd' => 'Mastercard - LiqPay - Мерчант', 'mastercard_liqpay_merchant_rub' => 'Mastercard - LiqPay - Мерчант', 'mastercard_liqpay_merchant_eur' => 'Mastercard - LiqPay - Мерчант', 'liqpay_merchant_usd' => 'LiqPay - Мерчант', 'liqpay_merchant_uah' => 'LiqPay - Мерчант', 'liqpay_merchant_rub' => 'LiqPay - Мерчант', 'liqpay_merchant_eur' => 'LiqPay - Мерчант', 'libertyreserve_merchant_usd' => 'Liberty Reserve - Мерчант', 'libertyreserve_merchant_eur' => 'Liberty Reserve - Мерчант', 'eurobank_receipt_usd' => 'Wire Transfer - Квитанция', 'paypal_merchant_usd' => 'Paypal - Мерчант', 'alfaclick_w1_merchant_rub' => 'Альфаклик (Альфабанк) - Единый кошелек - Мерчант', 'interkassa_voucher_usd' => 'Интеркасса - Ваучер', 'visa_liqpay_merchant_uah' => 'Visa - LiqPay - Мерчант', 'mastercard_liqpay_merchant_uah' => 'Mastercard - LiqPay - Мерчант', 'rbkmoney_merchantx_rub' => 'RBK Money - Мерчант', 'telemoney_merchant_rub' => 'Telemoney - Мерчант', 'ukrterminal_webmoneyuga_terminal_uah' => 'Терминалы Украины - Webmoney UGA - Терминал', 'test_interkassa_test_xts' => 'Тестовая платежная система - Интеркасса - Тест'));
     foreach ($fields as $field => $description) {
         if (ifset($transaction_raw_data[$field])) {
             if (isset($map[$field][$transaction_raw_data[$field]])) {
                 $view_data[] = $description . ': ' . $map[$field][$transaction_raw_data[$field]];
             } else {
                 $view_data[] = $description . ': ' . $transaction_raw_data[$field];
             }
         }
     }
     $transaction_data = array_merge($transaction_data, array('type' => null, 'native_id' => ifset($transaction_raw_data['ik_trn_id']), 'amount' => ifset($transaction_raw_data['ik_am']), 'currency_id' => ifset($transaction_raw_data['ik_cur']), 'result' => 1, 'order_id' => $order_id, 'view_data' => implode("\n", $view_data)));
     switch (ifset($transaction_raw_data['ik_inv_st'])) {
         case 'success':
             $transaction_data['state'] = self::STATE_CAPTURED;
             $transaction_data['type'] = self::OPERATION_AUTH_CAPTURE;
             break;
         case 'fail':
             $transaction_data['state'] = self::STATE_DECLINED;
             $transaction_data['type'] = self::OPERATION_CANCEL;
             break;
     }
     return $transaction_data;
 }
Example #22
0
 protected function formalizeData($transactionRawData)
 {
     $transactionData = parent::formalizeData($transactionRawData);
     $transactionData['native_id'] = $this->order_id;
     $transactionData['order_id'] = $this->order_id;
     $amount = ifempty($transactionRawData['amount'], '');
     $transactionData['amount'] = $amount / 100;
     $transactionData['currency_id'] = $transactionRawData['currency'];
     $transactionData['view_data'] = 'Статус заказа: ' . $transactionRawData['order_status'] . ', ID заказа в системе: ' . $transactionRawData['payment_id'];
     $transactionData['result'] = 1;
     return $transactionData;
 }
Example #23
0
 protected function formalizeData($transactionRawData)
 {
     $transactionData = parent::formalizeData($transactionRawData);
     $transactionData['native_id'] = $this->order_id;
     $transactionData['order_id'] = $this->order_id;
     $transactionData['amount'] = ifempty($transactionRawData['amount'], '');
     $transactionData['currency_id'] = $transactionRawData['currency'];
     return $transactionData;
 }
 protected function callbackInit($request)
 {
     if (preg_match($this->pattern, ifset($request['orderId']), $matches)) {
         $this->app_id = $matches[1];
         $this->merchant_id = $matches[2];
         $this->order_id = $matches[3];
     }
     return parent::callbackInit($request);
 }
 protected function formalizeData($transaction_raw_data)
 {
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data['native_id'] = (string) $this->xml->transaction_id;
     $transaction_data['amount'] = (string) $this->xml->amount;
     $transaction_data['currency_id'] = (string) $this->xml->currency;
     $order_id = null;
     if (preg_match($this->pattern, (string) $this->xml->order_id, $matches)) {
         $order_id = $matches[3];
     }
     if ($this->bugfix) {
         $order_id = preg_replace('/_\\d{1,4}$/', '', $order_id);
     }
     if ($this->order_prefix) {
         $pattern = wa_make_pattern($this->order_prefix, '@');
         $pattern = "@^{$pattern}(.+)\$@";
         if (preg_match($pattern, $order_id, $matches)) {
             $order_id = $matches[1];
         } else {
             $order_id = null;
         }
     }
     $transaction_data['order_id'] = $order_id;
     $view_data = array();
     if ((string) $this->xml->transaction_id) {
         $view_data[] = $this->_w('Transaction number') . ': ' . (string) $this->xml->transaction_id;
     }
     if ((string) $this->xml->pay_way) {
         $view_data[] = $this->_w('Pay way') . ': ' . (string) $this->xml->pay_way;
     }
     switch ($status = (string) $this->xml->status) {
         case 'success':
             /*покупка совершена*/
             $transaction_data['state'] = self::STATE_CAPTURED;
             $transaction_data['type'] = self::OPERATION_AUTH_CAPTURE;
             $transaction_data['result'] = 1;
             break;
         case 'failure':
             /*покупка отклонена*/
             $transaction_data['state'] = self::STATE_DECLINED;
             $transaction_data['type'] = self::OPERATION_CANCEL;
             $transaction_data['result'] = 1;
             $view_data[] = $this->_w('Transaction declined') . ": " . (string) $this->xml->code;
             break;
         case 'wait_secure':
             /*платеж находится на проверке*/
             $view_data[] = $this->_w('Transaction requires confirmation');
             break;
         default:
             $view_data[] = sprintf($this->_w("Unknown status %s"), htmlentities($status, ENT_QUOTES, 'utf-8'));
             break;
     }
     if ((string) $this->xml->sender_phone) {
         $view_data[] = $this->_w('Phone number') . ': ' . (string) $this->xml->sender_phone;
     }
     if ($view_data) {
         $transaction_data['view_data'] = implode("\n", $view_data);
     }
     return $transaction_data;
 }
 protected function formalizeData($transaction_raw_data)
 {
     $view_data = implode(' ', array('Name: ' . $transaction_raw_data['name'], 'Card: ' . $transaction_raw_data['cardType'] . ' ' . $transaction_raw_data['cardNumber'], 'Transaction time: ' . $transaction_raw_data['transactionStart'] . ' - ' . $transaction_raw_data['transactionEnd']));
     if ($transaction_raw_data['status'] == '000') {
         $type = waPayment::OPERATION_AUTH_CAPTURE;
         $state = waPayment::STATE_AUTH;
     } else {
         $type = waPayment::OPERATION_CANCEL;
         $state = waPayment::STATE_CANCELED;
     }
     $unpack = $this->unpackSessionId($transaction_raw_data['sessionId']);
     list($contact_id, $currency) = array_slice($unpack, 3);
     $transaction_data = parent::formalizeData($transaction_raw_data);
     $transaction_data = array_merge($transaction_data, array('type' => $type, 'native_id' => ifset($transaction_raw_data['transId']), 'amount' => ifset($transaction_raw_data['amount']), 'currency_id' => $currency, 'customer_id' => $contact_id, 'result' => 1, 'order_id' => $this->order_id, 'view_data' => $view_data, 'state' => $state));
     return $transaction_data;
 }
 /**
  * @param array|checkBillResponse $result
  * @return array
  */
 protected function formalizeData($result)
 {
     $transaction_data = parent::formalizeData(null);
     switch (ifempty($this->callback_protocol, $this->protocol)) {
         case self::SOAP:
             $transaction_data['native_id'] = $this->txn;
             $transaction_data['amount'] = is_object($result) && property_exists(get_class($result), 'amount') && !empty($result->amount) ? str_replace(',', '.', $result->amount) : 0;
             $transaction_data['currency_id'] = 'RUB';
             $transaction_data['order_id'] = $this->order_id;
             if (is_object($result) && property_exists(get_class($result), 'user') && !empty($result->user)) {
                 $transaction_data['view_data'] = 'Phone: ' . $result->user;
             }
             if (is_object($result) && property_exists(get_class($result), 'status') && !empty($result->status)) {
                 $transaction_data['view_status'] = $this->getBillCodeDescription(intval($result->status));
             }
             break;
         case self::REST:
             $transaction_data['native_id'] = $result['bill_id'];
             $transaction_data['order_id'] = $this->order_id;
             $transaction_data['amount'] = $result['amount'];
             $transaction_data['currency_id'] = $result['ccy'];
             $transaction_data['view_data'] = 'Phone: ' . preg_replace('@^tel:@', '', $result['user']);
             break;
     }
     if ($this->callback_test) {
         if (!isset($transaction_data['view_data'])) {
             $transaction_data['view_data'] = '';
         }
         $transaction_data['view_data'] .= ' ТЕСТОВЫЙ ЗАПРОС';
     }
     return $transaction_data;
 }