Skip to main content

Payment notification does not work with CBuilder

More
14 years 1 month ago - 14 years 1 month ago #61902 by philgsy
I'm not sure why and I'm hoping that someone can help me.

With our site, we've been working with our payment provider to create a plugin for HikaSHop which is now complete.

For some reason though, the return nnotifications from the provider are not working on the site.

I've tested this on a "clean" site and it seemed to work ok, which I cant explain...
Code:
$pluginsClass = hikashop_get('class.plugins'); $ppages = new HikashopPPages(); $elements = $pluginsClass->getMethods('payment','securetradingppages'); if(empty($elements) || !isset($elements[1])) { $ppages->createException(new Exception('The payment module class could not be retrieved correctly.'), __FILE__, __CLASS__, __LINE__); } $filter = &JFilterInput::getInstance(); $paymentMethod = $elements[1]; $postVars = array(); foreach($_POST as $key => $value){ $key = $filter->clean($key); $value = JRequest::getString($key); $postVars[$key]=$value; } if (!isset($postVars['errorcode'])) { $ppages->createException(new Exception('The errorcode has not been set.'), __FILE__, __CLASS__, __LINE__); } if (!isset($postVars['orderreference'])) { $ppages->createException(new Exception('The orderreference has not been set.'), __FILE__, __CLASS__, __LINE__); } if ($paymentMethod->payment_params->usenotificationhash && !isset($postVars['responsesitesecurity'])) { $ppages->createException(new Exception('The notification hash is enabled but the reponsesitesecurity was not posted to the notification script.'), __FILE__, __CLASS__, __LINE__); } if (isset($postVars['responsesitesecurity']) && $postVars['responsesitesecurity'] !== hash('sha256', $postVars['errorcode'] . $postVars['orderreference'] . $paymentMethod->payment_params->notificationhash)) { $ppages->createException(new Exception('The notification hash is enabled but the responsesitesecurity field did not match the regenerated hash.'), __FILE__, __CLASS__, __LINE__); } $orderClass = hikashop_get('class.order'); $dbOrder = $orderClass->get($postVars['orderreference']); if(empty($dbOrder)){ $ppages->createException(new Exception('Could not load order using orderreference: ' . $postVars['orderreference']), __FILE__, __CLASS__, __LINE__); } $order = NULL; $order->order_id = $dbOrder->order_id; $order->old_status->order_status=$dbOrder->order_status; if ($postVars['errorcode'] == 0) { $order->order_status = $paymentMethod->payment_params->verified_status; } else { $order->order_status = $paymentMethod->payment_params->invalid_status; } $order->history->history_notified = 1; $orderClass->save($order); exit('Notification Complete.');
Last edit: 14 years 1 month ago by philgsy.

Please Log in or Create an account to join the conversation.

More
14 years 1 month ago #62006 by Jerome
Hi,

In which function does your code source came from ?
Does the notification url is right ?
Are you sure that the notification is called ?
What's "HikashopPPages" ? Does it right included and defined ?
Do you check your PHP log file ?

Regards,

Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Please Log in or Create an account to join the conversation.

Time to create page: 0.189 seconds
Powered by Kunena Forum