Files

70 lines
2.0 KiB
PHP

<?php
// Require libraries needed for gateway module functions.
require_once __DIR__ . '/../../../init.php';
require_once __DIR__ . '/../../../includes/gatewayfunctions.php';
require_once __DIR__ . '/../../../includes/invoicefunctions.php';
require_once __DIR__ . '/../../../modules/gateways/hutko/hutko_helper.php';
// Detect module name from filename.
$gatewayModuleName = basename(__FILE__, '.php');
// Fetch gateway configuration parameters.
$gatewayParams = getGatewayVariables($gatewayModuleName);
// Die if module is not active.
if (!$gatewayParams['type']) {
die("Module Not Activated");
}
// signature verified - we can trust this data
$calbackContent = Hutko_Helper::getCallbackContent($gatewayParams);
$order_id = explode(Hutko_Helper::ORDER_SEPARATOR, $calbackContent["order_id"]);
$invoiceId = $order_id[0];
$paymentAmount = round($calbackContent["amount"] / 100, 2);
$itIsServerCallback = isset($_GET['callbackMode']) && $_GET['callbackMode'] == 'server';
switch ($calbackContent['order_status']) {
case Hutko_Helper::ORDER_APPROVED:
$transactionStatus = 'success';
break;
case Hutko_Helper::ORDER_DECLINED:
$transactionStatus = 'failure';
break;
default:
$transactionStatus = 'unhandled hutko order status';
break;
}
$invoiceId = checkCbInvoiceID($invoiceId, $gatewayParams['name']);
checkCbTransID($calbackContent["order_id"]);
logTransaction($gatewayParams['name'], $calbackContent, $transactionStatus);
$paymentSuccess = false;
if ($transactionStatus === 'success' && $itIsServerCallback) {
addInvoicePayment(
$invoiceId,
$calbackContent["order_id"],
$paymentAmount,
0,
$gatewayModuleName
);
}
//if no errors and this is server to server callback - return 200 response, no redirect needed
if ($itIsServerCallback) {
http_response_code(200);
exit;
}
// redirect user to invoice page
callback3DSecureRedirect($invoiceId, $transactionStatus === 'success');