Init(); $sql = 'SELECT PaymentTypeId FROM '.TABLE_PREFIX.'PaymentTypes AS pt LEFT JOIN '.TABLE_PREFIX.'Gateways AS g ON g.GatewayId = pt.GatewayId WHERE g.ClassName = "kGWGoogleCheckout"'; $payment_type_id = $application->Conn->GetOne($sql); $application->SetVar('payment_type_id', $payment_type_id); // keep, because kGWGoogleCheckout::processNewOrderNotification relies on this /** @var OrdersItem $order */ $order = $application->recallObject('ord', null, Array ('skip_autoload' => true)); $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 '.$order->TableName.' SET TransactionStatus = '.$transaction_status.' WHERE '.$order->IDField.' = '.$order->GetID(); $application->Conn->Query($sql); $order->SetDBField('TransactionStatus', $transaction_status); if ($transaction_status == 1) { $application->SetVar('ord_id', $order->GetID()); // used in OrdersEventHandler::UpdateOrderItem $application->HandleEvent(new kEvent('ord:OnCompleteOrder')); } $application->Done();