I am developing a payment module. I did not find any suitable documentation for the Magento System.
At the moment, I am faced with a problem in the capture method of the payment method model. Please help me.
I do not know why the CURL request for the REST API is not created and not sent. It only executes the first two or three lines. I do not think that the way I wrote the code below is correct, please suggest a better way. After placing the order "Got Info Instance" and the quantity in the log file, as indicated in the code. Other data for which I named Mage :: Log () does not appear in the syslog file.
I have a payment method similar to this
<?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; } } ?>
The Config.xml file is similar to this.
<?xml version="1.0"?> <config> <modules> <Company_Cashondelivery> <version>0.1.0</version> </Company_Cashondelivery> </modules> <global> <models> <cashondelivery> <class>Company_Cashondelivery_Model</class> </cashondelivery> </models> <helpers> <cashondelivery> <class>Company_Cashondelivery_Helper</class> </cashondelivery> </helpers> <resources> <cashondelivery_setup> <setup> <module>Company_Cashondelivery</module> </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> <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>
The system.xml file is similar to this
<?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>
The etc / module / Company_Cashondelivery.xml file is similar to this
<?xml version="1.0"?> <config> <modules> <Company_Cashondelivery> <active>true</active> <codePool>local</codePool> </Company_Cashondelivery> </modules> <depends> <Mage_Payment /> </depends> </config>
Let me know if I donโt understand anything.