62 lines
1.7 KiB
PHP
62 lines
1.7 KiB
PHP
<?php
|
|
define('MODX_API_MODE', true);
|
|
require dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/index.php';
|
|
|
|
$modx->getService('error', 'error.modError');
|
|
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
|
|
$modx->setLogTarget('FILE');
|
|
|
|
$miniShop2 = $modx->getService('minishop2');
|
|
$miniShop2->loadCustomClasses('payment');
|
|
|
|
if (!class_exists('Hutko')) {
|
|
header("HTTP/1.0 400 Bad Request");
|
|
exit('Error: could not load payment class "Hutko".');
|
|
}
|
|
|
|
$callbackContent = $_POST;
|
|
if (empty($callbackContent)) {
|
|
$callbackContent = json_decode(file_get_contents("php://input"), true);
|
|
}
|
|
if (empty($callbackContent) || !isset($callbackContent['order_id'])) {
|
|
header("HTTP/1.0 400 Bad Request");
|
|
die();
|
|
}
|
|
|
|
// 2. Extract Order ID safely. We need order to retrieve proper payment config for further signature validation
|
|
$order_id_parts = explode(Hutko::ORDER_SEPARATOR, $callbackContent['order_id']);
|
|
$order_id = (int)$order_id_parts[0];
|
|
if ($order_id < 1) {
|
|
header("HTTP/1.0 400 Bad Request");
|
|
die();
|
|
}
|
|
// 3. Fetch the Order
|
|
$order = $modx->getObject('msOrder', $order_id);
|
|
if (!$order) {
|
|
header("HTTP/1.0 400 Bad Request");
|
|
die();
|
|
}
|
|
|
|
$payment = $order->getOne('Payment');
|
|
if (!$payment) {
|
|
header("HTTP/1.0 400 Bad Request");
|
|
die();
|
|
}
|
|
|
|
if ($payment = $order->getOne('Payment')) {
|
|
if ($class = $payment->get('class')) {
|
|
$miniShop2->loadCustomClasses('payment');
|
|
if (class_exists($class)) {
|
|
/** @var msPaymentHandler|PayPal $handler */
|
|
$handler = new $class($order);
|
|
if (method_exists($handler, 'processCallback')) {
|
|
$link = $handler->processCallback($order, $callbackContent);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// it should exit in processCallback, but to be shure we safely end execution here too
|
|
die('OK');
|