<?xml version="1.0"?> <config> <modules> <Sample_Robokassa> <active>true</active> <codePool>local</codePool> <depends> <Mage_Sales/> <Mage_Checkout/> </depends> </Sample_Robokassa> </modules> </config>
<?xml version="1.0"?> <config> <modules> <Sample_Robokassa> <version>1.0.0.0</version> </Sample_Robokassa> </modules> <global> <models> <robokassa> <class>Sample_Robokassa_Model</class><!-- --> </robokassa> </models> <blocks> <robokassa> <class>Sample_Robokassa_Block</class><!-- --> </robokassa> </blocks> <helpers> <robokassa> <class>Sample_Robokassa_Helper</class><!-- helper --> </robokassa> </helpers> </global> <frontend> <routers> <robokassa> <use>standard</use> <args> <module>Sample_Robokassa</module> <frontName>robokassa</frontName> </args> </robokassa> </routers> </frontend> </config>
<?xml version="1.0"?> <config> <sections> <payment> <groups> <robokassa_redirect translate="label"> <label>Robokassa</label> <frontend_type>text</frontend_type> <sort_order>1</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <active translate="label"> <label>Enabled</label> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_yesno</source_model> <sort_order>10</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </active> <title translate="label"> <label>Title</label> <frontend_type>text</frontend_type> <sort_order>20</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </title> <login translate="label"> <label>Merchant Login</label> <frontend_type>obscure</frontend_type> <backend_model>adminhtml/system_config_backend_encrypted</backend_model> <sort_order>30</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </login> <password1 translate="label"> <label>Merchant Password #1</label> <!-- --> <frontend_type>obscure</frontend_type> <backend_model>adminhtml/system_config_backend_encrypted</backend_model> <sort_order>40</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </password1> <password2 translate="label"> <label>Merchant Password #2</label> <!-- --> <frontend_type>obscure</frontend_type> <backend_model>adminhtml/system_config_backend_encrypted</backend_model> <sort_order>45</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </password2> <test translate="label"> <label>Test Mode</label> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_yesno</source_model> <sort_order>50</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </test> <sort_order translate="label"> <label>Sort Order</label> <frontend_type>text</frontend_type> <sort_order>60</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </sort_order> </fields> </robokassa_redirect> </groups> </payment> </sections> </config>
protected $_canUseForMultishipping = false;// protected $_canUseInternal = false;// protected $_isInitializeNeeded = true;//
public function getRedirectFormFields() { $result = array(); $session = Mage::getSingleton('checkout/session'); $order = Mage::getModel('sales/order')->loadByIncrementId($session->getLastRealOrderId()); if (!$order->getId()) { return $result; } $result['MrchLogin'] = $this->getConfigData('login'); $result['OutSum'] = $order->getBaseGrandTotal(); $result['InvId'] = $order->getIncrementId(); $result['Desc'] = 'Shopping in' . Mage::getStoreConfig(Mage_Core_Model_Store::XML_PATH_STORE_STORE_NAME); $result['IncCurrLabel'] = 'AlfaBankR';// $result['SignatureValue'] = md5( $result['MrchLogin'] . ':' . $result['OutSum'] . ':' . $result['InvId'] . ':' . $this->getConfigData('password1') ); return $result; } public function validateRequest($request) { if (!isset($request['OutSum']) || !isset($request['InvId']) || !isset($request['SignatureValue'])) { return false; } $crc = md5($request['OutSum'] . ':' . $request['InvId'] . ':' . $this->getConfigData('password2')); return strtoupper($request['SignatureValue']) == strtoupper($crc); }
$request = Mage::app()->getRequest()->getPost(); $paymentMethod = Mage::getModel('robokassa/redirect'); if (!$paymentMethod->validateRequest($request)) { return; } $order = Mage::getModel('sales/order')->loadByIncrementId($request['InvId']); /* */ $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING); $order->setStatus('processing'); $order->setIsNotified(false); $order->save(); echo 'OK' . $request['InvId']; // ,
$session = Mage::getSingleton('checkout/session'); $session->setQuoteId($session->getRobokassaQuoteId()); /* , */ Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save(); $this->_redirect('checkout/onepage/success', array('_secure'=>true));
$session = Mage::getSingleton('checkout/session'); $session->setQuoteId($session->getRobokassaQuoteId()); if ($session->getLastRealOrderId()) { $order = Mage::getModel('sales/order')->loadByIncrementId($session->getLastRealOrderId()); if ($order->getId()) { $order->cancel()->save();// , "pending_payment" } } $quote = Mage::getModel('sales/quote')->load($session->getRobokassaQuoteId()); if ($quote->getId()) { $quote->setActive(true);// $quote->save(); } /* */ $session->addError(Mage::helper('robokassa')->__('Payment failed. Pleas try again later.')); $this->_redirect('checkout/cart');
Source: https://habr.com/ru/post/127916/
All Articles