User Tools

Site Tools


market:jandeks.kassa:dlja_programmista:obrabotchik

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

market:jandeks.kassa:dlja_programmista:obrabotchik [06.05.15 в 12:38]
Артем Куц создано
— (current)
Line 1: Line 1:
-<?php 
  
-/** 
- * Яндекс.Деньги 
- */ 
-class Shop_Payment_System_Handler21 extends Shop_Payment_System_Handler 
-{ 
- 
-/* Способы оплаты */ 
- protected $ym_method_pc = 1; /* электронная валюта Яндекс.Деньги. 1 - используется,​ 0 - нет */ 
- protected $ym_method_ac = 1; /* банковские карты VISA, MasterCard, Maestro. 1 - используется,​ 0 - нет */ 
- protected $ym_method_gp = 1; /* Только для юридического лица! Наличными в кассах и терминалах партнеров. 1 - используется,​ 0 - нет */ 
- protected $ym_method_mc = 1; /* Только для юридического лица! Оплата со счета мобильного телефона. 1 - используется,​ 0 - нет */ 
- protected $ym_method_wm = 1; /* Только для юридического лица! Электронная валюта WebMoney. 1 - используется,​ 0 - нет */ 
- protected $ym_method_ab = 1; /* Только для юридического лица! АльфаКлик. 1 - используется,​ 0 - нет */ 
- public $_rub_currency_id = 1; 
- 
-/* режим приема средств */  
- protected $ym_org_mode = 1; 
- 
- /* Идентификатор магазина в системе Яндекс.Деньги. Выдается оператором системы. */ 
- protected $_ShopID = 22087; 
- 
- /* Пароль магазина в системе Яндекс.Деньги. Выдается оператором системы. */ 
- protected $_shopPassword = '​termosecret';​ 
- 
- protected $_yandex_money_uri = '​https://​money.yandex.ru/​eshop.xml';​ 
- 
- /* Номер витрины магазина в системе Яндекс.Деньги. Выдается оператором системы. */ 
- protected $_scid = 12055; 
- 
- /* Код валюты */ 
- /* 
- Возможные значения:​ 
- 643 — рубль Российской Федерации;​ 
- 10643 — тестовая валюта (демо-рублики демо-системы «Яндекс.Деньги») 
- */ 
- protected $_orderSumCurrencyPaycash = 643; 
- 
- /* Вызывается на 4-ом шаге оформления заказа*/​ 
- public function execute() 
- { 
- parent::​execute();​ 
- 
- $this->​printNotification();​ 
- 
- return $this; 
- } 
- 
- /* вычисление суммы товаров заказа */ 
- public function getSumWithCoeff() 
- { 
- return Shop_Controller::​instance()->​round(($this->​_rub_currency_id > 0 
- &&​ $this->​_shopOrder->​shop_currency_id > 0 
- ? Shop_Controller::​instance()->​getCurrencyCoefficientInShopCurrency( 
- $this->​_shopOrder->​Shop_Currency,​ 
- Core_Entity::​factory('​Shop_Currency',​ $this->​_rub_currency_id) 
- ) 
- : 0) * $this->​_shopOrder->​getAmount() ); 
- } 
- 
- protected function _processOrder() 
- { 
- parent::​_processOrder();​ 
- 
- // Установка XSL-шаблонов в соответствии с настройками в узле структуры 
- $this->​setXSLs();​ 
- 
- // Отправка писем клиенту и пользователю 
- $this->​send();​ 
- 
- return $this; 
- } 
- 
- /* обработка ответа от платёжной системы */ 
- public function paymentProcessing() 
- { 
- $this->​ProcessResult();​ 
- return TRUE; 
- } 
- 
- /* оплачивает заказ */ 
- function ProcessResult() 
- { 
- $invoiceId = Core_Array::​getPost('​invoiceId'​);​ 
- 
- if ($this->​_shopOrder->​system_information == ''​) 
- { 
- $this->​_shopOrder->​system_information = $invoiceId; 
- $this->​_shopOrder->​save();​ 
- } 
- 
- if ($this->​_shopOrder->​system_information == $invoiceId) 
- { 
- /* проверяем заказ */ 
- $code = $this->​_checkOrder($_POST);​ 
- } 
- else 
- { 
- $code = 1000; 
- } 
- 
- $response_params = $_POST; 
- $response['​requestDatetime'​] = date("​c"​);​ 
- 
- /* генерируем XML ответа */ 
- $response = $this->​_genXMLResponseToYandex($response_params,​ $code); 
- 
- if (Core_Array::​getPost('​action',​ ''​) == '​paymentAviso'​ && $code == 0) 
- { 
- $oShop_Order = $this->​_shopOrder;​ 
- 
- $this->​shopOrder($oShop_Order)->​shopOrderBeforeAction(clone $oShop_Order);​ 
- 
- $oShop_Order->​system_information = "​Товар оплачен через Яндекс.Деньги.\n";​ 
- $oShop_Order->​paid();​ 
- $this->​setXSLs();​ 
- $this->​send();​ 
- } 
- 
- /* даем ответ Яндексу */ 
- echo $response; 
- die(); 
- } 
- 
- /* генерация XML-а подтверждений магазина */ 
- protected function _genXMLResponseToYandex($response_params,​ $code = 1000) 
- { 
- $action = Core_Array::​get($response_params,​ '​action'​);​ 
- $code = intval($code);​ 
- $current_date_time = Core_Array::​get($response_params,​ '​requestDatetime'​);​ 
- $invoiceId = Core_Array::​get($response_params,​ '​invoiceId'​);​ 
- 
- $response = '<?​xml version="​1.0"​ encoding="​UTF-8"?>';​ 
- $response .= '<'​ . htmlspecialchars($action) . '​Response performedDatetime="'​. htmlspecialchars($current_date_time) .'"​ code="'​ . $code . '"​ invoiceId="'​ . htmlspecialchars($invoiceId) . '"​ shopId="'​ . $this->​_ShopID . '"/>';​ 
- 
- return $response; 
- } 
- 
- /* печатает форму отправки запроса на сайт платёжной системы */ 
- public function getNotification() 
- { 
- $Sum = $this->​getSumWithCoeff();​ 
- 
- $oSiteUser = Core::​moduleIsActive('​siteuser'​) 
- ? Core_Entity::​factory('​Siteuser'​)->​getCurrent() 
- : NULL; 
- 
- ?> 
- <​h2>​Оплата через систему Яндекс.Деньги</​h2>​ 
- 
- <form method="​POST"​ action="<?​php echo $this->​_yandex_money_uri?>">​ 
- <input class="​wide"​ name="​scid"​ value="<?​php echo $this->​_scid?>"​ type="​hidden">​ 
- <input type="​hidden"​ name="​ShopID"​ value="<?​php echo $this->​_ShopID?>">​ 
- <input type="​hidden"​ name="​CustomerNumber"​ value="<?​php echo (is_null($oSiteUser) ? 0 : $oSiteUser->​id)?>">​ 
- <input type="​hidden"​ name="​orderNumber"​ value="<?​php echo $this->​_shopOrder->​id?>">​ 
- <input type="​hidden"​ name="​orderSumCurrencyPaycash"​ value="<?​php echo $this->​_orderSumCurrencyPaycash?>">​ 
- 
-<br/> 
-<div class="​price">​ 
- Сумма:​ 
-  
- <?​php echo $Sum?> руб. </​div>​ 
- 
-<div class="​price">​Номер заказа:​ <?php echo $this->​_shopOrder->​invoice?></​div>​ 
- 
- 
-<input type="​hidden"​ name="​Sum"​ value="<?​php echo $Sum?>"​ readonly="​readonly">​ 
-<input type="​hidden"​ name="​AccountNumber"​ value="<?​php echo $this->​_shopOrder->​invoice?>"​ readonly="​readonly">​ 
-<div class="​price">​ 
-Способ оплаты:​ 
-</​div>​ 
- <​select name="​paymentType">​ 
- <?​php if ($this->​ym_method_pc){?>​ 
- <​option value="​PC">​электронная валюта Яндекс.Деньги</​option>​ 
- <?​php } ?> 
- <?​php if ($this->​ym_method_ac){?>​ 
- <​option value="​AC">​банковские карты VISA, MasterCard, Maestro</​option>​ 
- <?​php } ?> 
- <?​php if ($this->​ym_method_gp && $this->​ym_org_mode){?>​ 
- <​option value="​GP">​наличными в кассах и терминалах партнеров</​option>​ 
- <?​php } ?> 
- <?​php if ($this->​ym_method_mc && $this->​ym_org_mode){?>​ 
- <​option value="​MC">​оплата со счета мобильного телефона</​option>​ 
- <?​php } ?> 
- 
- <?​php if ($this->​ym_method_wm && $this->​ym_org_mode){?>​ 
- <​option value="​WM">​электронная валюта WebMoney</​option>​ 
- <?​php } ?> 
- </​select>​ 
-<​br/><​br/>​ 
-<input type="​hidden" ​ name="​BuyButton"​ value="​1"​ /> 
-<button type="​submit"​ id="​buy"​ class="​btn btn-warning btn-lg">​Оплатить</​button>​ 
- 
- 
- </​form>​ 
- <?php 
- } 
- 
- public function getInvoice() 
- { 
- return $this->​getNotification();​ 
- } 
- 
- /* проверяем заказ */ 
- protected function _checkOrder($order_params) 
- { 
- $site_user_id = $this->​_shopOrder->​siteuser_id;​ 
- 
- $Sum = $this->​getSumWithCoeff();​ 
- 
- if (isset($order_params['​shopId'​]) && isset($order_params['​customerNumber'​]) 
- &&​ isset($order_params['​orderSumAmount'​]) && isset($order_params['​AccountNumber'​]) 
- &&​ isset($order_params['​orderSumCurrencyPaycash'​]) && isset($order_params['​action'​]) 
- &&​ isset($order_params['​orderNumber'​]) && isset($order_params['​orderSumBankPaycash'​]) 
- &&​ isset($order_params['​invoiceId'​]) 
- ) 
- { 
- if (Core_Array::​get($order_params,​ '​shopId'​) == $this->​_ShopID 
- &&​ Core_Array::​get($order_params,​ '​customerNumber'​) == $site_user_id 
- &&​ Core_Array::​get($order_params,​ '​orderSumAmount'​) == $Sum 
- &&​ Core_Array::​get($order_params,​ '​AccountNumber'​) == $this->​_shopOrder->​invoice 
- &&​ Core_Array::​get($order_params,​ '​orderSumCurrencyPaycash'​) == $this->​_orderSumCurrencyPaycash 
- ) 
- { 
- $in_str = $order_params['​action'​] . ";"​ 
- . sprintf("​%.2f",​ $Sum) . ";"​ 
- . $this->​_orderSumCurrencyPaycash . ";"​ 
- . $order_params['​orderSumBankPaycash'​] . ";"​ 
- . $this->​_ShopID . ";"​ 
- . $order_params['​invoiceId'​] . ";"​ 
- . $site_user_id . ";"​ 
- . $this->​_shopPassword;​ 
- 
- $hash = strtoupper(md5($in_str));​ 
- 
- return intval($hash != $order_params['​md5'​]);​ 
- } 
- elseif ($order_params['​action'​] == '​checkOrder'​) 
- { 
- return 100; 
- } 
- } 
- else 
- { 
- return 200; 
- } 
- 
- return 1000; 
- } 
-} 
market/jandeks.kassa/dlja_programmista/obrabotchik.1430905083.txt.gz · Last modified: 26.06.15 в 15:07 (external edit)