Currently I am developing a payment gateway and I have to generate a curl request to payment gateway.
Below is my normal php code of curl to which payment gateway approving my request because I have set CURLOPT_INTERFACE option to my server address on which my site is being hosted.
$url = 'https://mypaymentgatewayurl';
//url-ify the data for the POST
$requestQuery = '';
$requestQuery .= '&order_id=ordernumber';
$requestQuery .= '&api_key=myapi';
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_INTERFACE, $_SERVER['SERVER_ADDR']);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch,CURLOPT_TIMEOUT, 30);
curl_setopt($ch,CURLOPT_POST, TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS, $requestQuery);
//execute post
$result = curl_exec($ch);
echo 'curl output : <br>';
echo '<pre>';
print_r($result);
above php code is running without any problem and with desired output of approval.
Now problem starts here : I am not able to pass curl option in magento.
public function postBackCall($order_id,Zend_Http_Client_Adapter_Interface $httpAdapter = null) {
$configData = Mage::getStoreConfig('payment/gateway');
$logFileName = 'gateway.log';
$logEnabled = $configData['debug'];
try {
$apiUrl = $configData['api_url']; //i.e.https://mypaymentgatewayurl
$requestQuery = '';
$requestQuery .= '&order_id='.$order_id;
$requestQuery .= '&api_key='.Mage::helper('core')->decrypt($configData['api_key']);
$config = array('timeout' => 60,'verifypeer' => FALSE,'verifyhost' => FALSE);
$httpAdapter->setConfig($config);
$options = array('CURLOPT_INTERFACE' => $_SERVER['SERVER_ADDR']);
$httpAdapter->setOptions($options);
$httpAdapter->write(Zend_Http_Client::POST, $apiUrl, '1.1', array(), $requestQuery);
$response = $httpAdapter->read();
$httpAdapter->close();
} catch(Exception $e) {
Mage::logException($e);
}
}
This is how my postbackcall method is being called from controller
$gatewaymodule->postBackCall($order_id,new Varien_Http_Adapter_Curl());
Payment gateway is rejecting my request due to CURLOPT_INTERFACE is not being set as option. How can I set option in magento? What have I done wrong? TIA
Regards
Best Answer
Try
or as @Kamal mention remove quote from CURLOPT_INTERFACE int constant
See /lib/Varien/Http/Adapter/Curl.php