Init(); // for debugging payment gateway notifications, don't remove /*$fh = fopen((defined('RESTRICTED') ? RESTRICTED : WRITEABLE) . '/gw.log', 'a'); fwrite ($fh, "\n\n".date('d/m/y h:i:s').":\n"); foreach ($_REQUEST as $key => $val) { fwrite($fh, "\n"); } fclose($fh);*/ $db =& $application->GetADODBConnection(); $application->getUnitConfig('ord')->setAutoLoad(false); $order = $application->recallObject('ord'); $order_id = $application->GetVar('order_id'); if ($order_id) { $order->Load($order_id); } $gw_data = $order->getGatewayData($application->GetVar('payment_type_id')); $application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] ); $gateway_object = $application->recallObject( $gw_data['ClassName'] ); $transaction_status = $gateway_object->processNotification($gw_data['gw_params']); $sql = 'UPDATE %s SET GWResult1 = %s WHERE %s = %s'; $sql = sprintf($sql, $order->TableName, $db->qstr($gateway_object->getGWResponce()), $order->IDField, $order->GetID() ); $db->Query($sql); $order->SetDBField('GWResult1', $gateway_object->getGWResponce() ); $sql = 'UPDATE %s SET TransactionStatus = %s WHERE %s = %s'; $db->Query( sprintf($sql, $order->TableName, $transaction_status, $order->IDField, $order->GetID()) ); $order->SetDBField('TransactionStatus', $transaction_status); if($transaction_status == 1) { $application->HandleEvent(new kEvent('ord:OnCompleteOrder')); } else { $application->StoreVar('gw_error', $gateway_object->getErrorMsg()); } $application->Done();