Compare commits
9 Commits
d88b9ae470
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| f33bae78d1 | |||
| b581a33365 | |||
| 5f0f592bbc | |||
| a78490d419 | |||
| d258c6f5bf | |||
| a35c8aa098 | |||
| ecd9444920 | |||
| bab4d43a44 | |||
| 8194e18e85 |
3
cb.jsonl
3
cb.jsonl
@@ -1,3 +0,0 @@
|
||||
{"rrn":"029650316530","masked_card":"444455XXXXXX1111","sender_cell_phone":"","sender_account":"","currency":"UAH","fee":"","reversal_amount":"0","settlement_amount":"0","actual_amount":"7133","response_description":"","sender_email":"panariga@gmail.com","order_status":"approved","response_status":"success","order_time":"02.06.2025 08:55:25","actual_currency":"UAH","order_id":"15#1748843725","tran_type":"purchase","eci":"5","settlement_date":"","payment_system":"card","approval_code":"013197","merchant_id":1700002,"settlement_currency":"","payment_id":100006586,"card_bin":444455,"response_code":"","card_type":"VISA","amount":"7133","signature":"b206a00794701fbc120c6f8b8433a4d9b6a09da2","product_id":"","merchant_data":"","rectoken":"","rectoken_lifetime":"","verification_status":"","parent_order_id":"","additional_info":"{\"capture_status\": null, \"capture_amount\": null, \"reservation_data\": \"{\\\"cms_name\\\": \\\"Prestashop\\\", \\\"cms_version\\\": \\\"8.2.1\\\", \\\"shop_domain\\\": \\\"ps8.panariga.com\\\", \\\"path\\\": \\\"https:\/\/ps8.panariga.com\/module\/hutko\/redirect\\\", \\\"phonemobile\\\": \\\"0670670670\\\", \\\"customer_country\\\": \\\"Ukrayina\\\", \\\"customer_state\\\": \\\"\\\", \\\"customer_name\\\": \\\"ok ok\\\", \\\"customer_city\\\": \\\"Kyiv\\\", \\\"customer_zip\\\": \\\"01011\\\", \\\"account\\\": \\\"3\\\", \\\"uuid\\\": \\\"61424bf8fa3296d92b199ca86a4b6536bdbfafb55ae59d0ac12262c6dae3e9e9\\\", \\\"products\\\": [{\\\"id\\\": \\\"2_9_0\\\", \\\"name\\\": \\\"Hummingbird printed sweater (\\\\u0420\\\\u043e\\\\u0437\\\\u043c\\\\u0456\\\\u0440: S)\\\", \\\"price\\\": 34.46, \\\"total_amount\\\": 68.93, \\\"quantity\\\": 2}, {\\\"id\\\": \\\"\\\\u041a\\\\u043e\\\\u0434 \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"name\\\": \\\"\\\\u041d\\\\u0430\\\\u0437\\\\u0432\\\\u0430 \\\\u0434\\\\u043b\\\\u044f \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"price\\\": 2.4, \\\"total_amount\\\": 2.4, \\\"quantity\\\": 1}]}\", \"transaction_id\": 500006502, \"bank_response_code\": null, \"bank_response_description\": null, \"client_fee\": 0.0, \"settlement_fee\": 0.0, \"bank_name\": null, \"bank_country\": null, \"card_type\": \"VISA\", \"card_product\": \"empty_visa\", \"card_category\": \"\", \"timeend\": \"02.06.2025 08:55:31\", \"ipaddress_v4\": \"178.159.232.12\", \"payment_method\": \"card\", \"is_test\": true}","response_signature_string":"**********|7133|UAH|{\"capture_status\": null, \"capture_amount\": null, \"reservation_data\": \"{\\\"cms_name\\\": \\\"Prestashop\\\", \\\"cms_version\\\": \\\"8.2.1\\\", \\\"shop_domain\\\": \\\"ps8.panariga.com\\\", \\\"path\\\": \\\"https:\/\/ps8.panariga.com\/module\/hutko\/redirect\\\", \\\"phonemobile\\\": \\\"0670670670\\\", \\\"customer_country\\\": \\\"Ukrayina\\\", \\\"customer_state\\\": \\\"\\\", \\\"customer_name\\\": \\\"ok ok\\\", \\\"customer_city\\\": \\\"Kyiv\\\", \\\"customer_zip\\\": \\\"01011\\\", \\\"account\\\": \\\"3\\\", \\\"uuid\\\": \\\"61424bf8fa3296d92b199ca86a4b6536bdbfafb55ae59d0ac12262c6dae3e9e9\\\", \\\"products\\\": [{\\\"id\\\": \\\"2_9_0\\\", \\\"name\\\": \\\"Hummingbird printed sweater (\\\\u0420\\\\u043e\\\\u0437\\\\u043c\\\\u0456\\\\u0440: S)\\\", \\\"price\\\": 34.46, \\\"total_amount\\\": 68.93, \\\"quantity\\\": 2}, {\\\"id\\\": \\\"\\\\u041a\\\\u043e\\\\u0434 \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"name\\\": \\\"\\\\u041d\\\\u0430\\\\u0437\\\\u0432\\\\u0430 \\\\u0434\\\\u043b\\\\u044f \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"price\\\": 2.4, \\\"total_amount\\\": 2.4, \\\"quantity\\\": 1}]}\", \"transaction_id\": 500006502, \"bank_response_code\": null, \"bank_response_description\": null, \"client_fee\": 0.0, \"settlement_fee\": 0.0, \"bank_name\": null, \"bank_country\": null, \"card_type\": \"VISA\", \"card_product\": \"empty_visa\", \"card_category\": \"\", \"timeend\": \"02.06.2025 08:55:31\", \"ipaddress_v4\": \"178.159.232.12\", \"payment_method\": \"card\", \"is_**********\": true}|7133|013197|444455|VISA|UAH|5|444455XXXXXX1111|1700002|15#1748843725|approved|02.06.2025 08:55:25|100006586|card|success|0|029650316530|panariga@gmail.com|0|purchase"}
|
||||
{"rrn":"029650316530","masked_card":"444455XXXXXX1111","sender_cell_phone":"","sender_account":"","currency":"UAH","fee":"","reversal_amount":"1000","settlement_amount":"0","actual_amount":"7133","response_description":"","sender_email":"panariga@gmail.com","order_status":"approved","response_status":"success","order_time":"02.06.2025 08:55:25","actual_currency":"UAH","order_id":"15#1748843725","tran_type":"purchase","eci":"5","settlement_date":"","payment_system":"card","approval_code":"013197","merchant_id":1700002,"settlement_currency":"","payment_id":100006586,"card_bin":444455,"response_code":"","card_type":"VISA","amount":"7133","signature":"e0b1f119d57de3542f632b84e41e2c35c526ba05","product_id":"","merchant_data":"","rectoken":"","rectoken_lifetime":"","verification_status":"","parent_order_id":"","additional_info":"{\"capture_status\": null, \"capture_amount\": null, \"reservation_data\": \"{\\\"cms_name\\\": \\\"Prestashop\\\", \\\"cms_version\\\": \\\"8.2.1\\\", \\\"shop_domain\\\": \\\"ps8.panariga.com\\\", \\\"path\\\": \\\"https:\/\/ps8.panariga.com\/module\/hutko\/redirect\\\", \\\"phonemobile\\\": \\\"0670670670\\\", \\\"customer_country\\\": \\\"Ukrayina\\\", \\\"customer_state\\\": \\\"\\\", \\\"customer_name\\\": \\\"ok ok\\\", \\\"customer_city\\\": \\\"Kyiv\\\", \\\"customer_zip\\\": \\\"01011\\\", \\\"account\\\": \\\"3\\\", \\\"uuid\\\": \\\"61424bf8fa3296d92b199ca86a4b6536bdbfafb55ae59d0ac12262c6dae3e9e9\\\", \\\"products\\\": [{\\\"id\\\": \\\"2_9_0\\\", \\\"name\\\": \\\"Hummingbird printed sweater (\\\\u0420\\\\u043e\\\\u0437\\\\u043c\\\\u0456\\\\u0440: S)\\\", \\\"price\\\": 34.46, \\\"total_amount\\\": 68.93, \\\"quantity\\\": 2}, {\\\"id\\\": \\\"\\\\u041a\\\\u043e\\\\u0434 \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"name\\\": \\\"\\\\u041d\\\\u0430\\\\u0437\\\\u0432\\\\u0430 \\\\u0434\\\\u043b\\\\u044f \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"price\\\": 2.4, \\\"total_amount\\\": 2.4, \\\"quantity\\\": 1}]}\", \"transaction_id\": 500006504, \"bank_response_code\": null, \"bank_response_description\": null, \"client_fee\": 0.0, \"settlement_fee\": 0.0, \"bank_name\": null, \"bank_country\": null, \"card_type\": \"VISA\", \"card_product\": \"empty_visa\", \"card_category\": \"\", \"timeend\": \"02.06.2025 08:55:31\", \"ipaddress_v4\": \"178.159.232.12\", \"payment_method\": \"card\", \"is_test\": true}","response_signature_string":"**********|7133|UAH|{\"capture_status\": null, \"capture_amount\": null, \"reservation_data\": \"{\\\"cms_name\\\": \\\"Prestashop\\\", \\\"cms_version\\\": \\\"8.2.1\\\", \\\"shop_domain\\\": \\\"ps8.panariga.com\\\", \\\"path\\\": \\\"https:\/\/ps8.panariga.com\/module\/hutko\/redirect\\\", \\\"phonemobile\\\": \\\"0670670670\\\", \\\"customer_country\\\": \\\"Ukrayina\\\", \\\"customer_state\\\": \\\"\\\", \\\"customer_name\\\": \\\"ok ok\\\", \\\"customer_city\\\": \\\"Kyiv\\\", \\\"customer_zip\\\": \\\"01011\\\", \\\"account\\\": \\\"3\\\", \\\"uuid\\\": \\\"61424bf8fa3296d92b199ca86a4b6536bdbfafb55ae59d0ac12262c6dae3e9e9\\\", \\\"products\\\": [{\\\"id\\\": \\\"2_9_0\\\", \\\"name\\\": \\\"Hummingbird printed sweater (\\\\u0420\\\\u043e\\\\u0437\\\\u043c\\\\u0456\\\\u0440: S)\\\", \\\"price\\\": 34.46, \\\"total_amount\\\": 68.93, \\\"quantity\\\": 2}, {\\\"id\\\": \\\"\\\\u041a\\\\u043e\\\\u0434 \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"name\\\": \\\"\\\\u041d\\\\u0430\\\\u0437\\\\u0432\\\\u0430 \\\\u0434\\\\u043b\\\\u044f \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"price\\\": 2.4, \\\"total_amount\\\": 2.4, \\\"quantity\\\": 1}]}\", \"transaction_id\": 500006504, \"bank_response_code\": null, \"bank_response_description\": null, \"client_fee\": 0.0, \"settlement_fee\": 0.0, \"bank_name\": null, \"bank_country\": null, \"card_type\": \"VISA\", \"card_product\": \"empty_visa\", \"card_category\": \"\", \"timeend\": \"02.06.2025 08:55:31\", \"ipaddress_v4\": \"178.159.232.12\", \"payment_method\": \"card\", \"is_**********\": true}|7133|013197|444455|VISA|UAH|5|444455XXXXXX1111|1700002|15#1748843725|approved|02.06.2025 08:55:25|100006586|card|success|1000|029650316530|panariga@gmail.com|0|purchase"}
|
||||
{"rrn":"029650316530","masked_card":"444455XXXXXX1111","sender_cell_phone":"","sender_account":"","currency":"UAH","fee":"","reversal_amount":"1500","settlement_amount":"0","actual_amount":"7133","response_description":"","sender_email":"panariga@gmail.com","order_status":"approved","response_status":"success","order_time":"02.06.2025 08:55:25","actual_currency":"UAH","order_id":"15#1748843725","tran_type":"purchase","eci":"5","settlement_date":"","payment_system":"card","approval_code":"013197","merchant_id":1700002,"settlement_currency":"","payment_id":100006586,"card_bin":444455,"response_code":"","card_type":"VISA","amount":"7133","signature":"321a0ba0c767b2951869cca1264a8acf5937b139","product_id":"","merchant_data":"","rectoken":"","rectoken_lifetime":"","verification_status":"","parent_order_id":"","additional_info":"{\"capture_status\": null, \"capture_amount\": null, \"reservation_data\": \"{\\\"cms_name\\\": \\\"Prestashop\\\", \\\"cms_version\\\": \\\"8.2.1\\\", \\\"shop_domain\\\": \\\"ps8.panariga.com\\\", \\\"path\\\": \\\"https:\/\/ps8.panariga.com\/module\/hutko\/redirect\\\", \\\"phonemobile\\\": \\\"0670670670\\\", \\\"customer_country\\\": \\\"Ukrayina\\\", \\\"customer_state\\\": \\\"\\\", \\\"customer_name\\\": \\\"ok ok\\\", \\\"customer_city\\\": \\\"Kyiv\\\", \\\"customer_zip\\\": \\\"01011\\\", \\\"account\\\": \\\"3\\\", \\\"uuid\\\": \\\"61424bf8fa3296d92b199ca86a4b6536bdbfafb55ae59d0ac12262c6dae3e9e9\\\", \\\"products\\\": [{\\\"id\\\": \\\"2_9_0\\\", \\\"name\\\": \\\"Hummingbird printed sweater (\\\\u0420\\\\u043e\\\\u0437\\\\u043c\\\\u0456\\\\u0440: S)\\\", \\\"price\\\": 34.46, \\\"total_amount\\\": 68.93, \\\"quantity\\\": 2}, {\\\"id\\\": \\\"\\\\u041a\\\\u043e\\\\u0434 \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"name\\\": \\\"\\\\u041d\\\\u0430\\\\u0437\\\\u0432\\\\u0430 \\\\u0434\\\\u043b\\\\u044f \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"price\\\": 2.4, \\\"total_amount\\\": 2.4, \\\"quantity\\\": 1}]}\", \"transaction_id\": 500006506, \"bank_response_code\": null, \"bank_response_description\": null, \"client_fee\": 0.0, \"settlement_fee\": 0.0, \"bank_name\": null, \"bank_country\": null, \"card_type\": \"VISA\", \"card_product\": \"empty_visa\", \"card_category\": \"\", \"timeend\": \"02.06.2025 08:55:31\", \"ipaddress_v4\": \"178.159.232.12\", \"payment_method\": \"card\", \"is_test\": true}","response_signature_string":"**********|7133|UAH|{\"capture_status\": null, \"capture_amount\": null, \"reservation_data\": \"{\\\"cms_name\\\": \\\"Prestashop\\\", \\\"cms_version\\\": \\\"8.2.1\\\", \\\"shop_domain\\\": \\\"ps8.panariga.com\\\", \\\"path\\\": \\\"https:\/\/ps8.panariga.com\/module\/hutko\/redirect\\\", \\\"phonemobile\\\": \\\"0670670670\\\", \\\"customer_country\\\": \\\"Ukrayina\\\", \\\"customer_state\\\": \\\"\\\", \\\"customer_name\\\": \\\"ok ok\\\", \\\"customer_city\\\": \\\"Kyiv\\\", \\\"customer_zip\\\": \\\"01011\\\", \\\"account\\\": \\\"3\\\", \\\"uuid\\\": \\\"61424bf8fa3296d92b199ca86a4b6536bdbfafb55ae59d0ac12262c6dae3e9e9\\\", \\\"products\\\": [{\\\"id\\\": \\\"2_9_0\\\", \\\"name\\\": \\\"Hummingbird printed sweater (\\\\u0420\\\\u043e\\\\u0437\\\\u043c\\\\u0456\\\\u0440: S)\\\", \\\"price\\\": 34.46, \\\"total_amount\\\": 68.93, \\\"quantity\\\": 2}, {\\\"id\\\": \\\"\\\\u041a\\\\u043e\\\\u0434 \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"name\\\": \\\"\\\\u041d\\\\u0430\\\\u0437\\\\u0432\\\\u0430 \\\\u0434\\\\u043b\\\\u044f \\\\u0434\\\\u043e\\\\u0441\\\\u0442\\\\u0430\\\\u0432\\\\u043a\\\\u0438\\\", \\\"price\\\": 2.4, \\\"total_amount\\\": 2.4, \\\"quantity\\\": 1}]}\", \"transaction_id\": 500006506, \"bank_response_code\": null, \"bank_response_description\": null, \"client_fee\": 0.0, \"settlement_fee\": 0.0, \"bank_name\": null, \"bank_country\": null, \"card_type\": \"VISA\", \"card_product\": \"empty_visa\", \"card_category\": \"\", \"timeend\": \"02.06.2025 08:55:31\", \"ipaddress_v4\": \"178.159.232.12\", \"payment_method\": \"card\", \"is_**********\": true}|7133|013197|444455|VISA|UAH|5|444455XXXXXX1111|1700002|15#1748843725|approved|02.06.2025 08:55:25|100006586|card|success|1500|029650316530|panariga@gmail.com|0|purchase"}
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<module>
|
||||
<name>hutko</name>
|
||||
<displayName><![CDATA[Hutko Payments]]></displayName>
|
||||
<version><![CDATA[1.2.0]]></version>
|
||||
<description><![CDATA[Hutko is a payment platform whose main function is to provide internet acquiring.]]></description>
|
||||
<author><![CDATA[Hutko]]></author>
|
||||
<tab><![CDATA[payments_gateways]]></tab>
|
||||
<is_configurable>1</is_configurable>
|
||||
<need_instance>1</need_instance>
|
||||
</module>
|
||||
@@ -36,7 +36,7 @@ class HutkoCallbackModuleFrontController extends ModuleFrontController
|
||||
exit;
|
||||
}
|
||||
try {
|
||||
// 1. Parse the incoming request body.
|
||||
// Parse the incoming request body.
|
||||
$calbackContent = $this->getCallbackContent();
|
||||
|
||||
|
||||
@@ -55,13 +55,13 @@ class HutkoCallbackModuleFrontController extends ModuleFrontController
|
||||
$this->context->customer = new Customer($order->id_customer);
|
||||
$this->context->language = new Language($order->id_lang);
|
||||
|
||||
// 7. Handle payment status from the callback.
|
||||
// Handle payment status from the callback.
|
||||
$orderStatusCallback = $calbackContent['order_status'];
|
||||
$currentOrderState = (int)$order->getCurrentState();
|
||||
|
||||
switch ($orderStatusCallback) {
|
||||
case 'approved':
|
||||
// Only success state if no refunds was done.
|
||||
// Only process success state if no refunds was done.
|
||||
if ($calbackContent['response_status'] == 'success' && (int)$calbackContent['reversal_amount'] === 0) {
|
||||
$expectedState = (int)Configuration::get('HUTKO_SUCCESS_STATUS_ID', null, null, null, Configuration::get('PS_OS_PAYMENT'));
|
||||
// Only change state if it's not already the success state or "Payment accepted".
|
||||
@@ -71,6 +71,7 @@ class HutkoCallbackModuleFrontController extends ModuleFrontController
|
||||
$amountFloat = round($callbackAmount / 100, 2);
|
||||
$order->addOrderPayment($amountFloat, $this->module->displayName, $calbackContent['order_id'], $this->context->currency);
|
||||
$order->setCurrentState($expectedState);
|
||||
$this->module->addOrderMessage($order, $this->trans('Pay via Hutko: ', [], 'Modules.Hutko.Admin') . ' ' . $calbackContent['currency'] . $amountFloat);
|
||||
}
|
||||
}
|
||||
exit('OK');
|
||||
@@ -120,13 +121,13 @@ class HutkoCallbackModuleFrontController extends ModuleFrontController
|
||||
{
|
||||
$calbackContent = json_decode(file_get_contents("php://input"), true);
|
||||
if (!is_array($calbackContent) || !count($calbackContent)) {
|
||||
PrestaShopLogger::addLog('Hutko Callback: Empty request body received.', 2, null, 'Cart', null, true);
|
||||
PrestaShopLogger::addLog('Hutko Callback: Empty request body received.', 2);
|
||||
throw new Exception('Empty request');
|
||||
}
|
||||
// Assuming validateResponse returns true on success, or a string error message on failure.
|
||||
$isSignatureValid = $this->module->validateResponse($calbackContent);
|
||||
if ($isSignatureValid !== true) {
|
||||
PrestaShopLogger::addLog('Hutko Callback: Invalid signature. Error: ' . $isSignatureValid, 2, null, 'Cart', null, true);
|
||||
PrestaShopLogger::addLog('Hutko Callback: Invalid signature. Error: ' . $isSignatureValid, 2);
|
||||
throw new Exception('Invalid signature');
|
||||
}
|
||||
if (Configuration::get('HUTKO_SAVE_LOGS')) {
|
||||
|
||||
@@ -57,7 +57,7 @@ class HutkoRedirectModuleFrontController extends ModuleFrontController
|
||||
return;
|
||||
}
|
||||
$this->context->smarty->assign([
|
||||
'hutko_response' => $responseData['response'], // The URL of the Hutko payment gateway.
|
||||
'hutko_response' => $responseData['response'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,8 +77,6 @@ class HutkoReturnModuleFrontController extends ModuleFrontController
|
||||
// Validate the decoded JSON:
|
||||
// 1. Check if json_decode returned an array.
|
||||
// 2. Check if all expected keys ('id_cart', 'id_module', 'id_order', 'key') exist in the array.
|
||||
// 3. Check if the 'key' from the decoded data matches the secure key of the currently logged-in customer.
|
||||
// This is a critical security step to prevent unauthorized access to order details.
|
||||
if (
|
||||
is_array($decodedPV)
|
||||
&& isset($decodedPV['id_cart'])
|
||||
|
||||
113
hutko.php
113
hutko.php
@@ -36,7 +36,8 @@ class Hutko extends PaymentModule
|
||||
'HUTKO_NEW_ORDER_STATUS_ID',
|
||||
'HUTKO_SUCCESS_STATUS_ID',
|
||||
'HUTKO_SHOW_CARDS_LOGO',
|
||||
'HUTKO_SAVE_LOGS'
|
||||
'HUTKO_SAVE_LOGS',
|
||||
'HUTKO_INCLUDE_DISCOUNT_TO_TOTAL'
|
||||
];
|
||||
public $postErrors = [];
|
||||
|
||||
@@ -44,9 +45,10 @@ class Hutko extends PaymentModule
|
||||
{
|
||||
$this->name = 'hutko';
|
||||
$this->tab = 'payments_gateways';
|
||||
$this->version = '1.2.0';
|
||||
$this->version = '1.3.2';
|
||||
$this->author = 'Hutko';
|
||||
$this->bootstrap = true;
|
||||
$this->need_instance = false;
|
||||
parent::__construct();
|
||||
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
|
||||
//Do not translate displayName as it is used for payment identification
|
||||
@@ -68,13 +70,13 @@ class Hutko extends PaymentModule
|
||||
// We only need to check if the *required* hook for this version was successfully registered.
|
||||
$conditionalHookSuccess = true; // Assume success until we try to register one and it fails
|
||||
|
||||
// Check if PrestaShop version is 1.7.x (>= 1.7 and < 8.0)
|
||||
if (version_compare(_PS_VERSION_, '1.7', '>=') && version_compare(_PS_VERSION_, '8.0', '<')) {
|
||||
// Check if PrestaShop version is 1.7.x (>= 1.7 and < 1.7.7)
|
||||
if (version_compare(_PS_VERSION_, '1.7', '>=') && version_compare(_PS_VERSION_, '1.7.7', '<')) {
|
||||
// Register the 1.7 hook
|
||||
$conditionalHookSuccess = $this->registerHook('displayAdminOrderContentOrder');
|
||||
}
|
||||
// Check if PrestaShop version is 8.x or 9.x (>= 8.0 and < 10.0)
|
||||
elseif (version_compare(_PS_VERSION_, '8.0', '>=') && version_compare(_PS_VERSION_, '10.0', '<')) {
|
||||
// Check if PrestaShop version is 1.7.7 or 9.x (>= 1.7.7 and < 10.0)
|
||||
elseif (version_compare(_PS_VERSION_, '1.7.7', '>=') && version_compare(_PS_VERSION_, '10.0', '<')) {
|
||||
// Register the 8.x/9.x hook
|
||||
$conditionalHookSuccess = $this->registerHook('displayAdminOrderTabContent');
|
||||
}
|
||||
@@ -99,10 +101,11 @@ class Hutko extends PaymentModule
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load the configuration form
|
||||
*/
|
||||
public function getContent()
|
||||
public function getContent(): string
|
||||
{
|
||||
/**
|
||||
* If values have been submitted in the form, process.
|
||||
@@ -119,7 +122,7 @@ class Hutko extends PaymentModule
|
||||
}
|
||||
}
|
||||
|
||||
return $err . $this->renderForm();
|
||||
return $err . $this->renderForm() . $this->context->smarty->fetch('module:hutko/views/templates/admin/help.tpl') . $this->displayLastDayLog();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,7 +179,7 @@ class Hutko extends PaymentModule
|
||||
'col' => 4,
|
||||
'type' => 'text',
|
||||
'prefix' => '<i class="icon icon-user"></i>',
|
||||
'desc' => $this->trans('Enter a merchant id. Use 1700002 for test setup.', array(), 'Modules.Hutko.Admin'),
|
||||
'desc' => $this->trans('Enter a merchant id. Use "1700243" for test setup.', array(), 'Modules.Hutko.Admin'),
|
||||
'name' => 'HUTKO_MERCHANT',
|
||||
'label' => $this->trans('Merchant ID.', array(), 'Modules.Hutko.Admin'),
|
||||
),
|
||||
@@ -260,6 +263,24 @@ class Hutko extends PaymentModule
|
||||
)
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'radio',
|
||||
'label' => $this->trans('Include fixed amount discounts to Payment amount calculation', array(), 'Modules.Hutko.Admin'),
|
||||
'name' => 'HUTKO_INCLUDE_DISCOUNT_TO_TOTAL',
|
||||
'is_bool' => true,
|
||||
'values' => array(
|
||||
array(
|
||||
'id' => 'include_discount_to_total',
|
||||
'value' => 1,
|
||||
'label' => $this->trans('Yes', array(), 'Modules.Hutko.Admin')
|
||||
),
|
||||
array(
|
||||
'id' => 'discard_discount_to_total',
|
||||
'value' => 0,
|
||||
'label' => $this->trans('No', array(), 'Modules.Hutko.Admin')
|
||||
)
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'radio',
|
||||
'label' => $this->trans('Save Logs', array(), 'Modules.Hutko.Admin'),
|
||||
@@ -426,6 +447,11 @@ class Hutko extends PaymentModule
|
||||
$amount = $order->total_products_wt;
|
||||
}
|
||||
}
|
||||
if (Configuration::get('HUTKO_INCLUDE_DISCOUNT_TO_TOTAL')) {
|
||||
$amount -= $order->total_discounts_tax_incl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$amountInt = round($amount * 100);
|
||||
// 5. Get the currency ISO code of the current cart.
|
||||
@@ -557,7 +583,7 @@ class Hutko extends PaymentModule
|
||||
if (Configuration::get('HUTKO_SHIPPING_INCLUDE') && $order->total_shipping_tax_incl > 0) {
|
||||
$products[] = [
|
||||
"id" => Configuration::get('HUTKO_SHIPPING_PRODUCT_CODE', null, null, null, '0_0_1'),
|
||||
"name" => Configuration::get('HUTKO_SHIPPING_PRODUCT_NAME', null, null, null, 'Service Fee'),
|
||||
"name" => Configuration::get('HUTKO_SHIPPING_PRODUCT_NAME', null, null, null, 'Package material'),
|
||||
"price" => round((float)$order->total_shipping_tax_incl, 2),
|
||||
"total_amount" => round((float) $order->total_shipping_tax_incl, 2),
|
||||
"quantity" => 1,
|
||||
@@ -969,7 +995,7 @@ class Hutko extends PaymentModule
|
||||
}
|
||||
$amountFloat = round((int)$response['response']['reversal_amount'] / 100, 2);
|
||||
|
||||
$this->addOrderMessage($order, $this->trans('Refund success.', [], 'Modules.Hutko.Admin') . ' ' . $currency->iso_code . $amountFloat);
|
||||
$this->addOrderMessage($order, $this->trans('Refund success.', [], 'Modules.Hutko.Admin') . ' ' . $currency->iso_code . $amountFloat . '. [' . $comment . ']');
|
||||
$order->addOrderPayment($amountFloat, $this->displayName, $orderPayment->transaction_id . '_refund', $currency);
|
||||
$order->setCurrentState((int)Configuration::get('PS_OS_REFUND'));
|
||||
|
||||
@@ -1221,7 +1247,72 @@ class Hutko extends PaymentModule
|
||||
$logger->setFilename($logdirectory . 'dayly.log');
|
||||
$logger->logInfo($data);
|
||||
}
|
||||
public function displayLastDayLog()
|
||||
{
|
||||
$baseLogDir = _PS_ROOT_DIR_ . '/var/modules/' . $this->name . '/logs/';
|
||||
$daysToCheck = 30; // How many recent days to check for logs
|
||||
|
||||
$latestLogFile = false;
|
||||
$logDate = null;
|
||||
|
||||
// Find the latest log file by iterating backward from today
|
||||
for ($i = 0; $i < $daysToCheck; $i++) {
|
||||
// Use \DateTime for clarity as we might be in a different namespace
|
||||
$date = new \DateTime("-$i days");
|
||||
$year = $date->format("Y");
|
||||
$month = $date->format("m");
|
||||
$day = $date->format("d");
|
||||
|
||||
$potentialDir = $baseLogDir . $year . '/' . $month . '/' . $day . '/';
|
||||
$potentialFile = $potentialDir . 'dayly.log';
|
||||
|
||||
if (is_dir($potentialDir) && file_exists($potentialFile)) {
|
||||
$latestLogFile = $potentialFile;
|
||||
$logDate = $date; // Store the date of the found log
|
||||
break; // Found the latest one, stop searching
|
||||
}
|
||||
}
|
||||
|
||||
// Prepare HTML output
|
||||
$html = '<div class="panel">';
|
||||
// Use translation function for the heading
|
||||
$html .= '<div class="panel-heading"><i class="icon-align-left"></i> ' . $this->trans('Hutko Module Logs', [], 'Modules.Hutko.Admin') . '</div>';
|
||||
$html .= '<div class="panel-body">';
|
||||
|
||||
if ($latestLogFile) {
|
||||
// Add a heading indicating the date of the log file
|
||||
$html .= '<h4>' . sprintf($this->trans('Log file for %s', [], 'Modules.Hutko.Admin'), $logDate->format("Y-m-d")) . '</h4>';
|
||||
|
||||
// Read the file line by line into an array
|
||||
// FILE_IGNORE_NEW_LINES: removes the trailing newline character from each element
|
||||
// FILE_SKIP_EMPTY_LINES: skips empty lines
|
||||
$lines = file($latestLogFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
|
||||
if ($lines !== false) { // Check if file() succeeded
|
||||
if (empty($lines)) {
|
||||
$html .= '<p>' . $this->trans('The log file is empty.', [], 'Modules.Hutko.Admin') . '</p>';
|
||||
} else {
|
||||
// Output each line wrapped in a <p> tag
|
||||
foreach ($lines as $line) {
|
||||
// Use htmlspecialchars to prevent HTML injection and display characters correctly
|
||||
// Add word-wrap style for long lines
|
||||
$html .= '<p style="word-wrap: break-word;">' . htmlspecialchars($line, ENT_QUOTES, 'UTF-8') . '</p>';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Error reading the file
|
||||
$html .= '<div class="alert alert-warning">' . $this->trans('Could not read the log file:', [], 'Modules.Hutko.Admin') . ' ' . $latestLogFile . '</div>';
|
||||
}
|
||||
} else {
|
||||
// No log file found in the specified range
|
||||
$html .= '<div class="alert alert-info">' . sprintf($this->trans('No log file found in the last %d days.', [], 'Modules.Hutko.Admin'), $daysToCheck) . '</div>';
|
||||
}
|
||||
|
||||
$html .= '</div>'; // End panel-body
|
||||
$html .= '</div>'; // End panel
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* URL-safe encodes a string using a Base64-like approach.
|
||||
|
||||
240
readme.md
240
readme.md
@@ -1,199 +1,193 @@
|
||||
# Платіжний модуль Hutko PrestaShop
|
||||
# Платіжний модуль Hutko для PrestaShop
|
||||
|
||||
Hutko – це платіжний сервіс, який рухає бізнес вперед. Запуск, набирання обертів, масштабування – ми подбаємо про вас усюди.
|
||||
**Hutko** — це сучасний платіжний сервіс, який допомагає бізнесу розвиватися на всіх етапах: запуск, масштабування, зростання. Надійно. Швидко. Зручно.
|
||||
|
||||
Цей модуль інтегрує платіжний шлюз Hutko у ваш магазин PrestaShop, дозволяючи вашим клієнтам безпечно оплачувати свої замовлення через Hutko.
|
||||
Цей модуль інтегрує платіжний шлюз Hutko у ваш інтернет-магазин на PrestaShop, надаючи покупцям можливість безпечно та комфортно оплачувати замовлення онлайн.
|
||||
|
||||
---
|
||||
|
||||
## Зміст
|
||||
|
||||
1. [Функції](#функції)
|
||||
|
||||
1. [Можливості](#можливості)
|
||||
2. [Встановлення](#встановлення)
|
||||
|
||||
3. [Конфігурація](#конфігурація)
|
||||
|
||||
3. [Налаштування](#налаштування)
|
||||
4. [Використання](#використання)
|
||||
|
||||
5. [Підтримка](#підтримка)
|
||||
|
||||
## Функції
|
||||
---
|
||||
|
||||
* Безперешкодна інтеграція з платіжним шлюзом Hutko.
|
||||
## Можливості
|
||||
|
||||
* Безпечна обробка платежів.
|
||||
- Повна інтеграція з платіжною платформою Hutko для PrestaShop 1.7.7 – 8.2 (та 9.0-бета).
|
||||
- Підтримка збереження платіжного посилання — зручно для повторної оплати.
|
||||
- Повернення коштів (повне або часткове) безпосередньо зі сторінки замовлення.
|
||||
- Синхронізація статусів платежів: Схвалено, Відхилено, Минув термін, Обробляється.
|
||||
- Автоматичне оновлення статусу замовлень у PrestaShop.
|
||||
- Можливість включення доставки у загальну суму платежу.
|
||||
- Журнал запитів до Hutko API — для діагностики та підвищеної безпеки.
|
||||
|
||||
* Підтримка різних статусів платежів (Схвалено, Відхилено, Минув термін дії, Обробляється).
|
||||
|
||||
* Автоматичне оновлення статусу замовлення в PrestaShop.
|
||||
|
||||
* Надійна обробка зворотних викликів платежів для запобігання умовам гонки.
|
||||
---
|
||||
|
||||
## Встановлення
|
||||
|
||||
Виконайте такі кроки, щоб встановити модуль Hutko у вашому магазині PrestaShop:
|
||||
Перед встановленням переконайтесь, що на сервері активовано PHP-розширення **cURL**.
|
||||
|
||||
1. **Завантажте модуль:** Отримайте останню версію модуля Hutko з офіційного джерела або з наданого вами пакета.
|
||||
1. **Завантаження модуля**
|
||||
- Отримайте актуальну версію з офіційного репозиторію модуля.
|
||||
|
||||
2. **Завантажте в PrestaShop:**
|
||||
2. **Інсталяція в PrestaShop**
|
||||
- Увійдіть в адмін-панель.
|
||||
- Перейдіть у `Модулі > Менеджер модулів`.
|
||||
- Натисніть кнопку `Завантажити модуль`.
|
||||
- Завантажте `.zip` файл модуля.
|
||||
|
||||
* Увійдіть до панелі адміністратора PrestaShop.
|
||||
3. **Встановлення**
|
||||
- Після завантаження PrestaShop автоматично розпізнає модуль.
|
||||
- Дотримуйтесь інструкцій на екрані для завершення інсталяції.
|
||||
|
||||
* Перейдіть до **Модулі > Менеджер модулів**.
|
||||
---
|
||||
|
||||
* Натисніть кнопку «Завантажити модуль» (зазвичай розташована у верхньому правому куті).
|
||||
## Налаштування
|
||||
|
||||
* Перетягніть файл модуля `.zip` в область завантаження або клацніть, щоб вибрати файл.
|
||||
Після встановлення перейдіть до налаштувань модуля та внесіть реквізити свого облікового запису Hutko.
|
||||
|
||||
3. **Встановіть модуль:**
|
||||
1. **Відкрити параметри модуля**
|
||||
- Панель адміністратора → `Модулі > Менеджер модулів`.
|
||||
- Знайдіть "Hutko" та натисніть `Налаштувати`.
|
||||
|
||||
* Після завантаження PrestaShop автоматично виявить модуль.
|
||||
2. **Введіть облікові дані**
|
||||
- `Ідентифікатор продавця (Merchant ID)` — унікальний код від Hutko (**обов’язкове** поле).
|
||||
- `Секретний ключ` — необхідний для захисту підпису операцій (**обов’язкове** поле).
|
||||
- Виберіть статуси замовлення:
|
||||
- для успішної оплати
|
||||
- для очікування оплати
|
||||
- Опціонально: ввімкніть/вимкніть показ логотипів платіжних карток.
|
||||
|
||||
* Натисніть кнопку «Встановити» поруч із модулем «Hutko».
|
||||
3. **Збережіть налаштування**
|
||||
- Натисніть кнопку `Зберегти`.
|
||||
|
||||
* Дотримуйтесь будь-яких підказок на екрані.
|
||||
> ⚠️ Без коректних облікових даних сервісу Hutko модуль не працюватиме.
|
||||
|
||||
## Конфігурація
|
||||
|
||||
Після успішної інсталяції необхідно налаштувати модуль, використовуючи дані вашого облікового запису Hutko:
|
||||
|
||||
1. **Конфігурація модуля доступу:**
|
||||
|
||||
* У панелі адміністратора PrestaShop перейдіть до **Модулі > Менеджер модулів**.
|
||||
|
||||
* Знайдіть модуль "Hutko" та натисніть кнопку "Налаштувати".
|
||||
|
||||
2. **Введіть необхідні облікові дані:**
|
||||
|
||||
* **Ідентифікатор продавця:** Введіть свій унікальний ідентифікатор продавця, наданий Hutko. Це обов'язкове поле.
|
||||
|
||||
* **Секретний ключ:** Введіть свій секретний ключ, наданий Hutko. Це обов'язкове поле, яке є критично важливим для безпечної перевірки підпису.
|
||||
|
||||
* **Статус успішного замовлення:** (Необов'язково, якщо застосовується) Виберіть статус замовлення, який слід застосовувати до замовлень, успішно оплачених через Hutko.
|
||||
|
||||
* **Показати логотип картки:** (Необов'язково) Увімкніть або вимкніть відображення логотипів картки на сторінці вибору способу оплати.
|
||||
|
||||
3. **Зберегти зміни:** Натисніть кнопку "Зберегти", щоб застосувати налаштування конфігурації.
|
||||
|
||||
**Важливо:** Без правильного налаштування **Ідентифікатора продавця** та **Секретного ключа** модуль не працюватиме належним чином і не відображатиметься як варіант оплати під час оформлення замовлення.
|
||||
---
|
||||
|
||||
## Використання
|
||||
|
||||
Після налаштування варіант оплати Hutko автоматично з’явиться на сторінці оформлення замовлення для клієнтів.
|
||||
Після налаштування модуль автоматично додає Hutko як спосіб оплати на сторінці оформлення замовлення.
|
||||
|
||||
1. Клієнти вибирають «Оплатити через Hutko» на кроці оплати.
|
||||
1. Клієнт обирає "Оплатити через Hutko".
|
||||
2. Відбувається переадресація на платіжну сторінку Hutko.
|
||||
3. Після успішної оплати — автоматичне повернення до PrestaShop і оновлення статусу замовлення.
|
||||
4. У разі помилки — клієнта буде перенаправлено з повідомленням про помилку.
|
||||
5. Модуль автоматично отримує від серверу Hutko інформацію про оновлення стану платежу. При зміні статусу на "помилка" (declined) або "час вичерпано" (expired) - модуль присвоїть замовленню системний статус "Помилка платежу".
|
||||
6. Якщо в налаштуваннях Prestashop встановлено рівень безпеки для Cookie SameSite "strict", то, при поверненні на сайт зі сторінки платежів Hutko, клієнт буде деавторизований. Це обмеження системи Prestashop. Модуль має спеціальну сторінку переадресації, яка дозволяє навіть при такому сценарї відобразити клієнту сторінку з підтвердженням замовлення. Для уникнення незручностей клієнтів рекомендуємо встановити обмеження Cookie SameSite у "none" (на вкладці Розширені параметри -> Адімністрування).
|
||||
7. Якщо статус замовлення в Prestashop має відмітку "вважати оплаченим", то при присвоєнні такого статусу, Prestashop автоматично створить в блоці Платежі новий платіж на суму недоплати. Це може створити непорозуміння щодо сум фактичних оплат. Для цього рекомендуємо обирати в налаштуваннях модулю статуси, в яких відключене налаштування "вважати оплаченим".
|
||||
|
||||
2. Їх буде перенаправлено на сторінку оплати Hutko для завершення транзакції.
|
||||
|
||||
3. Після успішної оплати клієнта буде перенаправлено назад на сторінку підтвердження замовлення вашого магазину PrestaShop, і статус замовлення буде оновлено відповідно.
|
||||
|
||||
4. У разі невдалої оплати клієнта буде перенаправлено назад на сторінку замовлення з відповідним повідомленням про помилку.
|
||||
---
|
||||
|
||||
## Підтримка
|
||||
|
||||
Якщо у вас виникнуть проблеми або виникнуть запитання щодо модуля Hutko PrestaShop, будь ласка, зверніться до наступного:
|
||||
Якщо у вас виникли запитання або труднощі:
|
||||
|
||||
* **Документація Hutko:** Зверніться до офіційного API та документації інтеграції Hutko для отримання детальної інформації.
|
||||
- Звертайтеся до [документації Hutko API](https://hutko.org/uk/).
|
||||
- Ставте питання на [форумі PrestaShop](https://www.prestashop.com/forums/).
|
||||
|
||||
* **Форуми PrestaShop:** Шукайте або залишайте своє запитання на офіційних форумах PrestaShop.
|
||||
---
|
||||
|
||||
* **Зв’язатися з розробником:** Для отримання безпосередньої підтримки ви можете звернутися до автора модуля `panariga`.
|
||||
© Hutko, 2025. Усі права захищено.
|
||||
|
||||
# Hutko PrestaShop Payment Module
|
||||
# Hutko Payment Module for PrestaShop
|
||||
|
||||
Hutko is a payment service that drives businesses forward. Launch, gain momentum, scale – we've got you covered everywhere.
|
||||
**Hutko** is a modern payment service that helps businesses grow at all stages: launch, scale, growth. Reliable. Fast. Convenient.
|
||||
|
||||
This module integrates the Hutko payment gateway into your PrestaShop store, allowing your customers to pay for their orders securely through Hutko.
|
||||
This module integrates the Hutko payment gateway into your online store on PrestaShop, giving customers the opportunity to pay for orders safely and comfortably online.
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Features](#features)
|
||||
|
||||
1. [Features](#Features)
|
||||
2. [Installation](#installation)
|
||||
|
||||
3. [Configuration](#configuration)
|
||||
|
||||
4. [Usage](#usage)
|
||||
|
||||
5. [Support](#support)
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
* Seamless integration with the Hutko payment gateway.
|
||||
- Full integration with the Hutko payment platform for PrestaShop 1.7.7 – 8.2 (and 9.0-beta).
|
||||
- Support for saving the payment link — convenient for repeated payments.
|
||||
- Refund (full or partial) directly from the order page.
|
||||
- Synchronization of payment statuses: Approved, Rejected, Expired, Processing.
|
||||
- Automatic update of order statuses in PrestaShop.
|
||||
- Ability to include shipping in the total payment amount.
|
||||
- Hutko API request log — for diagnostics and increased security.
|
||||
|
||||
* Secure payment processing.
|
||||
|
||||
* Support for various payment statuses (Approved, Declined, Expired, Processing).
|
||||
|
||||
* Automatic order status updates in PrestaShop.
|
||||
|
||||
* Robust handling of payment callbacks to prevent race conditions.
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Follow these steps to install the Hutko module on your PrestaShop store:
|
||||
Before installation, make sure that the PHP extension **cURL** is activated on the server.
|
||||
|
||||
1. **Download the Module:** Obtain the latest version of the Hutko module from the official source or your provided package.
|
||||
1. **Downloading the module**
|
||||
- Get the current version from the official module repository.
|
||||
|
||||
2. **Upload to PrestaShop:**
|
||||
2. **Installing in PrestaShop**
|
||||
- Log in to the admin panel.
|
||||
- Go to `Modules > Module Manager`.
|
||||
- Click the `Download module` button.
|
||||
- Download the `.zip` module file.
|
||||
|
||||
* Log in to your PrestaShop admin panel.
|
||||
3. **Installation**
|
||||
- After downloading, PrestaShop will automatically recognize the module.
|
||||
- Follow the on-screen instructions to complete the installation.
|
||||
|
||||
* Navigate to **Modules > Module Manager**.
|
||||
---
|
||||
|
||||
* Click on the "Upload a module" button (usually located in the top right corner).
|
||||
## Settings
|
||||
|
||||
* Drag and drop the module's `.zip` file into the upload area, or click to select the file.
|
||||
After installation, go to the module settings and enter your Hutko account details.
|
||||
|
||||
3. **Install the Module:**
|
||||
1. **Open module settings**
|
||||
- Admin panel → `Modules > Module manager`.
|
||||
- Find "Hutko" and click `Configure`.
|
||||
|
||||
* Once uploaded, PrestaShop will automatically detect the module.
|
||||
2. **Enter credentials**
|
||||
- `Merchant ID` — a unique code from Hutko (**required** field).
|
||||
- `Secret key` — required to protect the signature of transactions (**required** field).
|
||||
- Select order statuses:
|
||||
- for successful payment
|
||||
- for payment pending
|
||||
- Optional: enable/disable the display of payment card logos.
|
||||
|
||||
* Click on the "Install" button next to the "Hutko" module.
|
||||
3. **Save settings**
|
||||
- Click the `Save` button.
|
||||
|
||||
* Follow any on-screen prompts.
|
||||
> ⚠️ Without correct Hutko service credentials, the module will not work.
|
||||
|
||||
## Configuration
|
||||
|
||||
After successful installation, you must configure the module with your Hutko account details:
|
||||
|
||||
1. **Access Module Configuration:**
|
||||
|
||||
* In your PrestaShop admin panel, go to **Modules > Module Manager**.
|
||||
|
||||
* Find the "Hutko" module and click on the "Configure" button.
|
||||
|
||||
2. **Enter Required Credentials:**
|
||||
|
||||
* **Merchant ID:** Enter your unique Merchant ID provided by Hutko. This is a mandatory field.
|
||||
|
||||
* **Secret Key:** Enter your Secret Key provided by Hutko. This is a mandatory field and is crucial for secure signature validation.
|
||||
|
||||
* **Success Order Status:** (Optional, if applicable) Select the order status that should be applied to orders successfully paid via Hutko.
|
||||
|
||||
* **Show Cards Logo:** (Optional) Enable or disable the display of card logos on the payment selection page.
|
||||
|
||||
3. **Save Changes:** Click the "Save" button to apply your configuration settings.
|
||||
|
||||
**Important:** Without setting the correct **Merchant ID** and **Secret Key**, the module will not function correctly and will not appear as a payment option during checkout.
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
Once configured, the Hutko payment option will automatically appear on your checkout page for customers.
|
||||
After configuration, the module automatically adds Hutko as a payment method on the checkout page.
|
||||
|
||||
1. Customers select "Pay via Hutko" on the payment step of the checkout.
|
||||
1. The customer selects "Pay via Hutko".
|
||||
2. Redirects to the Hutko payment page.
|
||||
3. After successful payment, automatic return to PrestaShop and update of the order status.
|
||||
4. In case of an error, the customer will be redirected with an error message.
|
||||
5. The module automatically receives information about the payment status update from the Hutko server. If the status changes to "declined" or "expired", the module will assign the order the system status "Payment error".
|
||||
6. If the security level for Cookie SameSite is set to "strict" in the Prestashop settings, then when returning to the site from the Hutko payment page, the customer will be deauthorized. This is a limitation of the Prestashop system. The module has a special redirect page, which allows even in such a scenario to display the order confirmation page to the client. To avoid customer inconvenience, we recommend setting the SameSite Cookie restriction to "none" (on the Advanced Settings -> Administration tab).
|
||||
7. If the order status in Prestashop is marked "consider paid", then when assigning such a status, Prestashop will automatically create a new payment in the Payments block for the amount of the underpayment. This may create a misunderstanding regarding the amounts of actual payments. To do this, we recommend choosing statuses in the module settings in which the "consider paid" setting is disabled.
|
||||
|
||||
2. They are redirected to the Hutko payment page to complete their transaction.
|
||||
|
||||
3. Upon successful payment, the customer is redirected back to your PrestaShop store's order confirmation page, and the order status is updated accordingly.
|
||||
|
||||
4. In case of payment failure, the customer will be redirected back to the order page with an appropriate error message.
|
||||
---
|
||||
|
||||
## Support
|
||||
|
||||
If you encounter any issues or have questions regarding the Hutko PrestaShop module, please refer to the following:
|
||||
If you have any questions or difficulties:
|
||||
|
||||
* **Hutko Documentation:** Consult the official Hutko API and integration documentation for detailed information.
|
||||
- Contact the [Hutko API documentation](https://hutko.org/uk/).
|
||||
- Ask a question on the [PrestaShop forum](https://www.prestashop.com/forums/).
|
||||
|
||||
* **PrestaShop Forums:** Search or post your question on the official PrestaShop forums.
|
||||
---
|
||||
|
||||
* **Contact Developer:** For direct support, you can contact the module author `panariga`.
|
||||
© Hutko, 2025. All rights reserved.
|
||||
@@ -2,19 +2,24 @@
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file original="admin105hcnvdgjnh2pvlogh" source-language="ru-RU" target-language="ru-RU" datatype="plaintext">
|
||||
<body>
|
||||
<trans-unit id="351d63281dd96d04d10a4cdb4efcd915">
|
||||
<source>Pay via Hutko: </source>
|
||||
<target>Оплата через Hutko:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="c95fbd80950d3a4e360c5ae79fa93ca5">
|
||||
<source>Hutko is a payment platform whose main function is to provide internet acquiring.</source>
|
||||
<target>Hutko — це платіжна платформа, основною функцією якої є забезпечення інтернет-еквайрингу.</target>
|
||||
<target>Hutko – это платежная платформа, основной функцией которой является обеспечение интернет-эквайринга.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="90c65a6cb64f590f26b4fbdb319fc896">
|
||||
<source>Please specify the Hutko account details for customers</source>
|
||||
<target>Пожалуйста, укажите реквизиты учетной записи Hutko для клиентов</target>
|
||||
<target>Укажите реквизиты учетной записи Hutko для клиентов</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="6462e4d033501dde8eb84cd52d8a5573">
|
||||
<source>Enter a merchant id. Use 1700002 for test setup.</source>
|
||||
<target>Введите идентификатор продавца. Используйте 1700002 для тестовой настройки.</target>
|
||||
<trans-unit id="95068d6b0093271b99622a83d99cf52b">
|
||||
<source>Enter a merchant id. Use "1700243" for test setup.</source>
|
||||
<target>Введите идентификатор продавца. Используйте "1700243" для тестовой настройки.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="73c6484e3e3c1dbd17e6598c40c150f5">
|
||||
@@ -29,37 +34,37 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="952bf87c967660b7bbd4e1eb08cefc92">
|
||||
<source>Secret key</source>
|
||||
<target>Секретний ключ</target>
|
||||
<target>Секретный ключ</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="7548bac714d635c3d0a331e4aca1db72">
|
||||
<source>Status after success payment</source>
|
||||
<target>Статус після успішної оплати</target>
|
||||
<target>Статус после успешной оплаты</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="76f18bb270498e4bdfbaf71f35cc84dd">
|
||||
<source>Status for new orders before payment</source>
|
||||
<target>Статус нових замовлень до оплати</target>
|
||||
<target>Статус новых заказов до оплаты</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="7ea50bc7d053b09d9627771600b149e4">
|
||||
<source>Include shipping cost to payment</source>
|
||||
<target>Включити вартість доставки до оплати</target>
|
||||
<target>Включить стоимость доставки в оплату</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="93cba07454f06a4a960172bbd6e2a435">
|
||||
<source>Yes</source>
|
||||
<target>Так</target>
|
||||
<target>Да</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="bafd7322c6e97d25b6299b5d6fe8920b">
|
||||
<source>No</source>
|
||||
<target>Ні</target>
|
||||
<target>Нет</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="3f16b64626ca0cc193b0013217a78726">
|
||||
<source>Shipping Name</source>
|
||||
<target>Назва для доставки</target>
|
||||
<target>Название для доставки</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="2c154e95e7ee1d753dd3ea4e1b0c8857">
|
||||
@@ -79,7 +84,12 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="dbecc121e4f3f58940d7be4a57444526">
|
||||
<source>Show Visa/MasterCard logo</source>
|
||||
<target>Показати логотип Visa/MasterCard</target>
|
||||
<target>Показать логотип Visa/MasterCard</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="2279a6163336c5b94e14f7022090d21f">
|
||||
<source>Include fixed amount discounts to Payment amount calculation</source>
|
||||
<target>Включить фиксированные скидки в расчет суммы платежа</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="54df2316cf21bff683740a3077b0f404">
|
||||
@@ -89,22 +99,22 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="c9cc8cce247e49bae79f15173ce97354">
|
||||
<source>Save</source>
|
||||
<target>Зберегти</target>
|
||||
<target>Сохранить</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="2e70d995f0032b8859dd5ef37162087f">
|
||||
<source>Merchant ID is required.</source>
|
||||
<target>Потрібен ідентифікатор продавця (Merchant ID).</target>
|
||||
<target>Требуется идентификатор продавца (Merchant ID).</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="66a500cd593b25ebc543c002b345b579">
|
||||
<source>Merchant ID must be numeric.</source>
|
||||
<target>Ідентифікатор продавця має бути числовим.</target>
|
||||
<target>Идентификатор продавца должен быть числовым.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="1c2eee355024adcde515449347201000">
|
||||
<source>Secret key is required.</source>
|
||||
<target>Потрібен секретний ключ.</target>
|
||||
<target>Нужен секретный ключ.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="40bf93e3dcf907a8aad77d1b0f2a2921">
|
||||
@@ -114,7 +124,7 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="23638e456c7b83bd1953dbc0996620be">
|
||||
<source>Pay via payment system Hutko</source>
|
||||
<target>Оплата через платіжну систему Hutko</target>
|
||||
<target>Оплата через платежную систему Hutko</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="223e639daf07b520427aa6c80e36fffb">
|
||||
@@ -124,22 +134,22 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="feed0d2100a232322a28616d350029e6">
|
||||
<source>Order payment #</source>
|
||||
<target>Оплата замовлення #</target>
|
||||
<target>Оплата заказа #</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="789b043f02dbe86d80a6916a31553d0b">
|
||||
<source>Order payment not found.</source>
|
||||
<target>Оплата замовлення не знайдена.</target>
|
||||
<target>Оплата заказа не найдена.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="5b475e4412cc0a11f089e0c6279220fb">
|
||||
<source>Invalid transaction ID format.</source>
|
||||
<target>Недійсний формат ідентифікатора транзакції.</target>
|
||||
<target>Недействителен формат идентификатора транзакции.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="272d77ac6ed0ef79325c3dae71b2a780">
|
||||
<source>Refund success.</source>
|
||||
<target>Повернення коштів успішне.</target>
|
||||
<target>Возврат средств успешно.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="9666fd7b01f98a48b0f5958010bc60d6">
|
||||
@@ -147,6 +157,31 @@
|
||||
<target>Возврат не удался. Проверьте фактическую сумму на странице учетной записи Hutko.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="e2c5a410054beed938dece7a5421f33b">
|
||||
<source>Hutko Module Logs</source>
|
||||
<target>Журналы модуля Hutko</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="b488d2de1cd149ad9fb0a05eb1e2b678">
|
||||
<source>Log file for %s</source>
|
||||
<target>Файл журнала для %s</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="9eee3cc307d3ab7dc9f1927aed6edd4b">
|
||||
<source>The log file is empty.</source>
|
||||
<target>Файл журнала пуст.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="1d8a5c1a863b67c8ee6089af5bcdf3b1">
|
||||
<source>Could not read the log file:</source>
|
||||
<target>Не удалось прочитать файл журнала:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="b84f1ff9ea51ccbec4351a20877b2c5e">
|
||||
<source>No log file found in the last %d days.</source>
|
||||
<target>За последние %d дней не найдено ни одного файла журнала.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="9f5daba4b8de3a0f6cdfab206a08f211">
|
||||
<source><![CDATA[Hutko Payments & Refunds]]></source>
|
||||
<target>Платежі та повернення коштів Hutko</target>
|
||||
@@ -159,27 +194,27 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="b2f40690858b404ed10e62bdf422c704">
|
||||
<source>Amount</source>
|
||||
<target>Сума</target>
|
||||
<target>Сумма</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="31738cd694667ccdfa2cbc65249de5cc">
|
||||
<source>Payment Date</source>
|
||||
<target>Дата платежу</target>
|
||||
<target>Дата платежа</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="06df33001c1d7187fdd81ea1f5b277aa">
|
||||
<source>Actions</source>
|
||||
<target>Дії</target>
|
||||
<target>Действия</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="76f0ed934de85cc7131910b32ede7714">
|
||||
<source>Refund</source>
|
||||
<target>Повернення коштів</target>
|
||||
<target>Возврат средств</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="b782d4ff61550d7e8cdee4cf70a03788">
|
||||
<source>Refund Amount</source>
|
||||
<target>Сума відшкодування</target>
|
||||
<target>Сумма возмещения</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="7bdf5ab3a17ec2dce33865622b238bd1">
|
||||
@@ -189,22 +224,127 @@
|
||||
</trans-unit>
|
||||
<trans-unit id="a48f878efa7beadc6bab76f96fce6b62">
|
||||
<source>Refund Reason/Comment</source>
|
||||
<target>Причина/коментар повернення коштів</target>
|
||||
<target>Причина/комментарий возврата средств</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="a331a1c920188f766c73334a17774dec">
|
||||
<source>Optional: A brief reason for the refund.</source>
|
||||
<target>Необов'язково: Коротка причина повернення коштів.</target>
|
||||
<target>Необязательно: краткая причина возврата средств.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="ea4788705e6873b424c65e91c2846b19">
|
||||
<source>Cancel</source>
|
||||
<target>Скасувати</target>
|
||||
<target>Отменить</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="968d5d0a76be35f96b91b808a39744cd">
|
||||
<source>Process Refund</source>
|
||||
<target>Виконати повернення коштів</target>
|
||||
<target>Выполнить возврат средств</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="7b9996db7679489bde4a28187df02426">
|
||||
<source>Welcome to the Hutko payment system.</source>
|
||||
<target>Добро пожаловать в платежную систему Hutko.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="6aac3b3b57040a6453967741576a7fee">
|
||||
<source>This module provides convenient acceptance of payments from customers, fiscalization and processing of returns directly in your PrestaShop store.</source>
|
||||
<target>Этот модуль обеспечивает удобный прием платежей от покупателей, фискализацию и обработку возвратов непосредственно в вашем магазине PrestaShop.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="07cbc97ec7187dafb422f3368fb4086f">
|
||||
<source>How it works:</source>
|
||||
<target>Как это работает:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="665579059ea1de2a6dc4ae1e1f0aaaff">
|
||||
<source>When choosing Hutko as a payment method, the order is automatically created in PrestaShop before the actual payment. This allows you to save customer data and not lose potential sales.</source>
|
||||
<target>При выборе Hutko в качестве способа оплаты заказ автоматически создается в PrestaShop до фактической оплаты. Это позволяет сохранить данные о клиентах и не потерять потенциальные продажи.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="1d02146516925f87fcbcec824d04571b">
|
||||
<source>A payment record with an amount of 0 is automatically added to the details of this order. This record contains a unique transaction ID, which may be useful when contacting Hutko support.</source>
|
||||
<target>В детали этого заказа автоматически добавляется запись платежа с суммой 0. Эта запись содержит уникальный идентификатор транзакции, который может быть полезен при обращении в службу поддержки Hutko.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="3557fbcca59cddf06e1a157c64b311a2">
|
||||
<source>In the details of this zero payment, you will also find the link to the payment page that was offered to the customer. This link can be used, for example, to resend to the customer.</source>
|
||||
<target>В деталях этого нулевого платежа вы также найдете ссылку на страницу оплаты, куда был перенаправлен клиент. Эту ссылку можно использовать, например, для повторной отправки клиенту.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="591e94b932145579f74fa5dcd191bf98">
|
||||
<source>Shipping cost:</source>
|
||||
<target>Стоимость доставки:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="f323a64fba76956e0a82e4212e241741">
|
||||
<source>You can include the shipping cost in the payment amount, or receive payments only for the goods.</source>
|
||||
<target>Вы можете включить стоимость доставки в сумму платежа или получать платежи только за товар.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="3e9f43b085b89dd9d20183c81740963d">
|
||||
<source>Important for trade in Ukraine: Single tax payers are not entitled to provide postal services. Consult with an accountant and lawyer regarding specifying the correct name of the service/goods.</source>
|
||||
<target>Важно для торговли в Украине: Плательщики единого налога не имеют права предоставлять услуги почтовой связи. Проконсультируйтесь с бухгалтером и юристом по поводу указания правильного наименования услуги/товара.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="608d7371ae56ab02dca6289dcd895e23">
|
||||
<source>Refunds processing:</source>
|
||||
<target>Обработка возвратов:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="c16468adca4e4f33189ad9f98ad84dfd">
|
||||
<source>For convenient management of payments related to Hutko, a special block is available on the order page. Through it, you can quickly issue a full or partial refund to the client.</source>
|
||||
<target>Для удобного управления платежами, связанными с Hutko, на странице заказа доступен специальный блок, с помощью которого можно быстро оформить полный или частичный возврат средств клиенту.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="8823ab22fda363e96619ad5224ff1f2e">
|
||||
<source>Important: Fiscalization of refund operations must be carried out independently. The Hutko system does not perform automatic fiscalization of refunds.</source>
|
||||
<target>Важно: Фискализация операций по возврату должна осуществляться самостоятельно. Система Hutko не осуществляет автоматическую фискализацию возвратов.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="58959a34911d9e88e191f3453ddc81f0">
|
||||
<source>Important notes:</source>
|
||||
<target>Важные примечания:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="e15299422de77789dfc7e74a177d8e52">
|
||||
<source>Refund display in PrestaShop: Depending on the version of PrestaShop, a refund may be displayed in the order payment list as a negative or even positive amount. Do not use this data in the PrestaShop dashboard as a final confirmation of the actual payment to the account.</source>
|
||||
<target>Отображение возврата в PrestaShop: В зависимости от версии PrestaShop возврат может отображаться в списке платежей по заказу как отрицательная или даже положительная сумма. Не используйте эти данные в панели управления PrestaShop как окончательное подтверждение фактического платежа на счет.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="4c12166ba6680a5b52c9ec06ce766d57">
|
||||
<source>Hutko Fiscalization Limitations: Currently, the Hutko system does not fiscalize payments where the amount to be paid is different from the total value of the items in the cart (for example, a coupon for a fixed amount).</source>
|
||||
<target>Ограничения по фискализации Hutko: в настоящее время система Hutko не фискализирует платежи, сумма которых к оплате отличается от общей стоимости товаров в корзине (например, купон на фиксированную сумму).</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="f90da091717b8824e7c53a629c59e03c">
|
||||
<source>Discount processing settings: The module has an option to take into account coupons for a fixed amount. When it is activated, the order amount, taking into account the coupon discount for a fixed amount, is transferred to Hutko for payment. This prevents the transaction from being fiscalized. By default, the cost of the goods (including percentage discounts) and the cost of delivery (unless disabled in the settings) are transferred to Hutko for payment. Percentage discounts that directly change the price of the goods are always taken into account.</source>
|
||||
<target>Настройки обработки скидок: В модуле реализована возможность учета купонов на фиксированную сумму. При ее активации сумма заказа с учетом скидки по купону на фиксированную сумму передается в Hutko для оплаты. Это позволяет избежать фискализации транзакции. По умолчанию в Hutko для оплаты передается стоимость товара (включая процентные скидки) и стоимость доставки (если не отключено в настройках). Всегда учитываются процентные скидки, которые напрямую изменяют цену товара.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="5d24a4911bc2a666fa230fbd18431dba">
|
||||
<source>The module automatically receives information about payment status updates from the Hutko server. When the status changes to "declined" or "expired", the module will assign the order the system status "Payment error".</source>
|
||||
<target>Модуль автоматически получает информацию об обновлениях статуса платежа с сервера Hutko. При изменении статуса на «отклонен» или «истек», модуль присвоит заказу системный статус «Ошибка платежа».</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="b42fe7dc6ca99558534e67ef6b57a113">
|
||||
<source><![CDATA[If the security level for the SameSite Cookie is set to "strict" in the Prestashop settings, then when returning to the site from the Hutko payment page, the customer will be deauthorized. This is a limitation of the Prestashop system. The module has a special redirect page, which allows even in this scenario to display the order confirmation page to the customer. To avoid inconvenience to customers we recommend setting the SameSite Cookie restriction to "none" (on the Advanced Settings -> Administration tab).]]></source>
|
||||
<target><![CDATA[Если в настройках Prestashop уровень безопасности для SameSite Cookie установлен на "строгий", то при возврате на сайт со страницы оплаты Hutko покупатель будет деавторизован. Это ограничение системы Prestashop. В модуле есть специальная страница перенаправления, которая позволяет даже в этом случае отобразить покупателю страницу подтверждения заказа. Чтобы не создавать неудобств покупателям, рекомендуем установить ограничение SameSite Cookie на "отсутствует" (на вкладке Дополнительные настройки -> Администрирование).]]></target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="bc1bef78519af630cd1e523c4979f0cc">
|
||||
<source>If the order status in Prestashop is marked "consider paid", then when assigning such a status, Prestashop will automatically create a new payment in the Payments block for the amount of the underpayment. This may create a misunderstanding regarding the amounts of actual payments. To do this, we recommend that you select statuses in the module settings in which the "consider paid" setting is disabled</source>
|
||||
<target>Если в Prestashop статус заказа отмечен как "считается оплаченным", то при присвоении такого статуса Prestashop автоматически создаст новый платеж в блоке "Платежи" на сумму недоплаты. Это может создать недопонимание относительно сумм фактических платежей. Для этого рекомендуем выбирать в настройках модуля статусы, в которых отключена настройка "считается оплаченным"</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="48c1929114ca424904cfd1e6d53c6ff5">
|
||||
<source><![CDATA[To change the method of redirecting the user back to the site, change the settings on the Hutko portal (settings -> payment settings -> method of redirecting to the side of the result)]]></source>
|
||||
<target><![CDATA[Для изменения способа перенаправления пользователя обратно на сайт измените настройки на портале Hutko (Настройки -> Настройки платежей -> Метод перенаправления на страницу результата)]]></target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="ed37443edab436880af057340aa358c5">
|
||||
<source>Hutko Support</source>
|
||||
<target>Поддержка Hutko</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
</body>
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file original="admin105hcnvdgjnh2pvlogh" source-language="uk-UA" target-language="uk-UA" datatype="plaintext">
|
||||
<body>
|
||||
<trans-unit id="351d63281dd96d04d10a4cdb4efcd915">
|
||||
<source>Pay via Hutko: </source>
|
||||
<target>Оплата через Hutko:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="c95fbd80950d3a4e360c5ae79fa93ca5">
|
||||
<source>Hutko is a payment platform whose main function is to provide internet acquiring.</source>
|
||||
<target>Hutko — це платіжна платформа, основною функцією якої є забезпечення інтернет-еквайрингу.</target>
|
||||
@@ -12,9 +17,9 @@
|
||||
<target>Будь ласка, уточніть реквізити облікового запису Hutko для клієнтів</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="6462e4d033501dde8eb84cd52d8a5573">
|
||||
<source>Enter a merchant id. Use 1700002 for test setup.</source>
|
||||
<target>Введіть ідентифікатор продавця. Використовуйте 1700002 для тестового налаштування.</target>
|
||||
<trans-unit id="95068d6b0093271b99622a83d99cf52b">
|
||||
<source>Enter a merchant id. Use "1700243" for test setup.</source>
|
||||
<target>Введіть ідентифікатор продавця. Використовуйте "1700243" для тестового налаштування.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="73c6484e3e3c1dbd17e6598c40c150f5">
|
||||
@@ -82,6 +87,11 @@
|
||||
<target>Показати логотип Visa/MasterCard</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="2279a6163336c5b94e14f7022090d21f">
|
||||
<source>Include fixed amount discounts to Payment amount calculation</source>
|
||||
<target>Включити знижки на фіксовану суму до розрахунку суми платежу</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="54df2316cf21bff683740a3077b0f404">
|
||||
<source>Save Logs</source>
|
||||
<target>Зберігати лог запитів від/до серверу Hutko</target>
|
||||
@@ -147,6 +157,31 @@
|
||||
<target>Повернення коштів не вдалося. Будь ласка, перевірте фактичну суму на сторінці облікового запису Hutko.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="e2c5a410054beed938dece7a5421f33b">
|
||||
<source>Hutko Module Logs</source>
|
||||
<target>Лог операцій Hutko</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="b488d2de1cd149ad9fb0a05eb1e2b678">
|
||||
<source>Log file for %s</source>
|
||||
<target>Файл логів для %s</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="9eee3cc307d3ab7dc9f1927aed6edd4b">
|
||||
<source>The log file is empty.</source>
|
||||
<target>Файл логів порожній.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="1d8a5c1a863b67c8ee6089af5bcdf3b1">
|
||||
<source>Could not read the log file:</source>
|
||||
<target>Не вдалося прочитати файл логів:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="b84f1ff9ea51ccbec4351a20877b2c5e">
|
||||
<source>No log file found in the last %d days.</source>
|
||||
<target>За останні %d днів не знайдено жодного файлу логів.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="9f5daba4b8de3a0f6cdfab206a08f211">
|
||||
<source><![CDATA[Hutko Payments & Refunds]]></source>
|
||||
<target>Платежі та повернення коштів Hutko</target>
|
||||
@@ -207,6 +242,125 @@
|
||||
<target>Виконати повернення коштів</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="7b9996db7679489bde4a28187df02426">
|
||||
<source>Welcome to the Hutko payment system.</source>
|
||||
<target>Ласкаво просимо до платіжної системи Hutko.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="6aac3b3b57040a6453967741576a7fee">
|
||||
<source>This module provides convenient acceptance of payments from customers, fiscalization and processing of returns directly in your PrestaShop store.</source>
|
||||
<target>Цей модуль забезпечує зручне прийняття платежів від клієнтів, фіскалізацію та обробку повернень
|
||||
безпосередньо
|
||||
у вашому магазині PrestaShop.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="07cbc97ec7187dafb422f3368fb4086f">
|
||||
<source>How it works:</source>
|
||||
<target>Як це працює:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="665579059ea1de2a6dc4ae1e1f0aaaff">
|
||||
<source>When choosing Hutko as a payment method, the order is automatically created in PrestaShop before the actual payment. This allows you to save customer data and not lose potential sales.</source>
|
||||
<target>При виборі Hutko як способу оплати замовлення автоматично створюється в PrestaShop перед фактичною оплатою. Це дозволяє зберегти дані клієнтів та не втрачати потенційних продажів.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="1d02146516925f87fcbcec824d04571b">
|
||||
<source>A payment record with an amount of 0 is automatically added to the details of this order. This record contains a unique transaction ID, which may be useful when contacting Hutko support.</source>
|
||||
<target>До переліку платежів цього замовлення автоматично додається платіжний запис із сумою 0. Цей запис містить унікальний ідентифікатор транзакції, який може бути корисним під час звернення до служби підтримки Hutko.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="3557fbcca59cddf06e1a157c64b311a2">
|
||||
<source>In the details of this zero payment, you will also find the link to the payment page that was offered to the customer. This link can be used, for example, to resend to the customer.</source>
|
||||
<target>У деталях цього нульового платежу ви також знайдете посилання на сторінку оплати, запропоновану клієнту. Це посилання можна використовувати, наприклад, для повторного надсилання клієнту.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="591e94b932145579f74fa5dcd191bf98">
|
||||
<source>Shipping cost:</source>
|
||||
<target>Вартість доставки:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="f323a64fba76956e0a82e4212e241741">
|
||||
<source>You can include the shipping cost in the payment amount, or receive payments only for the goods.</source>
|
||||
<target>Ви можете включити вартість доставки до суми платежу, або отримувати оплати лише за товари.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="3e9f43b085b89dd9d20183c81740963d">
|
||||
<source>Important for trade in Ukraine: Single tax payers are not entitled to provide postal services. Consult with an accountant and lawyer regarding specifying the correct name of the service/goods.</source>
|
||||
<target>Важливо для торгівлі в Україні: Платники єдиного податку не мають права надавати поштові послуги. Проконсультуйтеся з бухгалтером та юристом щодо зазначення правильної назви послуги/товару.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="608d7371ae56ab02dca6289dcd895e23">
|
||||
<source>Refunds processing:</source>
|
||||
<target>Обробка повернень:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="c16468adca4e4f33189ad9f98ad84dfd">
|
||||
<source>For convenient management of payments related to Hutko, a special block is available on the order page. Through it, you can quickly issue a full or partial refund to the client.</source>
|
||||
<target>Для зручного керування платежами, пов'язаними з Hutko, на сторінці замовлення доступний спеціальний
|
||||
блок.
|
||||
Через нього ви можете швидко оформити повне або часткове повернення коштів клієнту.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="8823ab22fda363e96619ad5224ff1f2e">
|
||||
<source>Important: Fiscalization of refund operations must be carried out independently. The Hutko system does not perform automatic fiscalization of refunds.</source>
|
||||
<target>Важливо: Фіскалізацію операцій з повернення коштів необхідно здійснювати самостійно. Система Hutko не виконує автоматичної фіскалізації повернень коштів.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="58959a34911d9e88e191f3453ddc81f0">
|
||||
<source>Important notes:</source>
|
||||
<target>Важливі примітки:</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="e15299422de77789dfc7e74a177d8e52">
|
||||
<source>Refund display in PrestaShop: Depending on the version of PrestaShop, a refund may be displayed in the order payment list as a negative or even positive amount. Do not use this data in the PrestaShop dashboard as a final confirmation of the actual payment to the account.</source>
|
||||
<target>Відображення повернення коштів у PrestaShop: Залежно від версії PrestaShop, повернення коштів може відображатися у списку оплат замовлень як від’ємна або навіть додатна сума. Не використовуйте ці дані на панелі інструментів PrestaShop як остаточне підтвердження фактичного платежу на рахунок.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="4c12166ba6680a5b52c9ec06ce766d57">
|
||||
<source>Hutko Fiscalization Limitations: Currently, the Hutko system does not fiscalize payments where the amount to be paid is different from the total value of the items in the cart (for example, a coupon for a fixed amount).</source>
|
||||
<target>Обмеження фіскалізації Hutko: Наразі система Hutko не фіскалізує платежі, сума яких до сплати відрізняється від загальної вартості товарів у кошику (наприклад, купон на фіксовану суму).</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="f90da091717b8824e7c53a629c59e03c">
|
||||
<source>Discount processing settings: The module has an option to take into account coupons for a fixed amount. When it is activated, the order amount, taking into account the coupon discount for a fixed amount, is transferred to Hutko for payment. This prevents the transaction from being fiscalized. By default, the cost of the goods (including percentage discounts) and the cost of delivery (unless disabled in the settings) are transferred to Hutko for payment. Percentage discounts that directly change the price of the goods are always taken into account.</source>
|
||||
<target>Налаштування обробки знижок: Модуль має опцію врахування купонів на фіксовану суму. При її активації сума замовлення з урахуванням знижки за купоном на фіксовану суму перераховується до Hutko для оплати. Це запобігає фіскалізації транзакції. За замовчуванням до Hutko для оплати перераховується вартість товару (включаючи відсоткові знижки) та вартість доставки (якщо не вимкнено в налаштуваннях). Відсоткові знижки, які безпосередньо змінюють ціну товару, враховуються завжди.</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="5d24a4911bc2a666fa230fbd18431dba">
|
||||
<source>The module automatically receives information about payment status updates from the Hutko server. When the status changes to "declined" or "expired", the module will assign the order the system status "Payment error".</source>
|
||||
<target>Модуль автоматично отримує від серверу Hutko інформацію про оновлення стану платежу. При зміні статусу
|
||||
на "помилка" (declined) або "час вичерпано" (expired) - модуль присвоїть замовленню системний статус
|
||||
"Помилка платежу".</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="b42fe7dc6ca99558534e67ef6b57a113">
|
||||
<source><![CDATA[If the security level for the SameSite Cookie is set to "strict" in the Prestashop settings, then when returning to the site from the Hutko payment page, the customer will be deauthorized. This is a limitation of the Prestashop system. The module has a special redirect page, which allows even in this scenario to display the order confirmation page to the customer. To avoid inconvenience to customers we recommend setting the SameSite Cookie restriction to "none" (on the Advanced Settings -> Administration tab).]]></source>
|
||||
<target><![CDATA[Якщо в налаштуваннях Prestashop встановлено рівень безпеки для Cookie SameSite "strict", то, при
|
||||
поверненні на сайт зі сторінки платежів Hutko, клієнт буде деавторизований. Це обмеження системи
|
||||
Prestashop. Модуль має спеціальну сторінку переадресації, яка дозволяє навіть при такому сценарї
|
||||
відобразити клієнту сторінку з підтвердженням замовлення. Для уникнення незручностей клієнтів
|
||||
рекомендуємо встановити обмеження Cookie SameSite у "none" (на вкладці Розширені папраметри ->
|
||||
Адімністрування).]]></target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="bc1bef78519af630cd1e523c4979f0cc">
|
||||
<source>If the order status in Prestashop is marked "consider paid", then when assigning such a status, Prestashop will automatically create a new payment in the Payments block for the amount of the underpayment. This may create a misunderstanding regarding the amounts of actual payments. To do this, we recommend that you select statuses in the module settings in which the "consider paid" setting is disabled</source>
|
||||
<target>Якщо статус замовлення в Prestashop в престашоп має відмітку "вважати оплаченим", то при присвоєнні
|
||||
такого статусу, Prestashop автоматично створить в блоці Платежі новий платіж на суму недоплати. Це може
|
||||
створити непорозуміння щодо сум фактичних оплат. Для цього рекомендуємо обирати в налаштуваннях модулю
|
||||
статуси, в яких відключене налаштування "вважати оплаченим"</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="48c1929114ca424904cfd1e6d53c6ff5">
|
||||
<source><![CDATA[To change the method of redirecting the user back to the site, change the settings on the Hutko portal (settings -> payment settings -> method of redirecting to the side of the result)]]></source>
|
||||
<target><![CDATA[Щоб змінити спосіб перенаправлення користувача назад на сайт, змініть налаштування на порталі Hutko (Налаштування -> Налаштування платежів -> Метод перенаправлення на сторінку результату)]]></target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
<trans-unit id="ed37443edab436880af057340aa358c5">
|
||||
<source>Hutko Support</source>
|
||||
<target>Підтримка Hutko</target>
|
||||
<note>Line: </note>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
61
views/templates/admin/help.tpl
Normal file
61
views/templates/admin/help.tpl
Normal file
@@ -0,0 +1,61 @@
|
||||
<div class="panel">
|
||||
<div class="panel-heading">
|
||||
<i class="icon-dollar"></i> {l s='Hutko Payments & Refunds' d='Modules.Hutko.Admin'}
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="container">
|
||||
<h2>{l s='Welcome to the Hutko payment system.' d='Modules.Hutko.Admin'}</h2>
|
||||
<p>{l s='This module provides convenient acceptance of payments from customers, fiscalization and processing of returns directly in your PrestaShop store.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
<p class="h3">{l s='How it works:' d='Modules.Hutko.Admin'}</p>
|
||||
<p>{l s='When choosing Hutko as a payment method, the order is automatically created in PrestaShop before the actual payment. This allows you to save customer data and not lose potential sales.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<p>{l s='A payment record with an amount of 0 is automatically added to the details of this order. This record contains a unique transaction ID, which may be useful when contacting Hutko support.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<p>{l s='In the details of this zero payment, you will also find the link to the payment page that was offered to the customer. This link can be used, for example, to resend to the customer.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
<p class="h3">{l s='Shipping cost:' d='Modules.Hutko.Admin'}</p>
|
||||
<p>{l s='You can include the shipping cost in the payment amount, or receive payments only for the goods.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<p class="alert alert-warning">
|
||||
{l s='Important for trade in Ukraine: Single tax payers are not entitled to provide postal services. Consult with an accountant and lawyer regarding specifying the correct name of the service/goods.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
<p class="h3">{l s='Refunds processing:' d='Modules.Hutko.Admin'}</p>
|
||||
<p>{l s='For convenient management of payments related to Hutko, a special block is available on the order page. Through it, you can quickly issue a full or partial refund to the client.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<p class="alert alert-warning">
|
||||
{l s='Important: Fiscalization of refund operations must be carried out independently. The Hutko system does not perform automatic fiscalization of refunds.' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
<p class="h3">{l s='Important notes:' d='Modules.Hutko.Admin'}</p>
|
||||
<ul>
|
||||
<li>{l s='Refund display in PrestaShop: Depending on the version of PrestaShop, a refund may be displayed in the order payment list as a negative or even positive amount. Do not use this data in the PrestaShop dashboard as a final confirmation of the actual payment to the account.' d='Modules.Hutko.Admin'}
|
||||
</li>
|
||||
<li>{l s='Hutko Fiscalization Limitations: Currently, the Hutko system does not fiscalize payments where the amount to be paid is different from the total value of the items in the cart (for example, a coupon for a fixed amount).' d='Modules.Hutko.Admin'}
|
||||
</li>
|
||||
<li>{l s='Discount processing settings: The module has an option to take into account coupons for a fixed amount. When it is activated, the order amount, taking into account the coupon discount for a fixed amount, is transferred to Hutko for payment. This prevents the transaction from being fiscalized. By default, the cost of the goods (including percentage discounts) and the cost of delivery (unless disabled in the settings) are transferred to Hutko for payment. Percentage discounts that directly change the price of the goods are always taken into account.' d='Modules.Hutko.Admin'}
|
||||
</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<p>{l s='The module automatically receives information about payment status updates from the Hutko server. When the status changes to "declined" or "expired", the module will assign the order the system status "Payment error".' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
|
||||
<p>{l s='If the security level for the SameSite Cookie is set to "strict" in the Prestashop settings, then when returning to the site from the Hutko payment page, the customer will be deauthorized. This is a limitation of the Prestashop system. The module has a special redirect page, which allows even in this scenario to display the order confirmation page to the customer. To avoid inconvenience to customers we recommend setting the SameSite Cookie restriction to "none" (on the Advanced Settings -> Administration tab).' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
<p>{l s='If the order status in Prestashop is marked "consider paid", then when assigning such a status, Prestashop will automatically create a new payment in the Payments block for the amount of the underpayment. This may create a misunderstanding regarding the amounts of actual payments. To do this, we recommend that you select statuses in the module settings in which the "consider paid" setting is disabled' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
<p>{l s='To change the method of redirecting the user back to the site, change the settings on the Hutko portal (settings -> payment settings -> method of redirecting to the side of the result)' d='Modules.Hutko.Admin'}
|
||||
</p>
|
||||
<hr>
|
||||
<p><a class="btn btn-danger btn-block" href="https://hutko.org/uk/support/"
|
||||
target="_blank">{l s='Hutko Support' d='Modules.Hutko.Admin'}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -45,14 +45,6 @@
|
||||
|
||||
</button>
|
||||
{/if}
|
||||
{* <form method="post" id="hutkoStatusForm-{$payment->id|intval}"></form>
|
||||
<button type="submit" class="btn btn-default btn-sm hutko-status-btn"
|
||||
form="hutkoStatusForm-{$payment->id|intval}"
|
||||
data-toggle="modal" data-target="#hutkoStatusModal-{$payment->id}"
|
||||
name="hutkoOrderStatus" value="{$payment->transaction_id|escape:'htmlall':'UTF-8'}"
|
||||
data-hutkoOrderPaymentStatus="{$payment->id}">
|
||||
<i class="icon-info"></i> {l s='Status' d='Modules.Hutko.Admin'}
|
||||
</button> *}
|
||||
<div class="modal fade" id="hutkoRefundModal-{$payment->id}" tabindex="-1" role="dialog"
|
||||
aria-labelledby="hutkoRefundModalLabel-{$payment->id}" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
|
||||
Reference in New Issue
Block a user