Я разрабатываю платежный модуль. Я не нашел подходящей документации для Magento System.
На данный момент я столкнулся с проблемой в методе захвата модели метода оплаты. Пожалуйста, помогите мне.
Я не знаю, почему запрос CURL для REST API не создается и не отправляется. Он выполняет только первые две или три строки. Я не думаю, что так, как я написал код ниже, правильно, пожалуйста, предложите лучший способ. После размещения заказа «Got Info Instance» и количество в файле журнала, как указано в коде. Другие данные, для которых я назвал Mage :: Log (), не отображаются в файле системного журнала.
У меня есть код метода оплаты, подобный этому
<?php class Company_Cashondelivery_Model_Createorder extends Mage_Payment_Model_Method_Abstract { protected $_code = 'cashondelivery'; protected $_canCapture = true; protected $_canUseCheckout = true; public function capture(Varien_Object $payment, $amount) { $paymentInfo = $this->getInfoInstance(); Mage::Log('Got Info Instance'); //This is shown in Log file. Mage::Log($amount); //This is shown in Log file Mage::Log($payment); $xml='<?xml version="1.0" encoding="utf-8" ?>'. '<transaction>'. '<customerDetails>'. '<address>This is, address, Purple Talk, 600100</address>'. //I dont know how to get Address as string here '<contactNo>'.$paymentInfo->getOrder()->getBillingAddress()->getTelephone().'</contactNo>'. '<email>'.$paymentInfo->getOrder()->getBillingAddress()->email().'</email>'. '<firstName>'.$paymentInfo->getOrder()->getBillingAddress()->getFirstName().'</firstName>'. '<lastName>'.$paymentInfo->getOrder()->getBillingAddress()->getLastName().'</lastName>'. '</customerDetails>'. '<orderDetails>'. '<pincode>'.$paymentInfo->getOrder()->getBillingAddress()->getPostCode().'</pincode>'. '<clientOrderID>'.$paymentInfo->getOrder()->getIncrementId().'</clientOrderID>'. '<deliveryDate>20-7-20111</deliveryDate>'. '<orderAmount>'.$amount.'</orderAmount>'. '<productDetails>'; Mage::Log($xml);//This is not there in log file foreach ($paymentInfo->getOrder()->getAllItems() as $item) { $xml.='<productDetails>'. '<productID>'.$item->getProductId().'</productID>'. '<productQuantity>'.$item->getQtyOrdered().'</productQuantity>'. '<unitCost>'.$item->getPrice().'</unitCost>'. '</productDetails>'; } $xml.='</orderDetails>'. '<additionalInformation>'. '<parameters>'. '<name>Some Name</name>'. '<value>Some Value</value>'. '</parameters>'. '<parameters>'. '<name>Some Name2</name>'. '<value>Some value2</value>'. '</parameters>'. '</additionalInformation>'. '</transaction>'; Mage::Log($xml); $url = "http://services.abc.com/rest/service/createOrder"; Mage::Log('Loading url : '.$url); //This is not there in Log; $ch = curl_init($url) ; curl_setopt($ch, CURLOPT_HEADER,true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_HTTPHEADER, array('username:xxxxx','password:xxxxxx','Content-Type:application/xml')); $response = curl_exec($ch); Mage::Log($response); //This is not there in Log file; return $this; } } ?>
Файл Config.xml выглядит следующим образом:
<?xml version="1.0"?> <config> <modules> <Company_Cashondelivery> <!-- declare module's version information for database updates --> <version>0.1.0</version> </Company_Cashondelivery> </modules> <global> <!-- declare model group for new module --> <models> <!-- model group alias to be used in Mage::getModel('newmodule/...') --> <cashondelivery> <!-- base class name for the model group --> <class>Company_Cashondelivery_Model</class> </cashondelivery> </models> <helpers> <cashondelivery> <class>Company_Cashondelivery_Helper</class> </cashondelivery> </helpers> <!-- declare resource setup for new module --> <resources> <!-- resource identifier --> <cashondelivery_setup> <!-- specify that this resource is a setup resource and used for upgrades --> <setup> <!-- which module to look for install/upgrade files in --> <module>Company_Cashondelivery</module> </setup> <!-- specify database connection for this resource --> <connection> <!-- do not create new connection, use predefined core setup connection --> <use>core_setup</use> </connection> </cashondelivery_setup> <cashondelivery_write> <connection> <use>core_write</use> </connection> </cashondelivery_write> <cashondelivery_read> <connection> <use>core_read</use> </connection> </cashondelivery_read> </resources> </global> <!-- declare default configuration values for this module --> <default> <payment> <cashondelivery> <active>1</active> <model>cashondelivery/createorder</model> <order_status>pending</order_status> <payment_action>authorize_capture</payment_action> <title>Company</title> </cashondelivery> </payment> </default> </config>
по<?xml version="1.0"?> <config> <modules> <Company_Cashondelivery> <!-- declare module's version information for database updates --> <version>0.1.0</version> </Company_Cashondelivery> </modules> <global> <!-- declare model group for new module --> <models> <!-- model group alias to be used in Mage::getModel('newmodule/...') --> <cashondelivery> <!-- base class name for the model group --> <class>Company_Cashondelivery_Model</class> </cashondelivery> </models> <helpers> <cashondelivery> <class>Company_Cashondelivery_Helper</class> </cashondelivery> </helpers> <!-- declare resource setup for new module --> <resources> <!-- resource identifier --> <cashondelivery_setup> <!-- specify that this resource is a setup resource and used for upgrades --> <setup> <!-- which module to look for install/upgrade files in --> <module>Company_Cashondelivery</module> </setup> <!-- specify database connection for this resource --> <connection> <!-- do not create new connection, use predefined core setup connection --> <use>core_setup</use> </connection> </cashondelivery_setup> <cashondelivery_write> <connection> <use>core_write</use> </connection> </cashondelivery_write> <cashondelivery_read> <connection> <use>core_read</use> </connection> </cashondelivery_read> </resources> </global> <!-- declare default configuration values for this module --> <default> <payment> <cashondelivery> <active>1</active> <model>cashondelivery/createorder</model> <order_status>pending</order_status> <payment_action>authorize_capture</payment_action> <title>Company</title> </cashondelivery> </payment> </default> </config>
в<?xml version="1.0"?> <config> <modules> <Company_Cashondelivery> <!-- declare module's version information for database updates --> <version>0.1.0</version> </Company_Cashondelivery> </modules> <global> <!-- declare model group for new module --> <models> <!-- model group alias to be used in Mage::getModel('newmodule/...') --> <cashondelivery> <!-- base class name for the model group --> <class>Company_Cashondelivery_Model</class> </cashondelivery> </models> <helpers> <cashondelivery> <class>Company_Cashondelivery_Helper</class> </cashondelivery> </helpers> <!-- declare resource setup for new module --> <resources> <!-- resource identifier --> <cashondelivery_setup> <!-- specify that this resource is a setup resource and used for upgrades --> <setup> <!-- which module to look for install/upgrade files in --> <module>Company_Cashondelivery</module> </setup> <!-- specify database connection for this resource --> <connection> <!-- do not create new connection, use predefined core setup connection --> <use>core_setup</use> </connection> </cashondelivery_setup> <cashondelivery_write> <connection> <use>core_write</use> </connection> </cashondelivery_write> <cashondelivery_read> <connection> <use>core_read</use> </connection> </cashondelivery_read> </resources> </global> <!-- declare default configuration values for this module --> <default> <payment> <cashondelivery> <active>1</active> <model>cashondelivery/createorder</model> <order_status>pending</order_status> <payment_action>authorize_capture</payment_action> <title>Company</title> </cashondelivery> </payment> </default> </config>
по<?xml version="1.0"?> <config> <modules> <Company_Cashondelivery> <!-- declare module's version information for database updates --> <version>0.1.0</version> </Company_Cashondelivery> </modules> <global> <!-- declare model group for new module --> <models> <!-- model group alias to be used in Mage::getModel('newmodule/...') --> <cashondelivery> <!-- base class name for the model group --> <class>Company_Cashondelivery_Model</class> </cashondelivery> </models> <helpers> <cashondelivery> <class>Company_Cashondelivery_Helper</class> </cashondelivery> </helpers> <!-- declare resource setup for new module --> <resources> <!-- resource identifier --> <cashondelivery_setup> <!-- specify that this resource is a setup resource and used for upgrades --> <setup> <!-- which module to look for install/upgrade files in --> <module>Company_Cashondelivery</module> </setup> <!-- specify database connection for this resource --> <connection> <!-- do not create new connection, use predefined core setup connection --> <use>core_setup</use> </connection> </cashondelivery_setup> <cashondelivery_write> <connection> <use>core_write</use> </connection> </cashondelivery_write> <cashondelivery_read> <connection> <use>core_read</use> </connection> </cashondelivery_read> </resources> </global> <!-- declare default configuration values for this module --> <default> <payment> <cashondelivery> <active>1</active> <model>cashondelivery/createorder</model> <order_status>pending</order_status> <payment_action>authorize_capture</payment_action> <title>Company</title> </cashondelivery> </payment> </default> </config>
Файл system.xml выглядит так
<?xml version="1.0"?> <config> <sections> <payment> <groups> <cashondelivery translate="label" module="cashondelivery"> <label>Company Cash On delivery</label> <sort_order>670</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</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>1</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </active> <order_status translate="label"> <label>New order status</label> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_order_status_processing</source_model> <sort_order>4</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </order_status> <title translate="label"> <label>Title</label> <frontend_type>text</frontend_type> <sort_order>2</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </title> </fields> </cashondelivery> </groups> </payment> </sections> </config>
Файл etc / module / Company_Cashondelivery.xml выглядит следующим образом:
<?xml version="1.0"?> <config> <modules> <Company_Cashondelivery> <active>true</active> <codePool>local</codePool> </Company_Cashondelivery> </modules> <depends> <Mage_Payment /> </depends> </config>
Дайте мне знать. Если я ничего не понимаю.
Проблема в вашем коде находится в этой строке '<email>'.$paymentInfo->getOrder()->getBillingAddress()->email().'</email>'.
Нет функции электронной почты (), вы можете использовать “ '. $ PaymentInfo-> getOrder () -> getBillingAddress () -> getEmail ().' '. для получения электронной почты.
Эта ошибка отправляется btw для хранения электронной почты владельца. Если вы разрабатываете на localhost, я бы рекомендовал вам использовать некоторую эмуляцию smtp, например (для победы) http://www.toolheap.com/test-mail-server-tool/, а затем вы можете увидеть все отправленные сообщения от Magento.
И второе примечание. Вместо уродливого завитка вы можете использовать Varien_Http_Client (Zend_Http_Client), поставляемый с Magento. Вы можете увидеть пример в моем сообщении – https://stackoverflow.com/a/9233290/858586
Проблема была Mag :: Log ($ payment). Я удалил ее и ее работу как волшебство.