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; }
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; }
/** * 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); }
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; }
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; }
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; }