Jump to content
Sign in to follow this  
terungwa

External API call is failing within WHMCS payment gateway callback file

Recommended Posts

I had successfully set up and integrated a third party payment integration system on WHMCS. Inorder to Validate callback authenticity, the gateway provides a method of verifying that a callback originated from them as shown in code below:

$mertid ='secretmerchantID';
$amt = '10000';
$tranxid = 'gtPay130958397220820';
$hashkey ='secretclientkey';

$hash =  hash('sha512', $mertid . $tranxid . $hashkey);

$url = 'https://ibank.gtbank.com/GTPayService/gettransactionstatus.xml?mertid='.$mertid.'&amount='.$amt.'&tranxid='.$tranxid.'&hash='.$hash;


$xmlString = file_get_contents($url);
if($xmlString === false)
{
    echo "Response Description: GTPAY Verification service failed to  open. 
}
else
{
    $xml = simplexml_load_string($xmlString );

    var_dump($xml);
} 

I am using the file_get_contents function to read the API response into a string, then simplexml_load_string function to Interprets the string of XML into an object with properties containing the data held within the xml string. On each successful transaction run $xml=simplexml_load_string($jString), returns FALSE.

 

However when I call this code in a file directly in a browser on WAMP using the same transaction values, then $xml=simplexml_load_string($jString), returns the string of XML into an object as expected. Also when I place the file on a different remote host and call it in browser, it also returns the string of XML into an object.

 

Strangely, when I place this code in a file within the WHMCS root folder and I attempt to call directly in a browser using the same successful transaction values used above, then $xml=simplexml_load_string($jString), returns FALSE again.

 

What may be restricting this call to the Third party API call within the WHMCS install?

Thanks.

Share this post


Link to post
Share on other sites

for file_get_contents() to work with a url, the allow_url_fopen setting must be ON and since you are using the https protocol, the openssl extension must be present and enabled. you should be getting php errors associated with either of these things, if you have php's error_reporting set to E_ALL and either display_errors set to ON or log_errors set to ON.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.