рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд░реЛрдмреЛрдХреИрд╕рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореИрдЧреЗрдВрдЯреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рднреБрдЧрддрд╛рди рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдирд╛

рд╢реБрдн рджреЛрдкрд╣рд░, рдЦрд╛рдмрд░реЛрд╡рд╕реНрдХ!

рдЖрдЬ рдореИрдВ Magento рдореЗрдВ рднреБрдЧрддрд╛рди рдкрджреНрдзрддрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рднреБрдЧрддрд╛рди рдХрд╛ рддрд░реАрдХрд╛ рд╕рдВрдпреЛрдЧ рд╕реЗ рдирд╣реАрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреЗрд╢ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдерд╛ред рдФрд░ рдЬрдм рд╕реЗ рдорд╛рдирдХ Magento рдкреИрдХреЗрдЬ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд╢реНрдЪрд┐рдореА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдпрд╣ рд▓реЗрдЦ CIS рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреВрдИрд╡реЗрдИ рд╕рдорд░реНрдерди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдЦрд╛рддреЛрдВ рдХреЛ рд╡рд╣рд╛рдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдереА, рдЗрд╕рд▓рд┐рдП рд░реЛрдмреЛрдХреИрд╕рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреБрдЧрддрд╛рди рд╡рд┐рдзрд┐ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - http://habrahabr.ru/blogs/php/80108/ ред рд╣рдо рднреБрдЧрддрд╛рди рд╡рд┐рдзрд┐ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

1. XML рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛



рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / etc / рдореЙрдбреНрдпреВрд▓ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд xml рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рдХрд░ рдЕрдкрдирд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

Sample_Robokassa.xml:
<?xml version="1.0"?> <config> <modules> <Sample_Robokassa> <active>true</active> <codePool>local</codePool> <depends> <Mage_Sales/> <Mage_Checkout/> </depends> </Sample_Robokassa> </modules> </config> 


рдпреЗ рд▓рд╛рдЗрдиреЗрдВ Magento рдХреЛ рдмрддрд╛рдПрдВрдЧреА рдХрд┐ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдкрд┐рдЫрд▓реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЛрдб / рд╕реНрдерд╛рдиреАрдп / рдирдореВрдирд╛ / рд░реЛрдмреЛрдХреИрд╕рд╛ / рдЖрджрд┐ / config.xml:
 <?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 рдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

 <?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> 


рдЗрди рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП-> рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди-> рднреБрдЧрддрд╛рди рдХреЗ рддрд░реАрдХреЗ-> рд░реЛрдмреЛрдХреИрд╕рд╛ рдкрде:
рдЫрд╡рд┐

2. рдореЙрдбрд▓



рднреБрдЧрддрд╛рди рд╡рд┐рдзрд┐ рдореЙрдбрд▓ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ Mage_Payment_Model_Method_Abstract рдХреЗ рдЧреБрдг рдЕрдиреБрднрд╛рдЧ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЗрди рд╕рднреА рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ 3 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 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); } 


рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП PHPDoc рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ред рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╢ рдбреЗрд╕реНрдХ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдореЗрдВ - рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдХреЛрдб рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЛ рд░реЛрдмреЛрдХреИрд╢ рдбреЗрд╕реНрдХ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред рд╡реИрд╕реЗ, рдХреИрд╢ рдбреЗрд╕реНрдХ рдореЗрдВ 2 рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХ рд╕рдВрдЪрд╛рд░ рдореИрдЬреЗрдВрдЯреЛ рдХреЗ рджреМрд░рд╛рди рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП-> рд░реЛрдмреЛрдХреИрд╕рд╛, рджреВрд╕рд░рд╛ - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рд╕рд╛рде рд╣реА, рдорд╛рдирдХ getConfigData рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреВрдЯ рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ config.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдзрд┐ getOrderPlaceRedirectUrl рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рд╣рдо рдЕрдкрдиреЗ рдореЙрдбрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдлреЙрд░реНрдо рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрдЬ рдХреЗ рд╕рд╛рде рд░реЙрдмреЛрдХреИрд╢ рдкреЗрдЬ рдкрд░ рднреЗрдЬ рджреЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреБрдЧрддрд╛рди рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд░реВрдк рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рднреБрдЧрддрд╛рди рдкреГрд╖реНрда рдкрд░ рддрд░реАрдХреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╣рдорд╛рд░реА рднреБрдЧрддрд╛рди рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

3. рдирд┐рдпрдВрддреНрд░рдХреЛрдВ



рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реЛрдЧрд╛ рдФрд░ 3 рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛:

1. рдЦрд░реАрдж рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдСрд░реНрдбрд░ рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдбрд╛рд▓реЗрдВ:
 $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']; // ,      


2. рдПрдХ рд╕рдлрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг:
 $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)); 


3. рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд▓реМрдЯреЗрдВ:
 $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'); 


рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рд╣реИ, рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдСрд░реНрдбрд░ рджреЗрдиреЗ рдФрд░ рдХреИрд╢ рдбреЗрд╕реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреИрд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕рдореЗрдВ рдПрдХреНрд╕рдПрдордПрд▓ рдПрдкреАрдЖрдИ рд░реЛрдмреЛрдХреИрд╢ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд╕реЗ рдореБрджреНрд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдХрд╛рдо рд╣реЛ рд╕рдХреЗрдЧрд╛ред рдЖрдк рднреБрдЧрддрд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрдиреНрдп рдорд╛рдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ: рдбрд┐рдмрдЧрд┐рдВрдЧ, рдЗрд╕реЗ рд░рдЦрддреЗ рд╕рдордп рдСрд░реНрдбрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдЪреБрдирдирд╛ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред

рд▓реЗрдЦ рдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдПред рдХреЗрд╡рд▓ рджреГрд╢реНрдп рд╕реНрддрд░ рдФрд░ рдХреЛрдб рдХреЗ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдб рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдмрд╛рдХреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде, рдЕрдВрддрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╕реНтАНрддреГрдд рдлрд╛рдЗрд▓ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдкреИрдЪ рдХрдорд╛рдВрдб рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ TortoiseSVN рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Magento рдХреА рдореМрдЬреВрджрд╛ рдХреЙрдкреА рдкрд░ рдЗрдВрд╕реНтАНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In127916/


All Articles