Files
2024-10-25 14:16:28 +02:00

119 lines
3.3 KiB
PHP

<?php
use Imoje\Payment\Util;
/**
* Class IMojeCheckmethodsModuleFrontController
*
* @property bool display_column_left
* @property bool display_column_right
* @property bool display_footer
* @property bool display_header
*/
class IMojeCheckmethodsModuleFrontController extends ModuleFrontController
{
/**
* Initialize controller.
*
* @throws PrestaShopException
* @see FrontController::init()
*/
public function init()
{
$this->display_column_left = false;
$this->display_column_right = false;
$this->display_footer = false;
$this->display_header = false;
parent::init();
}
/**
* Send request for activated payment methods
*/
public function process()
{
$imojePaymentMethods = json_decode(Configuration::get('IMOJE_PAYMENT_METHODS'), true);
if(!function_exists('curl_init')) {
$imojePaymentMethods['errorCurl'] = true;
Configuration::updateValue('IMOJE_PAYMENT_METHODS', json_encode($imojePaymentMethods));
Tools::redirect($_SERVER['HTTP_REFERER']);
return;
}
$algoHash = 'sha256';
$postData = json_encode([]);
$curlInit = curl_init(\Imoje\Payment\Configuration::getServiceUrl(Configuration::get('IMOJE_SANDBOX')
? Util::ENVIRONMENT_SANDBOX
: Util::ENVIRONMENT_PRODUCTION) . \Imoje\Payment\Configuration::ROUTE_CHECK_PAYMENT_METHODS);
curl_setopt($curlInit, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curlInit, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curlInit, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlInit, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curlInit, CURLOPT_TIMEOUT, 10);
curl_setopt($curlInit, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-Imoje-Signature: merchantid=' . Configuration::get('IMOJE_MERCHANT_ID')
. ';serviceid=' . Configuration::get('IMOJE_SERVICE_ID')
. ';signature=' . Util::hashSignature($algoHash, $postData, Configuration::get('IMOJE_SERVICE_KEY'))
. ';alg=' . $algoHash,
]);
$resultCurl = curl_exec($curlInit);
if(!$resultCurl
|| curl_getinfo($curlInit, CURLINFO_HTTP_CODE) !== 200
|| !Util::isJson($resultCurl)) {
$imojePaymentMethods['errorTmp'] = true;
Configuration::updateValue('IMOJE_PAYMENT_METHODS', json_encode($imojePaymentMethods));
Tools::redirect($_SERVER['HTTP_REFERER']);
return;
}
$receivedPaymentMethods = json_decode($resultCurl, true);
if(isset($receivedPaymentMethods['status'])
&& $receivedPaymentMethods['status'] !== 'ok') {
$imojePaymentMethods['errorTmp'] = true;
Configuration::updateValue('IMOJE_PAYMENT_METHODS', json_encode($imojePaymentMethods));
Tools::redirect($_SERVER['HTTP_REFERER']);
return;
}
$paymentMethods = [
'successTmp' => true,
];
if(isset($receivedPaymentMethods['data']['twisto'])
&& $receivedPaymentMethods['data']['twisto']['enable']) {
$paymentMethods['twisto'] = [
'sk' => $receivedPaymentMethods['data']['twisto']['sk'],
'pk' => $receivedPaymentMethods['data']['twisto']['pk'],
'timeout' => $receivedPaymentMethods['data']['twisto']['timeout'],
];
if(Configuration::get('IMOJE_TWISTO_ENABLED') === false) {
Configuration::updateValue('IMOJE_TWISTO_ENABLED', 1);
}
} else {
$paymentMethods['noTwisto'] = true;
}
Configuration::updateValue('IMOJE_PAYMENT_METHODS', json_encode($paymentMethods));
Tools::redirect($_SERVER['HTTP_REFERER']);
return;
}
}