diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 86e430b..4fc4987 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -7,6 +7,7 @@ on:
# Review gh actions docs if you want to further define triggers, paths, etc
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
+
jobs:
build:
name: Build Docusaurus
diff --git a/code_samples/php/v1.0.0/cancel_payment.php b/code_samples/php/v1.0.0/cancel_payment.php
new file mode 100644
index 0000000..227386d
--- /dev/null
+++ b/code_samples/php/v1.0.0/cancel_payment.php
@@ -0,0 +1,11 @@
+cancelPaymentIntent($payment_id);
+$response["response"]->getStatusCode(); // 200 or 201 = success
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/chargeback.php b/code_samples/php/v1.0.0/chargeback.php
new file mode 100644
index 0000000..74ae6d8
--- /dev/null
+++ b/code_samples/php/v1.0.0/chargeback.php
@@ -0,0 +1,16 @@
+ CardPayUpdateInstruction::OPERATION_TYPE_CHARGEBACK,
+ "amount" => 3.0,
+]);
+
+$response = $tatrapayplus_api->updatePaymentIntent($payment_id, $chargeback_data);
+$response["response"]->getStatusCode(); // 200 or 201 = success
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/confirm_cancel_pre_authorization.php b/code_samples/php/v1.0.0/confirm_cancel_pre_authorization.php
new file mode 100644
index 0000000..5596d26
--- /dev/null
+++ b/code_samples/php/v1.0.0/confirm_cancel_pre_authorization.php
@@ -0,0 +1,21 @@
+ CardPayUpdateInstruction::OPERATION_TYPE_CANCEL_PRE_AUTHORIZATION,
+]);
+$response = $tatrapayplus_api->updatePaymentIntent($payment_id, $pre_authorization_data);
+
+// or
+
+$pre_authorization_data = new CardPayUpdateInstruction([
+ "operation_type" => CardPayUpdateInstruction::OPERATION_TYPE_CONFIRM_PRE_AUTHORIZATION,
+]);
+$response = $tatrapayplus_api->updatePaymentIntent($payment_id, $pre_authorization_data);
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/create_payment.php b/code_samples/php/v1.0.0/create_payment.php
new file mode 100644
index 0000000..0b1c994
--- /dev/null
+++ b/code_samples/php/v1.0.0/create_payment.php
@@ -0,0 +1,62 @@
+ "TestStreet",
+ "building_number" => "12",
+ "town_name" => "Town",
+ "post_code" => "97405",
+ "country" => "SK",
+]);
+$initiate_payment_request = new Tatrapayplus\TatrapayplusApiClient\Model\InitiatePaymentRequest([
+ "base_payment" => new Tatrapayplus\TatrapayplusApiClient\Model\BasePayment([
+ "instructed_amount" => new Tatrapayplus\TatrapayplusApiClient\Model\Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new Tatrapayplus\TatrapayplusApiClient\Model\E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+ ]),
+ "bank_transfer" => new Tatrapayplus\TatrapayplusApiClient\Model\BankTransfer(),
+ "user_data" => new Tatrapayplus\TatrapayplusApiClient\Model\UserData([
+ "first_name" => "Janko",
+ "last_name" => "Hrasko",
+ "email" => "janko.hrasko@example.com",
+ ]),
+ "card_detail" => new Tatrapayplus\TatrapayplusApiClient\Model\CardDetail([
+ "card_holder" => "Janko Hrasko",
+ "billing_address" => $address,
+ "shipping_address" => $address,
+ ]),
+ "pay_later" => new Tatrapayplus\TatrapayplusApiClient\Model\PayLater([
+ "order" => new Tatrapayplus\TatrapayplusApiClient\Model\Order([
+ "order_no" => "ORDER123456",
+ "order_items" => [
+ new Tatrapayplus\TatrapayplusApiClient\Model\OrderItem([
+ "quantity" => 1.0,
+ "total_item_price" => 10.0,
+ "item_detail" => new Tatrapayplus\TatrapayplusApiClient\Model\ItemDetail([
+ "item_detail_en" => new Tatrapayplus\TatrapayplusApiClient\Model\ItemDetailLangUnit([
+ "item_name" => "Product 1",
+ ]),
+ "item_detail_sk" => new Tatrapayplus\TatrapayplusApiClient\Model\ItemDetailLangUnit([
+ "item_name" => "Produkt 1",
+ ]),
+ ]),
+ ]),
+ ],
+ ]),
+ ]),
+]);
+
+$response = $tatrapayplus_api->initiatePayment(
+ "redirect uri",
+ $initiate_payment_request,
+);
+$response["object"]->getPaymentId(); // newly created payment ID
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/create_payment_direct.php b/code_samples/php/v1.0.0/create_payment_direct.php
new file mode 100644
index 0000000..7715b0d
--- /dev/null
+++ b/code_samples/php/v1.0.0/create_payment_direct.php
@@ -0,0 +1,39 @@
+ new Tatrapayplus\TatrapayplusApiClient\Model\Amount([
+ "amount_value" => 10,
+ "currency" => "EUR",
+ ]),
+ "is_pre_authorization" => true,
+ "end_to_end" => new Tatrapayplus\TatrapayplusApiClient\Model\E2e([
+ "variable_symbol" => "123",
+ ]),
+ "tds_data" => new Tatrapayplus\TatrapayplusApiClient\Model\DirectTransactionTDSData([
+ "card_holder" => "Janko Hraško",
+ "email" => "janko.hrasko@example.com",
+ ]),
+ "ipsp_data" => new Tatrapayplus\TatrapayplusApiClient\Model\DirectTransactionIPSPData([
+ "sub_merchant_id" => "12345",
+ "name" => "Test 123",
+ "location" => "Test 123",
+ "country" => "SK",
+ ]),
+ "token" => new Tatrapayplus\TatrapayplusApiClient\Model\Token([
+ "google_pay_token" => "ABC12345"
+ ]),
+]);
+
+$response = $tatrapayplus_api->initiateDirectTransaction(
+ "redirect uri",
+ $initiate_transaction_request,
+);
+
+$response["object"]->getPaymentId(); // newly created payment ID
+$response["object"]->getRedirectFormHtml(); // HTML form
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/create_payment_pre_authorization.php b/code_samples/php/v1.0.0/create_payment_pre_authorization.php
new file mode 100644
index 0000000..f9a8de5
--- /dev/null
+++ b/code_samples/php/v1.0.0/create_payment_pre_authorization.php
@@ -0,0 +1,30 @@
+ new Tatrapayplus\TatrapayplusApiClient\Model\BasePayment([
+ "instructed_amount" => new Tatrapayplus\TatrapayplusApiClient\Model\Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new Tatrapayplus\TatrapayplusApiClient\Model\E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+ ]),
+ "bank_transfer" => new Tatrapayplus\TatrapayplusApiClient\Model\BankTransfer(),
+ "card_detail" => new Tatrapayplus\TatrapayplusApiClient\Model\CardDetail([
+ "card_holder" => "Janko Hrasko",
+ "is_pre_authorization" => true,
+ ]),
+]);
+
+$response = $tatrapayplus_api->initiatePayment(
+ "redirect uri",
+ $initiate_payment_request,
+);
+$response["object"]->getPaymentId();
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/get_available_payment_methods.php b/code_samples/php/v1.0.0/get_available_payment_methods.php
new file mode 100644
index 0000000..442848e
--- /dev/null
+++ b/code_samples/php/v1.0.0/get_available_payment_methods.php
@@ -0,0 +1,13 @@
+getAvailableMethods(
+ total_amount: 100,
+ currency: "EUR",
+ country: "SK"
+);
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/get_payment_status.php b/code_samples/php/v1.0.0/get_payment_status.php
new file mode 100644
index 0000000..6e90fdb
--- /dev/null
+++ b/code_samples/php/v1.0.0/get_payment_status.php
@@ -0,0 +1,15 @@
+getPaymentIntentStatus($payment_id);
+
+$response_obj = $response['object'];
+$status = $response_obj->getStatus();
+$payment_method = $response_obj->getSelectedPaymentMethod();
+$authorization_status = $response_obj->getAuthorizationStatus();
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/set_colors.php b/code_samples/php/v1.0.0/set_colors.php
new file mode 100644
index 0000000..a3ee4bd
--- /dev/null
+++ b/code_samples/php/v1.0.0/set_colors.php
@@ -0,0 +1,26 @@
+ AppearanceRequest::THEME_SYSTEM,
+ "tint_on_accent" => new ColorAttribute([
+ "color_dark_mode" => "#fff",
+ "color_light_mode" => "#fff",
+ ]),
+ "tint_accent" => new ColorAttribute([
+ "color_dark_mode" => "#fff",
+ "color_light_mode" => "#fff",
+ ]),
+ "surface_accent" => new ColorAttribute([
+ "color_dark_mode" => "#fff",
+ "color_light_mode" => "#fff",
+ ]),
+]);
+
+$response = $tatrapayplus_api->setAppearance($appearance_request);
\ No newline at end of file
diff --git a/code_samples/php/v1.0.0/set_logo.php b/code_samples/php/v1.0.0/set_logo.php
new file mode 100644
index 0000000..a01a59b
--- /dev/null
+++ b/code_samples/php/v1.0.0/set_logo.php
@@ -0,0 +1,13 @@
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII",
+]);
+
+$response = $tatrapayplus_api->setLogo($logo_request);
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/appearances.mdx b/docs/libraries/php/v1.0.0/appearances.mdx
new file mode 100644
index 0000000..5c0be24
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/appearances.mdx
@@ -0,0 +1,34 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Gateway appearances
+
+Payment gateway can have custom colors and logo.
+
+
+
+:::warning
+
+Gateway appearances can be change only in **PRODUCTION** mode.
+
+:::
+
+## Logo
+
+import setLogo from '!!raw-loader!@site/code_samples/php/v1.0.0/set_logo.php';
+
+{setLogo}
+
+## Colors
+
+import setColors from '!!raw-loader!@site/code_samples/php/v1.0.0/set_colors.php';
+
+{setColors}
+
+
+:::tip
+
+Changes are reflected only in **new payments**. Refresh of page is not sufficient.
+
+:::
+
+
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/available_methods.mdx b/docs/libraries/php/v1.0.0/available_methods.mdx
new file mode 100644
index 0000000..cedc7ae
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/available_methods.mdx
@@ -0,0 +1,19 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import getAvailablePaymentMethods from '!!raw-loader!@site/code_samples/php/v1.0.0/get_available_payment_methods.php';
+
+# Getting available methods
+
+In this payment gateway, user will select preferred payment option directly in payment gateway and **NOT in eshop**.
+Therefor you want to inform customer about available payment methods and show different text or image based on certain conditions like:
+- currency
+- total amount
+- country
+
+For this purpose you can retrieve available payment methods with this helper:
+{getAvailablePaymentMethods}
+
+Based on response from these functions you should display info to the user about available methods,
+and then you should create payment.
+
+
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/cancel_payment.mdx b/docs/libraries/php/v1.0.0/cancel_payment.mdx
new file mode 100644
index 0000000..257f05b
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/cancel_payment.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Cancel payment
+
+This operation can be used with any payment method, but only if it is in `authorization_status=NEW`.
+
+In the case of payment method `PAY_LATER`, this method can also be used if `authorization_status=AUTH_DONE` and at the same time payment `status=CUSTOMER_CREATION_IN_PROGRESS`.
+
+import cancelPayment from '!!raw-loader!@site/code_samples/php/v1.0.0/cancel_payment.php';
+
+{cancelPayment}
+
+
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/chargeback.mdx b/docs/libraries/php/v1.0.0/chargeback.mdx
new file mode 100644
index 0000000..f7d7767
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/chargeback.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Chargeback
+
+The merchant can also make a full or partial return of the transaction through CardPay.
+Returns can only be made on successful payments, including completed pre-authorisations, as well as on payments on which a return has already been made, and the amount of the return must not exceed the original amount of the payment (in the case of a pre-authorisation, it is the amount with which the pre-authorisation was confirmed).
+
+
+import chargeBack from '!!raw-loader!@site/code_samples/php/v1.0.0/chargeback.php';
+
+{chargeBack}
+
+
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/create_payment.mdx b/docs/libraries/php/v1.0.0/create_payment.mdx
new file mode 100644
index 0000000..d7bd370
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/create_payment.mdx
@@ -0,0 +1,175 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import createPayment from '!!raw-loader!@site/code_samples/php/v1.0.0/create_payment.php';
+
+# Create Payment
+
+To create a payment using the PHP SDK, call the `TatraPayPlusAPIApi->initiatePayment()` method.
+
+
+ Click to see example for all payment methods
+ {createPayment}
+
+
+## Common Data
+
+Tatrapay Plus supports multiple payment methods. Depending on the selected method, you can include additional optional fields. However, some data is **mandatory** for all payment types:
+
+```php
+$base_payment = new BasePayment([
+ "instructed_amount" => new Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+]);
+```
+:::warning
+
+Most common issue is that value in `instructed_amount.amount_value` field is not rounded properly and API will reject such a data.
+Please round your data to **2 decimals places**.
+
+:::
+
+### Modify language and preferred method
+
+By default, tatrapay+ gateway will show all available payment methods and payment gateway is shown in default **Slovak** language.
+If you want to change this behaviour you can pass `language` and `preferred_method` param to `create_payment`.
+
+If `preferred_method` is available user will be directly navigated to this method.
+
+
+ Show gateway in English with bank transfer method
+
+```php
+$response = $tatrapayplus_api->initiatePayment(
+ "http://localhost",
+ $initiate_payment_request,
+ preferred_method: "BANK_TRANSFER",
+ accept_language: "en"
+);
+```
+
+
+### Redirect URI
+
+Redirect URI is used as return address after customer finishes payment. This URI is necessary and is used to [process result of the payment](/docs/libraries/php/v1.0.0/process_payment).
+
+If your application serves multiple locales with distinct URIs for example:
+- https://example.com for one locale
+- https://example.com/de/ for German users
+
+you must register both URIs in the developer portal.
+Then, when making a `create_payment` request, be sure to include the redirect URI that matches the user's locale.
+:::warning
+
+This URI must exactly match the URI defined in the [Developer Portal](https://developer.tatrabanka.sk/pages/devportal/sk/#/)
+
+:::
+
+## Specific payment method data
+
+### Bank transfer and QR pay
+
+For this payment method you need to define attribute `bank_transfer`. **It can be empty** or contain additional information.
+If you omit this attribute, bank transfer wouldn't be shown.
+
+```php
+$bank_transfer = new BankTransfer("Additional information");
+```
+
+### Card pay
+
+This payment method requires `card_detail.card_holder`, `user_data.first_name` and `user_data.last_name`.
+One of `user_data.email` or `user_data.phone` is required, notifications to customers will be sent based on these.
+
+:::tip
+
+The SDK automatically strips diacritical marks from characters in the `card_detail.card_holder` field, so **you don't need** to handle this conversion yourself.
+
+:::
+
+```php
+$userData = new UserData([
+ "first_name" => "Janko",
+ "last_name" => "Hrasko",
+ "email" => "janko.hrasko@example.com",
+]);
+
+$cardDetail = new CardDetail([
+ "card_holder" => "Janko Hrasko",
+]);
+```
+
+### PayLater (Na splátkyTB)
+
+This payment method requires information about items that were bought by customer.
+This structure is more complex and description of all fields can be found in [API reference](/docs/api/initiate-payment).
+
+:::warning
+
+The API will reject requests where `instructed_amount.amount_value` doesn't match the **sum of all total_item_price** values.
+
+:::
+
+```php
+$payLater = new PayLater([
+ "order" => new Order([
+ "order_no" => "ORDER123456",
+ "order_items" => [
+ new OrderItem([
+ "quantity" => 1.0,
+ "total_item_price" => 10.0,
+ "item_detail" => new ItemDetail([
+ "item_detail_en" => new ItemDetailLangUnit([
+ "item_name" => "Product 1",
+ ]),
+ "item_detail_sk" => new ItemDetailLangUnit([
+ "item_name" => "Produkt 1",
+ ]),
+ ]),
+ ]),
+ ],
+ ]),
+]);
+```
+
+## Response
+
+After you create request to initiate payment, you will receive InitiatePaymentResponse with following data:
+```php
+new InitiatePaymentResponse([
+ "payment_id" => 'd7ec77c6-39d8-4011-a462-1a0f1b23f65f',
+ "tatra_pay_plus_url" => 'https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/auth?paymentId=d7ec77c6-39d8-4011-a462-1a0f1b23f65f&client_id=l7ba7ffa0bf66b49b88d17dfe144955f54&hmac=7043761cb4cff51d1d084f90cd25d370b89515a1c43c39e6ea459dd504059834',
+ "available_payment_methods" => [
+ new AvailablePaymentMethod([
+ "payment_method" => PaymentMethod::BANK_TRANSFER,
+ "is_available" => true,
+ ]),
+ new AvailablePaymentMethod([
+ "payment_method" => PaymentMethod::CARD_PAY,
+ "is_available" => true,
+ ]),
+ ]
+]);
+```
+
+Example usage:
+```php
+$response = $tatrapayplus_api->initiatePayment(
+ "redirect uri",
+ $initiate_payment_request, // instance of InitiatePaymentRequest
+);
+$response_obj = $response['object'];
+
+$payment_id = $response_obj->getPaymentId();
+$tatra_pay_plus_url = $response_obj->getTatraPayPlusUrl();
+```
+
+You should save `$payment_id` to your order associated with this payment. You will later need it to [retrieve status of payment](/docs/libraries/php/v1.0.0/process_payment).
+Then you have two options of displaying payment gateway:
+1. Simply redirect user to gateway, field `$tatra_pay_plus_url`.
+2. Show payme
+
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/errors_handling.mdx b/docs/libraries/php/v1.0.0/errors_handling.mdx
new file mode 100644
index 0000000..c4146fe
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/errors_handling.mdx
@@ -0,0 +1,47 @@
+
+# Handling errors
+
+When using the `TatraPayPlusAPIApi`, all API requests are wrapped with internal error handling logic. If the API returns an error, a custom **`Tatrapayplus\TatrapayplusApiClient\ApiException`** is raised. This allows you to catch and respond to failures.
+
+## Basic usage
+
+Wrap all client calls in a `try/catch` block to catch and handle `ApiException`.
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\ApiException;
+
+try {
+ $tatrapayplus_api->getAvailableMethods();
+} catch (ApiException $e) {
+ sprintf('Fetching methods failed: %s', $e);
+ // Handle error
+}
+```
+## Error details
+
+When `Tatrapayplus\TatrapayplusApiClient\ApiException` is raised, caught exception contains more information about given error.
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\ApiException;
+
+try {
+ $tatrapayplus_api->getAvailableMethods();
+} catch (ApiException $e) {
+ $e->getResponseBody(); // HTTP body of the server response either as Json or string
+ $e->getResponseHeaders(); // HTTP response header
+ $e->getRequestBody(); // HTTP request body causing given exception
+ $e->getResponseObject(); // deserialized response object of type \Tatrapayplus\TatrapayplusApiClient\Model\Model400ErrorBody
+}
+```
+
+## InvalidArgumentException
+
+When `InvalidArgumentException` is raised, corresponding API method was called with incorrect parameters.\
+Error message contains relevant information about missing parameter and attempted operation.
+
+```php
+$payment_id = null;
+
+// throws InvalidArgumentException: Missing the required parameter $payment_id when calling cancelPaymentIntent
+$tatrapayplus_api->cancelPaymentIntent($payment_id);
+```
diff --git a/docs/libraries/php/v1.0.0/google_apple_pay.mdx b/docs/libraries/php/v1.0.0/google_apple_pay.mdx
new file mode 100644
index 0000000..c380489
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/google_apple_pay.mdx
@@ -0,0 +1,14 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Google pay and Apple pay
+
+Most of the implementation detail are already covered in [Developer portal documentation](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=Priama-integracia-pre-Google-Pay-a-Apple-Pay).
+
+SDK provides a wrapper around API that can be used in following way:
+
+import createPaymentDirect from '!!raw-loader!@site/code_samples/php/v1.0.0/create_payment_direct.php';
+
+{createPaymentDirect}
+
+
+
diff --git a/docs/libraries/php/v1.0.0/index.mdx b/docs/libraries/php/v1.0.0/index.mdx
index 26a521d..36e53bc 100644
--- a/docs/libraries/php/v1.0.0/index.mdx
+++ b/docs/libraries/php/v1.0.0/index.mdx
@@ -4,4 +4,20 @@ To be able to use and test payment gateway you need to have **Client ID** and **
# Installation
-🚧 WIP 🚧
+Na inštaláciu PHP SDK je potrebné nainštalovať knižnicu `tatrapayplus/tatrapayplus_api_client` cez composer.
+
+# Client initialization
+
+To start working with the API, you need to initialize the TatraPayPlusAPIApi with the following parameters:
+
+```php
+$tatrapayplus_api = new TatraPayPlusAPIApi(
+ "your-client-id",
+ "your-client-secret",
+ mode: TatraPayPlusAPIApi::SANDBOX
+);
+```
+
+There are 2 supported modes:
+- `SANDBOX (default)`: requests will be sent to SANDBOX (test) environment of gateway
+- `PRODUCTION`: requests will be sent to PRODUCTION (live) environment of gateway
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/logging.mdx b/docs/libraries/php/v1.0.0/logging.mdx
new file mode 100644
index 0000000..c24eff8
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/logging.mdx
@@ -0,0 +1,119 @@
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Logging
+
+# TatrapayPlusLogger
+
+The `TatrapayPlusLogger` is a simple and customizable HTTP logger for the `TatraPayPlusAPIApi`.
+It helps you debug API calls by logging outgoing requests and incoming responses, while safely masking sensitive data.
+
+---
+
+## Features
+
+- Logs **request and response** metadata
+- Built-in **field masking**
+- Extendable via `write_line()`
+
+## Masked Fields
+
+The logger masks sensitive values before outputting them:
+
+- **Headers**: `Authorization`
+- **Body fields (reqest and response)**: `client_id`, `client_secret`, `access_token`
+
+Example masked output: `client_secret=abcde*************uvxyz`
+
+You can disable masking by setting `mask_sensitive_data=False` parameter during logger initialization.
+
+
+## Usage Example
+
+### Step 1: Create a Logger Subclass
+
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\TatraPayPlusLogger;
+
+class ConsoleLogger extends TatraPayPlusLogger
+{
+ public array $mask_body_fields = [
+ "access_token",
+ ];
+
+ public function writeLine(string $line): void
+ {
+ print $line;
+ }
+}
+
+### Step 2: Inject the Logger into the API
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\Api\TatraPayPlusAPIApi;
+
+$logger = new ConsoleLogger();
+
+$tatrapayplus_api = new TatraPayPlusAPIApi(
+ "your-client-id",
+ "your-client-secret",
+ $logger,
+);
+```
+
+## Customization
+You can customize the masking fields:
+```php
+$logger->mask_body_fields = ["client_id", "client_secret", "access_token"];
+$logger->mask_header_fields = ["Authorization"];
+$logger->mask_sensitive_data = true; # or false to disable masking
+```
+
+## Example output
+```
+INFO [2025-04-10 13:11:51] [INFO] Request:
+Method: POST
+URL: https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/payments
+Headers:
+{'Authorization': 'Beare*********************************70d69', 'Content-Type': 'application/json', 'X-Request-ID': 'df7f30e8-6cde-4c76-b377-a2e83fd937dd', 'IP-Address': '127.0.1.1', 'Redirect-URI': 'https://tatrabanka.sk/', 'Accept-Language': 'sk', 'Content-Length': '125'}
+Body:
+{
+ "basePayment": {
+ "instructedAmount": {
+ "amountValue": 120,
+ "currency": "EUR"
+ },
+ "endToEnd": "ORDER123456"
+ },
+ "bankTransfer": {}
+}
+
+INFO [2025-04-10 13:11:51] [INFO] Response success(status: 201):
+{
+ "paymentId": "baf651a5-1582-4b92-9a59-dacd61f65a51",
+ "tatraPayPlusUrl": "https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/auth?paymentId=baf651a5-1582-4b92-9a59-dacd61f65a51&client_id=l7ba7ffa0bf66b49b88d17dfe144955f54&hmac=bf1796ce46ebc32617726f53db1981c920f6363bbcbec3a4044ef258db3479a2",
+ "availablePaymentMethods": [
+ {
+ "isAvailable": false,
+ "reasonCodeMethodAvailabilityDescription": "Mandatory structure: userData was not provided in the request body. See specs.",
+ "paymentMethod": "CARD_PAY",
+ "reasonCodeMethodAvailability": "MANDATORY_STRUCTURE_NOT_PROVIDED"
+ },
+ {
+ "isAvailable": false,
+ "reasonCodeMethodAvailabilityDescription": "Mandatory structure: userData was not provided in the request body. See specs.",
+ "paymentMethod": "PAY_LATER",
+ "reasonCodeMethodAvailability": "MANDATORY_STRUCTURE_NOT_PROVIDED"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "BANK_TRANSFER"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "QR_PAY"
+ }
+ ]
+}
+```
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/pre_authorization.mdx b/docs/libraries/php/v1.0.0/pre_authorization.mdx
new file mode 100644
index 0000000..ca0f73f
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/pre_authorization.mdx
@@ -0,0 +1,25 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Pre authorization
+
+We recommend to use the "pre-authorization" transaction type when expecting an increased number of cancellation requests or partial cancellation of payments due to unavailability of goods/services, changes in the price of the order, etc.
+If you want to use pre-authorization for card payments you can pass `is_pre_authorization: true` while initiating payment.
+
+import createPaymentPreAuthorization from '!!raw-loader!@site/code_samples/php/v1.0.0/create_payment_pre_authorization.php';
+
+{createPaymentPreAuthorization}
+
+In case of payment by pre-authorisation, the merchant is obliged to ensure the termination/cancellation of the pre-authorisation by **calling the online interface within 7 days** from the date on which the pre-authorisation was made.
+If the merchant performs a pre-authorisation transaction for the purpose of [registering the card for ComfortPay](/docs/libraries/php/v1.0.0/save_card), the transaction will not be cleared and will be released to the cardholder by the cardholder's bank within a few days.
+We do not recommend making a subsequent reversal of this type of transaction. This is due to the authorization message containing all the information for a future recurring payment.
+There is a risk that the customer's bank will not retain this information as part of the cancellation of the transaction.
+
+
+import confirmCancelPreAuthorization from '!!raw-loader!@site/code_samples/php/v1.0.0/confirm_cancel_pre_authorization.php';
+
+{confirmCancelPreAuthorization}
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/process_payment.mdx b/docs/libraries/php/v1.0.0/process_payment.mdx
new file mode 100644
index 0000000..2a60d0b
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/process_payment.mdx
@@ -0,0 +1,67 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Process payment
+
+After completing the operations in the TatraPayPlus service, the user will be redirected to the **Redirect URL** provided during payment initialization.
+
+## Redirect params
+
+### Path Parameters for Redirection Without a Technical Error
+
+| Path Parameter | Type | Required/Optional | Description |
+| --------------- | ------ | ----------------- | --------------------------------------------- |
+| `paymentId` | string | Required | Identifier of the payment instruction |
+| `paymentMethod` | string | Required | Code of the selected payment method |
+
+### Path Parameters for Redirection in Case of a Technical Error
+
+| Path Parameter | Type | Required/Optional | Description |
+| --------------- | ------ | ----------------- | --------------------------------------------- |
+| `paymentId` | string | Required | Identifier of the payment instruction |
+| `error` | string | Required | Error code |
+| `errorId` | string | Required | Unique error identifier |
+
+### Example
+
+Success ✔️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&paymentMethod=CARD_PAY
+```
+
+Error ❌️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&error=FAILED&errorId=43ca30ec-2956-454c-9d1b-4bd2befee7c8
+```
+
+## Retrieve payment status
+
+Based on received GET params you should retrieve status of payment as following:
+
+import getPaymentStatus from '!!raw-loader!@site/code_samples/php/v1.0.0/get_payment_status.php';
+
+{getPaymentStatus}
+
+`simple_status` return value can have one of three values: `ACCEPTED`, `PENDING`, or `REJECTED`.\
+Your implementation should take the appropriate action based on the value of `simple_status`.
+
+`$response['object']` of type `PaymentIntentStatusResponse` contains all the information based on structure described in [API reference](/docs/api/get-payment-intent-status).
+
+The response also includes saved card information (if the customer chooses to save their card details).
+More details on this feature can be found [💳 here 💳](/docs/libraries/php/v1.0.0/save_card).
+
+## Periodical task
+
+Some payments may be processed later.
+Therefore, you should periodically check the status of **"pending" payments**.
+We recommend setting up a scheduled task that retrieves all pending payments from your system.
+Using the saved `payment_id` with the `getPaymentIntentStatus` method, you can obtain the current status and take the appropriate action in your system.
+
+Recommended pooling rates based on **age of orders**:
+
+| Time Range | Polling Frequency |
+|-----------------------|---------------------|
+| First hour | Every 5 minutes |
+| 1 hour - 24 hours | Every hour |
+| After 24 hours | 5 times per day |
+
+
\ No newline at end of file
diff --git a/docs/libraries/php/v1.0.0/save_card.mdx b/docs/libraries/php/v1.0.0/save_card.mdx
new file mode 100644
index 0000000..1bf3c50
--- /dev/null
+++ b/docs/libraries/php/v1.0.0/save_card.mdx
@@ -0,0 +1,94 @@
+# Remember card(ComfortPay)
+
+ComfortPay is separate service that gives ability to remember user credit card for future usage.
+
+:::warning
+
+If you want to use this functionality **you need to be eligible** for this feature. For more info please contact Tatrabanka support.
+
+:::
+
+## Register to save user card
+
+To be able to save user credit card you need to do one payment and specify parameter `card_detail.comfort_pay`.
+
+```php
+$initiate_payment_request = new Tatrapayplus\TatrapayplusApiClient\Model\InitiatePaymentRequest([
+ "base_payment" => new Tatrapayplus\TatrapayplusApiClient\Model\BasePayment([
+ "instructed_amount" => new Tatrapayplus\TatrapayplusApiClient\Model\Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new Tatrapayplus\TatrapayplusApiClient\Model\E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+ ]),
+ "card_detail" => new Tatrapayplus\TatrapayplusApiClient\Model\CardDetail([
+ "card_holder" => "Janko Hrasko",
+ "comfort_pay" => new Tatrapayplus\TatrapayplusApiClient\Model\RegisterForComfortPayObj([
+ "register_for_comfort_pay" => true,
+ ]),
+ ]),
+ // ...
+]);
+```
+
+## Retrieve and save card token
+
+After the successful payment with `card_detail.comfort_pay = RegisterForComfortPayObj(["register_for_comfort_pay" => true])` you will receive data about customer card in `saved_card` variable.
+
+```php
+$payment_id = 'b54afd37-5bb9-4080-9416-5ec450779087'; // Retrieved from initiatePayment
+[$simple_status, $response] = $tatrapayplus_api->getPaymentIntentStatus($payment_id);
+
+$status_obj = $response["object"]->getStatus();
+
+$status_obj->getMaskedCardNumber(); // '440577******5558'
+$comfort_pay_obj = $status_obj->getComfortPay(); // CardPayStatusStructureComfortPay instance
+$comfort_pay_obj->getCid(); // '123'
+```
+
+| Property | Purpose |
+|------------------|------------------------------------------------------------------------------------------------------------------------------------|
+| cid | This token should be saved to persistent storage on customer |
+| masked_card_number | Can be shown to user to be able to pickup from saved cards |
+
+## Use saved token
+
+After you saved `cid` token to customer. You should show customer saved cards on your website. When user selects one of the saved cards, you need to pass `cid` to `TatraPayPlusAPIApi::generateSignedCardId` and result of this function can be passed to `comfort_pay.SignedCardIdObj()`.
+
+```php
+$cid = '123'; // cid taken from stored customer
+$public_key_content = '...'; // contents of public key file in string format
+$signed_card_id = TatraPayPlusAPIApi::generateSignedCardId(
+ $cid,
+ $public_key_content
+);
+
+$initiate_payment_request = new Tatrapayplus\TatrapayplusApiClient\Model\InitiatePaymentRequest([
+ "base_payment" => new Tatrapayplus\TatrapayplusApiClient\Model\BasePayment([
+ "instructed_amount" => new Tatrapayplus\TatrapayplusApiClient\Model\Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new Tatrapayplus\TatrapayplusApiClient\Model\E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+ ]),
+ "user_data" => new Tatrapayplus\TatrapayplusApiClient\Model\UserData([
+ "first_name" => "Janko",
+ "last_name" => "Hrasko",
+ "email" => "janko.hrasko@example.com",
+ ]),
+ "card_detail" => new Tatrapayplus\TatrapayplusApiClient\Model\CardDetail([
+ "card_holder" => "Janko Hrasko",
+ "comfort_pay" => new Tatrapayplus\TatrapayplusApiClient\Model\SignedCardIdObj([
+ "signed_card_id" => $signed_card_id
+ ]),
+ ]),
+ // ...
+]);
+```
+
+
+
\ No newline at end of file
diff --git a/docs/libraries/python/v1.0.0/create_payment.mdx b/docs/libraries/python/v1.0.0/create_payment.mdx
index 9fea61d..a3e6a19 100644
--- a/docs/libraries/python/v1.0.0/create_payment.mdx
+++ b/docs/libraries/python/v1.0.0/create_payment.mdx
@@ -54,7 +54,7 @@ client.create_payment(
### Redirect URI
-Redirect URI is used as return address after customer finish payment. This URI is necessary and is used to [process result of the payment](/docs/libraries/python/v1.0.0/process_payment).
+Redirect URI is used as return address after customer finishes payment. This URI is necessary and is used to [process result of the payment](/docs/libraries/python/v1.0.0/process_payment).
If your application serves multiple locales with distinct URIs for example:
- https://example.com for one locale
@@ -72,7 +72,7 @@ This URI must exactly match the URI defined in the [Developer Portal](https://de
### Bank transfer and QR pay
-For this payment method you need to define attribute `bank_transfer`. **It can be empty** or contains additional information.
+For this payment method you need to define attribute `bank_transfer`. **It can be empty** or contain additional information.
If you omit this attribute, bank transfer wouldn't be shown.
```python
@@ -80,8 +80,8 @@ bank_transfer \=BankTransfer(remittance_information_unstructured: "Additional in
```
### Card pay
-This payment methods requires `card_detail.card_holder`, `user_data.first_name` and `user_data.last_name`.
-One of `user_data.email` or `user_data.phone` is required, based on these data are send notifications to customers.
+This payment method requires `card_detail.card_holder`, `user_data.first_name` and `user_data.last_name`.
+One of `user_data.email` or `user_data.phone` is required, notifications to customers will be sent based on these.
:::tip
@@ -144,7 +144,7 @@ pay_later = PayLater(
## Response
-After you create reqeust to initiate payment you receive InitiatePaymentResponse with following data:
+After you create request to initiate payment you receive InitiatePaymentResponse with following data:
```python
InitiatePaymentResponse(
payment_id='d7ec77c6-39d8-4011-a462-1a0f1b23f65f',
@@ -164,5 +164,5 @@ InitiatePaymentResponse(
You should save `payment_id` to your order associated with this payment. You will later need it to [retrieve status of payment](/docs/libraries/python/v1.0.0/process_payment).
Then you have two options of displaying payment gateway:
1. Simply redirect user to gateway, field `tatra_pay_plus_url`.
-2. Show payme
+2. Show payment gateway in iframe. For detailed description how to use iframe please visit [Developer portal documentation](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=iFrame-podpora)
\ No newline at end of file
diff --git a/docs/libraries/python/v1.0.0/google_apple_pay.mdx b/docs/libraries/python/v1.0.0/google_apple_pay.mdx
index fc9ea56..945f4a2 100644
--- a/docs/libraries/python/v1.0.0/google_apple_pay.mdx
+++ b/docs/libraries/python/v1.0.0/google_apple_pay.mdx
@@ -4,7 +4,7 @@ import CodeBlock from '@theme/CodeBlock';
Most of the implementation detail are already covered in [Developer portal documentation](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=Priama-integracia-pre-Google-Pay-a-Apple-Pay).
-SDK provide just wrapper around API that can be used in following way:
+SDK provides a wrapper around API that can be used in following way:
import createPaymentDirect from '!!raw-loader!@site/code_samples/python/v1.0.0/create_payment_direct.py';
diff --git a/docs/libraries/python/v1.0.0/save_card.mdx b/docs/libraries/python/v1.0.0/save_card.mdx
index e2dc8d1..a76cea3 100644
--- a/docs/libraries/python/v1.0.0/save_card.mdx
+++ b/docs/libraries/python/v1.0.0/save_card.mdx
@@ -47,7 +47,7 @@ response = client.get_payment_status(payment_id)
## Use saved token
-After you saved `cid` token to customer. You should show customer saved cards in your website. When user select some of the saved card you need to pass `cid` to `generate_signed_card_id_from_cid` and result of this function can be passed to `comfort_pay.SignedCardIdObj()`.
+After you saved `cid` token to customer. You should show customer saved cards on your website. When user selects one of the saved cards, you need to pass `cid` to `generate_signed_card_id_from_cid` and result of this function can be passed to `comfort_pay.SignedCardIdObj()`.
```python
cid = customer.cid # cid taken from stored customer
diff --git a/docusaurus.config.js b/docusaurus.config.js
index bc826df..cc58478 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -115,7 +115,7 @@ const config = {
href: "/docs/libraries/python/v1.0.0/",
},
{
- label: "PHP(WIP)",
+ label: "PHP",
href: "/docs/libraries/php/v1.0.0/",
},
],
@@ -165,6 +165,7 @@ const config = {
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
+ additionalLanguages: ['php'],
},
algolia: {
appId: "B6QCVQHQ3K",
diff --git a/i18n/sk/code.json b/i18n/sk/code.json
new file mode 100644
index 0000000..ddd3c9e
--- /dev/null
+++ b/i18n/sk/code.json
@@ -0,0 +1,444 @@
+{
+ "theme.ErrorPageContent.title": {
+ "message": "This page crashed.",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "Scroll back to top",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.blog.archive.title": {
+ "message": "Archive",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "Archive",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "Blog list page navigation",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "Newer entries",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "Older entries",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "Blog post page navigation",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "Newer post",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "Older post",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "View all tags",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "Switch between dark and light mode (currently {mode})",
+ "description": "The ARIA label for the navbar color mode toggle"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "dark mode",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "light mode",
+ "description": "The name for the light color mode"
+ },
+ "theme.docs.breadcrumbs.navAriaLabel": {
+ "message": "Breadcrumbs",
+ "description": "The ARIA label for the breadcrumbs"
+ },
+ "theme.docs.DocCard.categoryDescription.plurals": {
+ "message": "1 item|{count} items",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "Docs pages",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "Naspäť",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "Ďalej",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "One doc tagged|{count} docs tagged",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged} with \"{tagName}\"",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "Version: {versionLabel}"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "latest version",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "Upraviť túto stránku",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "Direct link to {heading}",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": " on {date}",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": " by {user}",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "Last updated{atDate}{byUser}",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "Versions",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.NotFound.title": {
+ "message": "Page Not Found",
+ "description": "The title of the 404 page"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "Tags:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.admonition.caution": {
+ "message": "caution",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "theme.admonition.danger": {
+ "message": "danger",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "info",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.note": {
+ "message": "note",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "tip",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.warning": {
+ "message": "Upozornenie",
+ "description": "The default label used for the Warning admonition (:::warning)"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Close",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "Blog recent posts navigation",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "Copied",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "Copy code to clipboard",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "Copy",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.CodeBlock.wordWrapToggle": {
+ "message": "Toggle word wrap",
+ "description": "The title attribute for toggle word wrapping button of code block lines"
+ },
+ "theme.DocSidebarItem.expandCategoryAriaLabel": {
+ "message": "Expand sidebar category '{label}'",
+ "description": "The ARIA label to expand the sidebar category"
+ },
+ "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+ "message": "Collapse sidebar category '{label}'",
+ "description": "The ARIA label to collapse the sidebar category"
+ },
+ "theme.NavBar.navAriaLabel": {
+ "message": "Main",
+ "description": "The ARIA label for the main navigation"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "Languages",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.NotFound.p1": {
+ "message": "We could not find what you were looking for.",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "On this page",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.blog.post.readMore": {
+ "message": "Read more",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "Read more about {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "One min read|{readingTime} min read",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.breadcrumbs.home": {
+ "message": "Home page",
+ "description": "The ARIA label for the home page in the breadcrumbs"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "Docs sidebar",
+ "description": "The ARIA label for the sidebar navigation"
+ },
+ "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+ "message": "Close navigation bar",
+ "description": "The ARIA label for close button of mobile sidebar"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "← Back to main menu",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+ "message": "Toggle navigation bar",
+ "description": "The ARIA label for hamburger menu button of mobile navigation"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.SearchBar.seeAll": {
+ "message": "See all {count} results"
+ },
+ "theme.SearchPage.documentsFound.plurals": {
+ "message": "One document found|{count} documents found",
+ "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.SearchPage.existingResultsTitle": {
+ "message": "Search results for \"{query}\"",
+ "description": "The search page title for non-empty query"
+ },
+ "theme.SearchPage.emptyResultsTitle": {
+ "message": "Search the documentation",
+ "description": "The search page title for empty query"
+ },
+ "theme.SearchPage.inputPlaceholder": {
+ "message": "Type your search here",
+ "description": "The placeholder for search page input"
+ },
+ "theme.SearchPage.inputLabel": {
+ "message": "Hľadať",
+ "description": "The ARIA label for search page input"
+ },
+ "theme.SearchPage.algoliaLabel": {
+ "message": "Search by Algolia",
+ "description": "The ARIA label for Algolia mention"
+ },
+ "theme.SearchPage.noResultsText": {
+ "message": "No results were found",
+ "description": "The paragraph for empty search result"
+ },
+ "theme.SearchPage.fetchingNewResults": {
+ "message": "Fetching new results...",
+ "description": "The paragraph for fetching new search results"
+ },
+ "theme.SearchBar.label": {
+ "message": "Hľadať",
+ "description": "The ARIA label and placeholder for search button"
+ },
+ "theme.SearchModal.searchBox.resetButtonTitle": {
+ "message": "Clear the query",
+ "description": "The label and ARIA label for search box reset button"
+ },
+ "theme.SearchModal.searchBox.cancelButtonText": {
+ "message": "Cancel",
+ "description": "The label and ARIA label for search box cancel button"
+ },
+ "theme.SearchModal.startScreen.recentSearchesTitle": {
+ "message": "Recent",
+ "description": "The title for recent searches"
+ },
+ "theme.SearchModal.startScreen.noRecentSearchesText": {
+ "message": "No recent searches",
+ "description": "The text when no recent searches"
+ },
+ "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": {
+ "message": "Save this search",
+ "description": "The label for save recent search button"
+ },
+ "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": {
+ "message": "Remove this search from history",
+ "description": "The label for remove recent search button"
+ },
+ "theme.SearchModal.startScreen.favoriteSearchesTitle": {
+ "message": "Favorite",
+ "description": "The title for favorite searches"
+ },
+ "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": {
+ "message": "Remove this search from favorites",
+ "description": "The label for remove favorite search button"
+ },
+ "theme.SearchModal.errorScreen.titleText": {
+ "message": "Unable to fetch results",
+ "description": "The title for error screen of search modal"
+ },
+ "theme.SearchModal.errorScreen.helpText": {
+ "message": "You might want to check your network connection.",
+ "description": "The help text for error screen of search modal"
+ },
+ "theme.SearchModal.footer.selectText": {
+ "message": "to select",
+ "description": "The explanatory text of the action for the enter key"
+ },
+ "theme.SearchModal.footer.selectKeyAriaLabel": {
+ "message": "Enter key",
+ "description": "The ARIA label for the Enter key button that makes the selection"
+ },
+ "theme.SearchModal.footer.navigateText": {
+ "message": "to navigate",
+ "description": "The explanatory text of the action for the Arrow up and Arrow down key"
+ },
+ "theme.SearchModal.footer.navigateUpKeyAriaLabel": {
+ "message": "Arrow up",
+ "description": "The ARIA label for the Arrow up key button that makes the navigation"
+ },
+ "theme.SearchModal.footer.navigateDownKeyAriaLabel": {
+ "message": "Arrow down",
+ "description": "The ARIA label for the Arrow down key button that makes the navigation"
+ },
+ "theme.SearchModal.footer.closeText": {
+ "message": "to close",
+ "description": "The explanatory text of the action for Escape key"
+ },
+ "theme.SearchModal.footer.closeKeyAriaLabel": {
+ "message": "Escape key",
+ "description": "The ARIA label for the Escape key button that close the modal"
+ },
+ "theme.SearchModal.footer.searchByText": {
+ "message": "Search by",
+ "description": "The text explain that the search is making by Algolia"
+ },
+ "theme.SearchModal.noResultsScreen.noResultsText": {
+ "message": "No results for",
+ "description": "The text explains that there are no results for the following search"
+ },
+ "theme.SearchModal.noResultsScreen.suggestedQueryText": {
+ "message": "Try searching for",
+ "description": "The text for the suggested query when no results are found for the following search"
+ },
+ "theme.SearchModal.noResultsScreen.reportMissingResultsText": {
+ "message": "Believe this query should return results?",
+ "description": "The text for the question where the user thinks there are missing results"
+ },
+ "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": {
+ "message": "Let us know.",
+ "description": "The text for the link to report missing results"
+ },
+ "theme.SearchModal.placeholder": {
+ "message": "Search docs",
+ "description": "The placeholder of the input of the DocSearch pop-up modal"
+ },
+ "theme.blog.post.plurals": {
+ "message": "One post|{count} posts",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} tagged with \"{tagName}\"",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.blog.author.pageTitle": {
+ "message": "{authorName} - {nPosts}",
+ "description": "The title of the page for a blog author"
+ },
+ "theme.blog.authorsList.pageTitle": {
+ "message": "Authors",
+ "description": "The title of the authors page"
+ },
+ "theme.blog.authorsList.viewAll": {
+ "message": "View all authors",
+ "description": "The label of the link targeting the blog authors page"
+ },
+ "theme.blog.author.noPosts": {
+ "message": "This author has not written any posts yet.",
+ "description": "The text for authors with 0 blog post"
+ },
+ "theme.contentVisibility.unlistedBanner.title": {
+ "message": "Unlisted page",
+ "description": "The unlisted content banner title"
+ },
+ "theme.contentVisibility.unlistedBanner.message": {
+ "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.",
+ "description": "The unlisted content banner message"
+ },
+ "theme.contentVisibility.draftBanner.title": {
+ "message": "Draft page",
+ "description": "The draft content banner title"
+ },
+ "theme.contentVisibility.draftBanner.message": {
+ "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
+ "description": "The draft content banner message"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "Try again",
+ "description": "The label of the button to try again rendering when the React error boundary captures an error"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "Skip to main content",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Tags",
+ "description": "The title of the tag list page"
+ }
+}
diff --git a/i18n/sk/docusaurus-plugin-content-blog/options.json b/i18n/sk/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 0000000..9239ff7
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-blog/options.json
@@ -0,0 +1,14 @@
+{
+ "title": {
+ "message": "Blog",
+ "description": "The title for the blog used in SEO"
+ },
+ "description": {
+ "message": "Blog",
+ "description": "The description for the blog used in SEO"
+ },
+ "sidebar.title": {
+ "message": "Recent posts",
+ "description": "The label for the left sidebar"
+ }
+}
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current.json b/i18n/sk/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000..5564a5d
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,58 @@
+{
+ "version.label": {
+ "message": "Next",
+ "description": "The label for version current"
+ },
+ "sidebar.apisidebar.category.TatraPayPlus API": {
+ "message": "TatraPayPlus API",
+ "description": "The label for category TatraPayPlus API in sidebar apisidebar"
+ },
+ "sidebar.apisidebar.category.TatraPayPlus Appearance API": {
+ "message": "TatraPayPlus Appearance API",
+ "description": "The label for category TatraPayPlus Appearance API in sidebar apisidebar"
+ },
+ "sidebar.apisidebar.category.TatraPayPlus DirectAPI": {
+ "message": "TatraPayPlus DirectAPI",
+ "description": "The label for category TatraPayPlus DirectAPI in sidebar apisidebar"
+ },
+ "sidebar.apisidebar.category.Authentication": {
+ "message": "Authentication",
+ "description": "The label for category Authentication in sidebar apisidebar"
+ },
+ "sidebar.apisidebar.doc.Initiate payment intent": {
+ "message": "Initiate payment intent",
+ "description": "The label for the doc item Initiate payment intent in sidebar apisidebar, linking to the doc api/initiate-payment"
+ },
+ "sidebar.apisidebar.doc.Payment methods list": {
+ "message": "Payment methods list",
+ "description": "The label for the doc item Payment methods list in sidebar apisidebar, linking to the doc api/get-methods"
+ },
+ "sidebar.apisidebar.doc.Payment intent status.": {
+ "message": "Payment intent status.",
+ "description": "The label for the doc item Payment intent status. in sidebar apisidebar, linking to the doc api/get-payment-intent-status"
+ },
+ "sidebar.apisidebar.doc.Update payment intent": {
+ "message": "Update payment intent",
+ "description": "The label for the doc item Update payment intent in sidebar apisidebar, linking to the doc api/update-payment-intent"
+ },
+ "sidebar.apisidebar.doc.Cancel payment intent.": {
+ "message": "Cancel payment intent.",
+ "description": "The label for the doc item Cancel payment intent. in sidebar apisidebar, linking to the doc api/cancel-payment-intent"
+ },
+ "sidebar.apisidebar.doc.Set appearance parameters for TatraPayPlus": {
+ "message": "Set appearance parameters for TatraPayPlus",
+ "description": "The label for the doc item Set appearance parameters for TatraPayPlus in sidebar apisidebar, linking to the doc api/set-appearance"
+ },
+ "sidebar.apisidebar.doc.Set logo for TatraPayPlus": {
+ "message": "Set logo for TatraPayPlus",
+ "description": "The label for the doc item Set logo for TatraPayPlus in sidebar apisidebar, linking to the doc api/set-logo"
+ },
+ "sidebar.apisidebar.doc.Create direct transaction request": {
+ "message": "Create direct transaction request",
+ "description": "The label for the doc item Create direct transaction request in sidebar apisidebar, linking to the doc api/create-direct-transaction-request"
+ },
+ "sidebar.apisidebar.doc.Obtain OAuth2 Access Token": {
+ "message": "Obtain OAuth2 Access Token",
+ "description": "The label for the doc item Obtain OAuth2 Access Token in sidebar apisidebar, linking to the doc api/get-access-token"
+ }
+}
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/assets/color_guide_en.png b/i18n/sk/docusaurus-plugin-content-docs/current/assets/color_guide_en.png
new file mode 100644
index 0000000..80aa64a
Binary files /dev/null and b/i18n/sk/docusaurus-plugin-content-docs/current/assets/color_guide_en.png differ
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/appearances.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/appearances.mdx
new file mode 100644
index 0000000..1670722
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/appearances.mdx
@@ -0,0 +1,34 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Vzhľad brány
+
+Platobná brána môže mať vlastné farby a logo.
+
+
+
+:::warning
+
+Vzhľad brány je možné zmeniť iba v móde **PRODUCTION**.
+
+:::
+
+## Logo
+
+import setLogo from '!!raw-loader!@site/code_samples/node/v1.0.0/setLogo';
+
+{setLogo}
+
+## Farby
+
+import setColors from '!!raw-loader!@site/code_samples/node/v1.0.0/setColors';
+
+{setColors}
+
+
+:::tip
+
+Zmeny sa prejavia iba v **nových platbách**. Obnovenie stránky nestačí.
+
+:::
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/available_methods.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/available_methods.mdx
new file mode 100644
index 0000000..15b19e9
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/available_methods.mdx
@@ -0,0 +1,18 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import getAvailablePaymentMethods from '!!raw-loader!@site/code_samples/node/v1.0.0/getAvailablePaymentMethods.js';
+
+# Získanie dostupných metód
+
+V tejto platobnej bráne si zákazník vyberá spôsob platby priamo v bráne, **NIE na eshope**.
+Preto chcete zákazníka informovať o dostupných metódach, prípadne zobraziť odlišný text alebo obrázok podľa podmienok ako:
+- mena
+- suma platby
+- krajina
+
+Pre tento účel môžete získať dostupné platobné metódy nasledujúcim volaním:
+{getAvailablePaymentMethods}
+
+Na základe odpovede by ste mali zákazníkovi zobraziť informácie o dostupných metódach a následne vytvoriť novú platbu.
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/cancel_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/cancel_payment.mdx
new file mode 100644
index 0000000..4dafbb1
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/cancel_payment.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Zrušenie platby
+
+Túto operáciu je možné použiť s akoukoľvek platobnou metódou, ale iba ak je `authorization_status=NEW`.
+
+V prípade platobnej metódy „PAY_LATER“ je možné túto metódu použiť aj vtedy, ak `authorization_status=AUTH_DONE` a zároveň platba obsahuje `status=CUSTOMER_CREATION_IN_PROGRESS`.
+
+import cancelPayment from '!!raw-loader!@site/code_samples/node/v1.0.0/cancelPayment';
+
+{cancelPayment}
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/chargeback.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/chargeback.mdx
new file mode 100644
index 0000000..beb3b24
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/chargeback.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Vrátenie platby
+
+Obchodník môže vykonať úplné alebo čiastočné vrátenie platby cez CardPay.
+Vrátenie platby je možné len pri úspešných platbách vrátane dokončených predautorizácií, ako aj pri platbách, pri ktorých už bolo vrátenie vykonané, pričom výška vrátenia nesmie presiahnuť pôvodnú sumu platby (v prípade predautorizácie ide o sumu, ktorou bola predautorizácia potvrdená).
+
+
+import chargeBack from '!!raw-loader!@site/code_samples/node/v1.0.0/chargeBack';
+
+{chargeBack}
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/create_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/create_payment.mdx
new file mode 100644
index 0000000..07282b2
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/create_payment.mdx
@@ -0,0 +1,189 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import createPayment from '!!raw-loader!@site/code_samples/node/v1.0.0/createPayment';
+
+# Vytvorenie platby
+
+Pre vytvorenie platby cez Python SDK zavolajte metódu `sdk.createPayment`.
+
+
+ Zobraziť príklady pre všetky dostupné platobné metódy
+ {createPayment}
+
+
+## Povinné údaje
+
+Tatrapay+ podporuje viaceré platobné metódy. Na základe zvolenej metódy môžete v požiadavke doplniť dodatočné údaje.
+Niektoré údaje sú však **povinné** pre všetky typy platieb:
+
+```javascript
+basePayment: {
+ endToEnd: "/VS0123456789/SS0123456789/KS123456",
+ instructedAmount: {
+ amountValue: 99.99,
+ currency: "EUR",
+ },
+},
+```
+
+:::warning
+
+Najčastejšia chyba nastáva, keď hodnota `instructed_amount.amount_value` nie je správne zaokrúhlená a API ju odmietne.
+Prosím zaokrúhlite vaše údaje na **2 desatinné miesta**.
+
+:::
+
+### Úprava jazyka a preferovanej metódy
+
+V základe Tatrapay+ zobrazí všetky dostupné platobné metódy a bude zobrazená v **slovenskom** jazyku.
+Ak chcete upraviť toto správanie, môžete poslať parametre `language` a `preferred_method` do `create_payment`.
+
+Ak je `preferred_method` dostupná, zákazník na ňu bude priamo nasmerovaný.
+
+
+ Zobrazenie brány v anglickom jazyku s platbou prevodom
+
+```javascript
+const { data, error } = await sdk.createPayment(
+ ...,
+ REDIRECT_URI,
+ // highlight-start
+ 'en',
+ 'BANK_TRANSFER',
+ // highlight-end
+);
+```
+
+
+
+### Presmerovanie na URI
+
+`redirect_uri` je použitá ako návratová adresa zákazníka po vykonaní platby. Táto URI je povinná a slúži na [spracovanie výsledku platby](/docs/libraries/node/v1.0.0/process_payment).
+
+Ak vaša aplikácia poskytuje viacero jazykov s odlišnými URI, ako napr.:
+- https://example.com pre 1 jazyk
+- https://example.com/de/ pre nemecký jazyk
+
+musíte zaregistrovať obidve URI v developer portáli.
+Následne sa pri požiadavke `create_payment` uistite, že používate `redirect_uri` zodpovedajúcu správnemu jazyku.
+
+:::warning
+
+Táto URI musí presne zodpovedať URI definovanej v [Developer Portáli](https://developer.tatrabanka.sk/pages/devportal/sk/#/)
+
+:::
+
+## Údaje špecifické pre platobnú metódu
+
+### Bankový prevod a platba cez QR kód
+
+Pre túto platobnú metódu musíte definovať atribút `bank_transfer`. **Môže byť prázdny** alebo obsahovať dodatočné informácie.
+Ak nepoužíjete tento atribút, bankový prevod nebude zobrazený.
+
+```javascript
+bankTransfer: {
+ remittanceInformationUnstructured: "Additional informations"
+}
+```
+
+### Platba kartou
+
+Táto platobná metóda vyžaduje `card_detail.card_holder`, `user_data.first_name` a `user_data.last_name`.
+Jeden z atribútov `user_data.email` alebo `user_data.phone` je povinný. Podľa týchto údajov budú zákazníkom zasielané notifikácie.
+
+:::tip
+
+SDK automaticky odstráni diakritiku v atribúte `card_detail.card_holder`, takže ich **nemusíte** konvertovať.
+
+:::
+
+```javascript
+userData: {
+ firstName: "Jozko",
+ lastName: "Hruska",
+ email: "test@tatrabanka.ok",
+ phone: "+421911123456",
+},
+cardDetail: {
+ cardHolder: "Jozko Hruska",
+}
+```
+
+### PayLater (Na splátkyTB)
+
+Táto platobná metóda vyžaduje informácie o zakúpených položkách zákazníka.
+Ich štruktúra je komplexnejšia a popis všetkých údajov nájdete v [API príručke](/docs/api/initiate-payment).
+
+:::warning
+
+API odmietne požiadavky, v ktorých `instructed_amount.amount_value` sa nerovná **sume všetkých položiek**.
+
+:::
+
+```javascript
+payLater: {
+ order: {
+ orderNo: "111",
+ orderItems: [
+ {
+ quantity: 1,
+ totalItemPrice: 200,
+ itemDetail: {
+ itemDetailSK: {
+ itemName: "Stol",
+ itemDescription: "biely stol",
+ },
+ itemDetailEN: {
+ itemName: "Table",
+ itemDescription: "White table",
+ },
+ },
+ itemInfoURL: "https://url.sk",
+ },
+ ],
+ preferredLoanDuration: 24,
+ downPayment: 10,
+ },
+ capacityInfo: {
+ monthlyIncome: 1000,
+ monthlyExpenses: 0,
+ numberOfChildren: 0,
+ },
+}
+```
+
+## Odpoveď
+
+Po vytvorení požiadavky na platbu obdržíte `InitiatePaymentResponse` s nasledujúcimi údajmi:
+```json
+{
+ "paymentId": "580ff61e-efdd-40e5-8bc4-c373d59cf0c2",
+ "tatraPayPlusUrl": "https://api.tatrabanka.sk/tatrapayplus/production/v1/auth?paymentId=580ff61e-efdd-40e5-8bc4-c373d59cf0c2&client_id=l7ba7ffa0bf66b49b88d17dfe144955f54&hmac=19be0bf2a2e5d5e8626c01203ba747648d8fea0fd0106e51786a13183e9e91c8",
+ "availablePaymentMethods": [
+ {
+ "isAvailable": true,
+ "paymentMethod": "CARD_PAY"
+ },
+ {
+ "isAvailable": false,
+ "reasonCodeMethodAvailabilityDescription": "Method is not in the partner contract",
+ "paymentMethod": "PAY_LATER",
+ "reasonCodeMethodAvailability": "NO_CONTRACT"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "BANK_TRANSFER"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "QR_PAY"
+ }
+]
+}
+```
+Mali ste si uložiť `paymentId` k objednávke spojenej s danou platbou. Neskôr ho budete potrebovať pre [zistenie stavu platby](/docs/libraries/node/v1.0.0/process_payment).
+Následne máte 2 možnosti pre zobrazenie platobnej brány:
+1. Presmerujete zákazník na bránu, podľa url z atribútu `tatraPayPlusUrl`.
+2. Zobrazenie v iframe. Pre detailné informácie o použití iframe zobrazenia prosím navštívte [Developer portál dokumentáciu](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=iFrame-podpora)
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/google_apple_pay.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/google_apple_pay.mdx
new file mode 100644
index 0000000..ea6cb5a
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/google_apple_pay.mdx
@@ -0,0 +1,14 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Google pay a Apple pay
+
+Väčšina detailov implementácie je už zahrnutá v [Developer portál dokumentácii](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=Priama-integracia-pre-Google-Pay-a-Apple-Pay).
+
+SDK poskytuje wrapper okolo API, ktorý je možné použiť nasledujúcim spôsobom:
+
+import createPaymentDirect from '!!raw-loader!@site/code_samples/node/v1.0.0/createPaymentDirect';
+
+{createPaymentDirect}
+
+
+
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/index.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/index.mdx
new file mode 100644
index 0000000..a1da829
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/index.mdx
@@ -0,0 +1,50 @@
+import CodeBlock from '@theme/CodeBlock';
+import testTb from '!!raw-loader!@site/code_samples/node/v1.0.0/testTb.mjs';
+
+# Úvod
+
+Aby ste mohli používať a testovať platobnú bránu, potrebujete **Client ID** a **Client secret** z [TB developer portálu](https://developer.tatrabanka.sk/).
+Pre získanie týchto údajov sa musíte registrovať v TB developer portáli. Viac info na [Developer portál dokumentácia](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=Ako-za_a_).
+
+# Inštalácia
+
+Pre používanie API klienta je potrebné nainštalovať balík `tatrapayplus-node`.
+```npm
+npm i @tatrabanka/tatrapayplus-node
+```
+
+# Overenie inštalácie
+
+Pre overenie správnej inštalácie môžete využiť nasledujúcu minimálnu konfiguráciu.
+
+1. Ak ste tak ešte nevykonali, vytvorte si účet a aplikáciu v [TB developer portáli](https://developer.tatrabanka.sk/).
+2. Skopírujte nasledujúci kód do nového súboru `test_tb.mjs`. Zameňte **API_KEY**, **API_SECRET** a **REDIRECT_URI** údajmi z vášho účtu.
+ {testTb}
+
+3. Spustite príkaz: `node test_tb.mjs`
+4. Ak sa príkaz vykonal úspešne, uvidíte odpoveď z API v JSON formáte:
+ ```json
+ {
+ "paymentId": "fcdab2d3-f471-4434-8834-df3cebdab03d",
+ "tatraPayPlusUrl": "https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/auth?paymentId=xxxx&client_id=xxxx&hmac=xxxx",
+ "availablePaymentMethods": [
+ {
+ "isAvailable": true,
+ "paymentMethod": "CARD_PAY"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "PAY_LATER"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "BANK_TRANSFER"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "QR_PAY"
+ }
+ ]
+ }
+ ```
+5. Môžete skopírovať `tatraPayPlusUrl` do vášho prehliadača a mali by ste sa dostať na platobnú bránu Tatrapay+. 🎉
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/logging.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/logging.mdx
new file mode 100644
index 0000000..96293f2
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/logging.mdx
@@ -0,0 +1,108 @@
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Logging
+
+# TatrapayPlusLogger
+
+`TatrapayPlusLogger` je jednoduchý a prispôsobiteľný HTTP logger pre `TBPlusSDK`.
+Pomáha vám ladiť volania API zaznamenávaním odchádzajúcich požiadaviek a prichádzajúcich odpovedí a zároveň bezpečne maskuje citlivé údaje.
+
+---
+
+## Funkcie
+
+- Zaznamenáva metadáta **žiadostí a odpovedí**
+- Vstavané **maskovanie polí**
+- Rozšíriteľné pomocou `write_line()`
+
+## Maskované polia
+
+Logger maskuje citlivé hodnoty pred ich výstupom:
+
+- **Headers**: `Authorization`
+- **Body fields (reqest and response)**: `client_id`, `client_secret`, `access_token`
+
+Príklad maskovaného výstupu: `client_secret=abcde*************uvxyz`
+
+Maskovanie môžete zakázať nastavením parametra `mask_sensitive_data=False` počas inicializácie loggeru:
+```javascript
+const logger = new TBPlusLogger(false);
+```
+
+## Príklad použitia
+
+### Krok 1: Vytvorenie podtriedy Loggeru
+
+
+```javascript
+import { TBPlusLogger } from "./logger";
+
+class ConsoleLogger extends TBPlusLogger {
+ protected writeLine(line: string): void {
+ console.log("[ConsoleLogger]", line);
+ }
+}
+}
+
+```
+
+### Krok 2: Vloženie loggeru do klienta
+
+```javascript
+import { TBPlusSDK } from "tbplus-sdk";
+
+const logger = new ConsoleLogger();
+
+const sdk = new TBPlusSDK(
+ API_KEY,
+ API_SECRET,
+ "192.0.2.123",
+ {},
+ logger
+);
+```
+
+## Prispôsobenie
+Maskovacie polia si môžete prispôsobiť:
+
+```javascript
+logger.maskSensitiveData = true;
+logger.maskBodyFields = ["client_id", "client_secret", "access_token"];
+logger.maskHeaderFields = ["authorization"];
+```
+
+## Príklad výstupu
+```
+[ConsoleLogger] Request: POST https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/payments
+[ConsoleLogger] Headers:
+{
+ "authorization": "Beare*********************************70d69",
+ "content-type": "application/json",
+ "x-request-id": "df7f30e8-6cde-4c76-b377-a2e83fd937dd"
+}
+[ConsoleLogger] Body:
+{
+ "basePayment": {
+ "instructedAmount": {
+ "amountValue": 120,
+ "currency": "EUR"
+ },
+ "endToEnd": "ORDER123456"
+ },
+ "bankTransfer": {}
+}
+[ConsoleLogger] Response Status: 201
+[ConsoleLogger] Response:
+{
+ "paymentId": "baf651a5-1582-4b92-9a59-dacd61f65a51",
+ "tatraPayPlusUrl": "https://api.tatrabanka.sk/...&client_id=l7ba7f*****4955f54&hmac=bf17*****3479a2",
+ "availablePaymentMethods": [
+ {
+ "paymentMethod": "BANK_TRANSFER",
+ "isAvailable": true
+ },
+ ...
+ ]
+}
+```
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/pre_authorization.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/pre_authorization.mdx
new file mode 100644
index 0000000..8789b59
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/pre_authorization.mdx
@@ -0,0 +1,25 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Predautorizácia
+
+Odporúčame použiť typ transakcie „predautorizácia“ v prípade predpokladu zvýšeného počtu žiadostí o zrušenie alebo čiastočného zrušenia platieb z dôvodu nedostupnosti tovaru/služieb, zmien ceny objednávky a pod.
+Ak chcete použiť predautorizáciu pre platby kartou, môžete pri iniciovaní platby zadať `is_pre_authorization: true`.
+
+import createPaymentPreAuthorization from '!!raw-loader!@site/code_samples/node/v1.0.0/createPaymentPreAuthorization';
+
+{createPaymentPreAuthorization}
+
+V prípade platby prostredníctvom predautorizácie je obchodník povinný zabezpečiť ukončenie/zrušenie predautorizácie **zavolaním na online rozhranie do 7 dní** od dátumu, kedy bola predautorizácia vykonaná.
+Ak obchodník vykoná transakciu predautorizácie za účelom [registrácie karty pre ComfortPay](/docs/libraries/node/v1.0.0/save_card), transakcia nebude zúčtovaná a bude držiteľovi karty uvoľnená bankou držiteľa karty v priebehu niekoľkých dní.
+Neodporúčame vykonávať následné storno tohto typu transakcie. Je to z dôvodu, že autorizačná správa obsahuje všetky informácie pre budúcu opakovanú platbu.
+Existuje riziko, že banka zákazníka si tieto informácie v rámci zrušenia transakcie neuchová.
+
+
+import confirmCancelPreAuthorization from '!!raw-loader!@site/code_samples/node/v1.0.0/confirmCancelPreAuthorization';
+
+{confirmCancelPreAuthorization}
+
+
+
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/process_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/process_payment.mdx
new file mode 100644
index 0000000..0d95a1d
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/process_payment.mdx
@@ -0,0 +1,75 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Spracovanie platby
+
+Po dokončení operácií v službe TatraPayPlus bude používateľ presmerovaný na **URL adresu presmerovania** uvedenú pri inicializácii platby.
+
+## Parametre presmerovania
+
+### Path parametre pre presmerovanie bez technickej chyby
+
+| Path Parameter | Typ | Povinné | Popis |
+| --------------- | ------ | -----------------| --------------------------------------- |
+| `paymentId` | string | Povinné | ID platby |
+| `paymentMethod` | string | Povinné | Kód zvolenej platobnej metódy |
+
+### Path parametre pre presmerovanie v prípade technickej chyby
+
+| Path Parameter | Typ | Povinné | Popis |
+| --------------- | ------ | ----------| --------------------------------------- |
+| `paymentId` | string | Povinné | ID platby |
+| `error` | string | Povinné | Kód chyby |
+| `errorId` | string | Povinné | unikátne ID chyby |
+
+### Príklad
+
+Úspech ✔️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&paymentMethod=CARD_PAY
+```
+
+Chyba ❌️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&error=FAILED&errorId=43ca30ec-2956-454c-9d1b-4bd2befee7c8
+```
+
+## Získanie stavu platby
+
+Na základe prijatých parametrov GET by ste mali získať stav platby nasledovne:
+
+import getPaymentStatus from '!!raw-loader!@site/code_samples/node/v1.0.0/getPaymentStatus';
+
+{getPaymentStatus}
+
+Výsledok obsahuje atribút `simple_status`, ktorý môže mať jednu z troch hodnôt: `CAPTURE`, `AUTHORIZED` alebo `REJECTED`.
+| Platobná metóda| CAPTURE | REJECTED | AUTHORIZED |
+|----------------|-------------------------------------------|----------------------|----------------------|
+| QR_PAY | ACSC, ACCC | CANC, RJCT | |
+| BANK_TRANSFER | ACSC, ACCC | CANC, RJCT | |
+| PAY_LATER | LOAN_APPLICATION_FINISHED, LOAN_DISBURSED | CANCELED, EXPIRED | |
+| CARD_PAY | OK, CB | FAIL | PA |
+| DIRECT_API | OK, CB | FAIL | |
+
+Vaša implementácia by mala vykonať príslušné akcie na základe hodnoty `simple_status`.
+
+Atribút `data` obsahuje všetky informácie na základe štruktúry opísanej v [API príručke](/docs/api/get-payment-intent-status).
+
+Odpoveď obsahuje aj uložené informácie o karte (ak sa zákazník rozhodne uložiť údaje o svojej karte).
+Viac podrobností o tejto funkcii nájdete [💳 tu 💳](/docs/libraries/node/v1.0.0/save_card).
+
+## Periodická úloha
+
+Niektoré platby môžu byť spracované neskôr.
+Preto by ste mali pravidelne kontrolovať stav **„čakajúcich“ platieb**.
+Odporúčame nastaviť plánovanú úlohu, ktorá z vášho systému načíta všetky čakajúce platby.
+Pomocou uloženého `payment_id` s metódou `get_payment_status` môžete získať aktuálny stav a vykonať príslušné akcie vo vašom systéme.
+
+Odporúčané intervaly získania stavov na základe **veku objednávok**:
+
+| Časový rozsah | Frekvencia dopytu |
+|-----------------------|---------------------|
+| 1. hodina | Každých 5 minút |
+| 1 hodina - 24 hodín | Každú hodinu |
+| Po 24 hodinách | 5-krát denne |
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/save_card.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/save_card.mdx
new file mode 100644
index 0000000..ffb8979
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/node/v1.0.0/save_card.mdx
@@ -0,0 +1,107 @@
+# Zapamätanie karty (ComfortPay)
+
+ComfortPay je samostatná služba, ktorá umožňuje zapamätať si kreditnú kartu používateľa pre budúce použitie.
+
+:::warning
+
+Ak chcete túto funkciu používať, **musíte na ňu spĺňať podmienky**. Pre viac informácií kontaktujte podporu Tatrabanky.
+
+:::
+
+## Registrácia pre uloženie karty
+
+Pre uloženie údajov o kreditnej karte používateľa je potrebné vykonať jednu platbu a zadať parameter `card_detail.comfort_pay`.
+
+```javascript
+const { data, error } = await sdk.createPayment(
+ {
+ userData: {
+ firstName: "Jozko",
+ lastName: "Hruska",
+ phone: "+421911123456",
+ },
+ cardDetail: {
+ cardHolder: "Jozko Hruska",
+ // highlight-start
+ comfortPay: {
+ registerForComfortPay: true
+ }
+ // highlight-end
+ },
+ basePayment: {
+ endToEnd: "/VS0123456789/SS0123456789/KS123456",
+ instructedAmount: {
+ amountValue: 10000,
+ currency: "EUR",
+ },
+ },
+ },
+ REDIRECT_URI,
+);
+```
+
+## Získanie a uloženie tokenu karty
+
+Po úspešnej platbe s `cardDetail.comfortPay.registerForComfortPay=true` dostanete údaje o zákazníckej karte v premennej `savedCard`.
+
+```javascript
+const paymentId = req.query.paymentId; // based on your server
+const {simpleStatus, savedCard, data, error} = await sdk.getPaymentStatus(paymentId);
+// savedCard == {
+// cid: "123456789",
+// maskedCardNumber: "440577******5558",
+// creditCard: {
+// niceType: "Visa",
+// type: "visa",
+// patterns: [4],
+// gaps: [4, 8, 12],
+// lengths: [16, 18, 19],
+// code: { name: "CVV", size: 3 },
+// matchStrength: 1,
+// },
+// }
+```
+
+| Premenná | Popis |
+|------------------|------------------------------------------------------------------------------------------------------------------------------------|
+| cid | Tento token by mal byť uložený pre účet zákazníka. |
+| maskedCardNumber | Môže byť zobrazené používateľovi, aby si mohol vybrať z uložených kariet |
+| creditCard | Údaje podľa `maskedCardNumber` vytvorené v [credit-card-type knižnici](https://www.npmjs.com/package/credit-card-type) |
+
+## Použitie uloženého tokenu
+
+Po uložení tokenu `cid` pre zákazníka by ste mali zákazníkovi zobraziť uložené karty na vašej webovej stránke. Keď si používateľ vyberie jednu z uložených kariet, musíte odovzdať `cid` funkcii `generateSignedCardIdFromCid` a výsledok tejto funkcie je možné odovzdať do `comfortPay.signedCardId`.
+
+```javascript
+// highlight-start
+const cidFromPersistentStorage = db.customer.get('cid');
+const signedCardId = sdk.generateSignedCardIdFromCid(cidFromPersistentStorage);
+// highlight-end
+const { data, error } = await sdk.createPayment(
+ {
+ userData: {
+ firstName: "Jozko",
+ lastName: "Hruska",
+ phone: "+421911123456",
+ },
+ cardDetail: {
+ cardHolder: "Jozko Hruska",
+ // highlight-start
+ comfortPay: {
+ signedCardId: signedCardId
+ }
+ // highlight-end
+ },
+ basePayment: {
+ endToEnd: "/VS0123456789/SS0123456789/KS123456",
+ instructedAmount: {
+ amountValue: 10000,
+ currency: "EUR",
+ },
+ },
+ },
+ REDIRECT_URI,
+);
+```
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/appearances.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/appearances.mdx
new file mode 100644
index 0000000..c68a488
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/appearances.mdx
@@ -0,0 +1,34 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Vzhľad brány
+
+Platobná brána môže mať vlastné farby a logo.
+
+
+
+:::warning
+
+Vzhľad brány je možné zmeniť iba v móde **PRODUCTION**.
+
+:::
+
+## Logo
+
+import setLogo from '!!raw-loader!@site/code_samples/php/v1.0.0/set_logo.php';
+
+{setLogo}
+
+## Farby
+
+import setColors from '!!raw-loader!@site/code_samples/php/v1.0.0/set_colors.php';
+
+{setColors}
+
+
+:::tip
+
+Zmeny sa prejavia iba v **nových platbách**. Obnovenie stránky nestačí.
+
+:::
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/available_methods.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/available_methods.mdx
new file mode 100644
index 0000000..ef1bc3f
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/available_methods.mdx
@@ -0,0 +1,18 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import getAvailablePaymentMethods from '!!raw-loader!@site/code_samples/php/v1.0.0/get_available_payment_methods.php';
+
+# Získanie dostupných metód
+
+V tejto platobnej bráne si zákazník vyberá spôsob platby priamo v bráne, **NIE na eshope**.
+Preto chcete zákazníka informovať o dostupných metódach, prípadne zobraziť odlišný text alebo obrázok podľa podmienok ako:
+- mena
+- suma platby
+- krajina
+
+Pre tento účel môžete získať dostupné platobné metódy nasledujúcim volaním:
+{getAvailablePaymentMethods}
+
+Na základe odpovede by ste mali zákazníkovi zobraziť informácie o dostupných metódach a následne vytvoriť novú platbu.
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/cancel_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/cancel_payment.mdx
new file mode 100644
index 0000000..e99df1c
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/cancel_payment.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Zrušenie platby
+
+Túto operáciu je možné použiť s akoukoľvek platobnou metódou, ale iba ak je `authorization_status=NEW`.
+
+V prípade platobnej metódy „PAY_LATER“ je možné túto metódu použiť aj vtedy, ak `authorization_status=AUTH_DONE` a zároveň platba obsahuje `status=CUSTOMER_CREATION_IN_PROGRESS`.
+
+import cancelPayment from '!!raw-loader!@site/code_samples/php/v1.0.0/cancel_payment.php';
+
+{cancelPayment}
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/chargeback.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/chargeback.mdx
new file mode 100644
index 0000000..91f50ff
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/chargeback.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Vrátenie platby
+
+Obchodník môže vykonať úplné alebo čiastočné vrátenie platby cez CardPay.
+Vrátenie platby je možné len pri úspešných platbách vrátane dokončených predautorizácií, ako aj pri platbách, pri ktorých už bolo vrátenie vykonané, pričom výška vrátenia nesmie presiahnuť pôvodnú sumu platby (v prípade predautorizácie ide o sumu, ktorou bola predautorizácia potvrdená).
+
+
+import chargeBack from '!!raw-loader!@site/code_samples/php/v1.0.0/chargeback.php';
+
+{chargeBack}
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/create_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/create_payment.mdx
new file mode 100644
index 0000000..bba5ec5
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/create_payment.mdx
@@ -0,0 +1,178 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import createPayment from '!!raw-loader!@site/code_samples/php/v1.0.0/create_payment.php';
+
+# Vytvorenie platby
+
+Pre vytvorenie platby cez Python SDK zavolajte metódu `TatraPayPlusAPIApi->initiatePayment()`.
+
+
+ Zobraziť príklady pre všetky dostupné platobné metódy
+ {createPayment}
+
+
+## Povinné údaje
+
+Tatrapay+ podporuje viaceré platobné metódy. Na základe zvolenej metódy môžete v požiadavke doplniť dodatočné údaje.
+Niektoré údaje sú však **povinné** pre všetky typy platieb:
+
+```php
+$base_payment = new BasePayment([
+ "instructed_amount" => new Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+]);
+```
+:::warning
+
+Najčastejšia chyba nastáva, keď hodnota `instructed_amount.amount_value` nie je správne zaokrúhlená a API ju odmietne.
+Prosím zaokrúhlite vaše údaje na **2 desatinné miesta**.
+
+:::
+
+### Úprava jazyka a preferovanej metódy
+
+V základe Tatrapay+ zobrazí všetky dostupné platobné metódy a bude zobrazená v **slovenskom** jazyku.
+Ak chcete upraviť toto správanie, môžete poslať parametre `language` a `preferred_method` do `create_payment`.
+
+Ak je `preferred_method` dostupná, zákazník na ňu bude priamo nasmerovaný.
+
+
+ Zobrazenie brány v anglickom jazyku s platbou prevodom
+
+```php
+$response = $tatrapayplus_api->initiatePayment(
+ "http://localhost",
+ $initiate_payment_request,
+ preferred_method: "BANK_TRANSFER",
+ accept_language: "en"
+);
+```
+
+
+### Presmerovanie na URI
+
+`redirect_uri` je použitá ako návratová adresa zákazníka po vykonaní platby. Táto URI je povinná a slúži na [spracovanie výsledku platby](/docs/libraries/php/v1.0.0/process_payment).
+
+Ak vaša aplikácia poskytuje viacero jazykov s odlišnými URI, ako napr.:
+- https://example.com pre 1 jazyk
+- https://example.com/de/ pre nemecký jazyk
+
+musíte zaregistrovať obidve URI v developer portáli.
+Následne sa pri požiadavke `create_payment` uistite, že používate `redirect_uri` zodpovedajúcu správnemu jazyku.
+
+:::warning
+
+Táto URI musí presne zodpovedať URI definovanej v [Developer Portáli](https://developer.tatrabanka.sk/pages/devportal/sk/#/)
+
+:::
+
+## Údaje špecifické pre platobnú metódu
+
+### Bankový prevod a platba cez QR kód
+
+Pre túto platobnú metódu musíte definovať atribút `bank_transfer`. **Môže byť prázdny** alebo obsahovať dodatočné informácie.
+Ak nepoužíjete tento atribút, bankový prevod nebude zobrazený.
+
+```php
+$bank_transfer = new BankTransfer("Additional information");
+```
+
+### Platba kartou
+
+Táto platobná metóda vyžaduje `card_detail.card_holder`, `user_data.first_name` a `user_data.last_name`.
+Jeden z atribútov `user_data.email` alebo `user_data.phone` je povinný. Podľa týchto údajov budú zákazníkom zasielané notifikácie.
+
+:::tip
+
+SDK automaticky odstráni diakritiku v atribúte `card_detail.card_holder`, takže ich **nemusíte** konvertovať.
+
+:::
+
+```php
+$userData = new UserData([
+ "first_name" => "Janko",
+ "last_name" => "Hrasko",
+ "email" => "janko.hrasko@example.com",
+]);
+
+$cardDetail = new CardDetail([
+ "card_holder" => "Janko Hrasko",
+]);
+```
+
+### PayLater (Na splátkyTB)
+
+Táto platobná metóda vyžaduje informácie o zakúpených položkách zákazníka.
+Ich štruktúra je komplexnejšia a popis všetkých údajov nájdete v [API príručke](/docs/api/initiate-payment).
+
+:::warning
+
+API odmietne požiadavky, v ktorých `instructed_amount.amount_value` sa nerovná **sume všetkých položiek**.
+
+:::
+
+```php
+$payLater = new PayLater([
+ "order" => new Order([
+ "order_no" => "ORDER123456",
+ "order_items" => [
+ new OrderItem([
+ "quantity" => 1.0,
+ "total_item_price" => 10.0,
+ "item_detail" => new ItemDetail([
+ "item_detail_en" => new ItemDetailLangUnit([
+ "item_name" => "Product 1",
+ ]),
+ "item_detail_sk" => new ItemDetailLangUnit([
+ "item_name" => "Produkt 1",
+ ]),
+ ]),
+ ]),
+ ],
+ ]),
+]);
+```
+
+## Odpoveď
+
+Po vytvorení požiadavky na platbu obdržíte `InitiatePaymentResponse` s nasledujúcimi údajmi:
+```php
+new InitiatePaymentResponse([
+ "payment_id" => 'd7ec77c6-39d8-4011-a462-1a0f1b23f65f',
+ "tatra_pay_plus_url" => 'https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/auth?paymentId=d7ec77c6-39d8-4011-a462-1a0f1b23f65f&client_id=l7ba7ffa0bf66b49b88d17dfe144955f54&hmac=7043761cb4cff51d1d084f90cd25d370b89515a1c43c39e6ea459dd504059834',
+ "available_payment_methods" => [
+ new AvailablePaymentMethod([
+ "payment_method" => PaymentMethod::BANK_TRANSFER,
+ "is_available" => true,
+ ]),
+ new AvailablePaymentMethod([
+ "payment_method" => PaymentMethod::CARD_PAY,
+ "is_available" => true,
+ ]),
+ ]
+]);
+```
+
+Príklad použitia:
+```php
+$response = $tatrapayplus_api->initiatePayment(
+ "redirect uri",
+ $initiate_payment_request, // inštancia InitiatePaymentRequest
+);
+$response_obj = $response['object'];
+
+$payment_id = $response_obj->getPaymentId();
+$tatra_pay_plus_url = $response_obj->getTatraPayPlusUrl();
+```
+
+Mali ste si uložiť `payment_id` k objednávke spojenej s danou platbou. Neskôr ho budete potrebovať pre [zistenie stavu platby](/docs/libraries/php/v1.0.0/process_payment).
+Následne máte 2 možnosti pre zobrazenie platobnej brány:
+1. Presmerujete zákazník na bránu, podľa url z atribútu `tatra_pay_plus_url`.
+2. Zobrazenie v iframe. Pre detailné informácie o použití iframe zobrazenia prosím navštívte [Developer portál dokumentáciu](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=iFrame-podpora)
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/errors_handling.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/errors_handling.mdx
new file mode 100644
index 0000000..01ae233
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/errors_handling.mdx
@@ -0,0 +1,47 @@
+
+# Riešenie chýb
+
+Pri použití `TatraPayPlusAPIApi` sú všetky požiadavky API obalené internou logikou spracovania chýb. Ak API vráti chybu, vyvolá sa vlastná výnimka **`TatrapayPlusApiException`**. To vám umožňuje zachytiť a reagovať na zlyhania štruktúrovaným spôsobom.
+
+## Základné použitie
+
+Zabaľte všetky volania klienta do bloku `try/catch` na zachytenie a spracovanie výnimky `ApiException`.
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\ApiException;
+
+try {
+ $tatrapayplus_api->getAvailableMethods();
+} catch (ApiException $e) {
+ sprintf('Fetching methods failed: %s', $e);
+ // Handle error
+}
+```
+## Podrobnosti o chybe
+
+Keď sa vyvolá chyba `Tatrapayplus\TatrapayplusApiClient\ApiException`, zachytená výnimka obsahuje viac informácií o danej chybe.
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\ApiException;
+
+try {
+ $tatrapayplus_api->getAvailableMethods();
+} catch (ApiException $e) {
+ $e->getResponseBody(); // Telo HTTP odpovede servera buď ako Json alebo reťazec
+ $e->getResponseHeaders(); // Hlavička HTTP odpovede
+ $e->getRequestBody(); // Telo HTTP požiadavky spôsobujúce danú výnimku
+ $e->getResponseObject(); // deserializovaný objekt odpovede typu \Tatrapayplus\TatrapayplusApiClient\Model\Model400ErrorBody
+}
+```
+
+## InvalidArgumentException
+
+Keď sa vyvolá výnimka `InvalidArgumentException`, príslušná metóda API bola volaná s nesprávnymi parametrami.\
+Chybové hlásenie obsahuje relevantné informácie o chýbajúcom parametri a operácii, ktorá zlyhala.
+
+```php
+$payment_id = null;
+
+// throws InvalidArgumentException: Missing the required parameter $payment_id when calling cancelPaymentIntent
+$tatrapayplus_api->cancelPaymentIntent($payment_id);
+```
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/google_apple_pay.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/google_apple_pay.mdx
new file mode 100644
index 0000000..e400cb2
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/google_apple_pay.mdx
@@ -0,0 +1,14 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Google pay a Apple pay
+
+Väčšina detailov implementácie je už zahrnutá v [Developer portál dokumentácii](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=Priama-integracia-pre-Google-Pay-a-Apple-Pay).
+
+SDK poskytuje wrapper okolo API, ktorý je možné použiť nasledujúcim spôsobom:
+
+import createPaymentDirect from '!!raw-loader!@site/code_samples/php/v1.0.0/create_payment_direct.php';
+
+{createPaymentDirect}
+
+
+
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/index.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/index.mdx
new file mode 100644
index 0000000..fdc246a
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/index.mdx
@@ -0,0 +1,23 @@
+# Úvod
+
+Aby ste mohli používať a testovať platobnú bránu, potrebujete **Client ID** a **Client secret** z [TB developer portálu](https://developer.tatrabanka.sk/).
+
+# Inštalácia
+
+🚧 WIP 🚧
+
+# Vytvorenie API klienta
+
+Pre prácu s API potrebujete inicializovať TatraPayPlusAPIApi s nasledovnými parametrami:
+
+```php
+$tatrapayplus_api = new TatraPayPlusAPIApi(
+ "your-client-id",
+ "your-client-secret",
+ mode: TatraPayPlusAPIApi::SANDBOX
+);
+```
+
+API podporuje 2 módy:
+- `SANDBOX (default)`: dopyty budú posielané do SANDBOX (testovacieho) prostredia brány
+- `PRODUCTION`: dopyty budú posielané do PRODUCTION (produkčného) prostredia brány
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/logging.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/logging.mdx
new file mode 100644
index 0000000..5b68532
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/logging.mdx
@@ -0,0 +1,119 @@
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Logging
+
+# TatrapayPlusLogger
+
+`TatrapayPlusLogger` je jednoduchý a prispôsobiteľný HTTP logger pre `TatraPayPlusAPIApi`.
+Pomáha vám ladiť volania API zaznamenávaním odchádzajúcich požiadaviek a prichádzajúcich odpovedí a zároveň bezpečne maskuje citlivé údaje.
+
+---
+
+## Funkcie
+
+- Zaznamenáva metadáta **žiadostí a odpovedí**
+- Vstavané **maskovanie polí**
+- Rozšíriteľné pomocou `write_line()`
+
+## Maskované polia
+
+Logger maskuje citlivé hodnoty pred ich výstupom:
+
+- **Headers**: `Authorization`
+- **Body fields (reqest and response)**: `client_id`, `client_secret`, `access_token`
+
+Príklad maskovaného výstupu: `client_secret=abcde*************uvxyz`
+
+Maskovanie môžete zakázať nastavením parametra `mask_sensitive_data=False` počas inicializácie loggeru.
+
+
+## Príklad použitia
+
+### Krok 1: Vytvorenie podtriedy Loggeru
+
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\TatraPayPlusLogger;
+
+class ConsoleLogger extends TatraPayPlusLogger
+{
+ public array $mask_body_fields = [
+ "access_token",
+ ];
+
+ public function writeLine(string $line): void
+ {
+ print $line;
+ }
+}
+
+### Krok 2: Vloženie loggeru do klienta
+
+```php
+use Tatrapayplus\TatrapayplusApiClient\Api\TatraPayPlusAPIApi;
+
+$logger = new ConsoleLogger();
+
+$tatrapayplus_api = new TatraPayPlusAPIApi(
+ "your-client-id",
+ "your-client-secret",
+ $logger,
+);
+```
+
+## Prispôsobenie
+Maskovacie polia si môžete prispôsobiť:
+```php
+$logger->mask_body_fields = ["client_id", "client_secret", "access_token"];
+$logger->mask_header_fields = ["Authorization"];
+$logger->mask_sensitive_data = true; # or false to disable masking
+```
+
+## Príklad výstupu
+```
+INFO [2025-04-10 13:11:51] [INFO] Request:
+Method: POST
+URL: https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/payments
+Headers:
+{'Authorization': 'Beare*********************************70d69', 'Content-Type': 'application/json', 'X-Request-ID': 'df7f30e8-6cde-4c76-b377-a2e83fd937dd', 'IP-Address': '127.0.1.1', 'Redirect-URI': 'https://tatrabanka.sk/', 'Accept-Language': 'sk', 'Content-Length': '125'}
+Body:
+{
+ "basePayment": {
+ "instructedAmount": {
+ "amountValue": 120,
+ "currency": "EUR"
+ },
+ "endToEnd": "ORDER123456"
+ },
+ "bankTransfer": {}
+}
+
+INFO [2025-04-10 13:11:51] [INFO] Response success(status: 201):
+{
+ "paymentId": "baf651a5-1582-4b92-9a59-dacd61f65a51",
+ "tatraPayPlusUrl": "https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/auth?paymentId=baf651a5-1582-4b92-9a59-dacd61f65a51&client_id=l7ba7ffa0bf66b49b88d17dfe144955f54&hmac=bf1796ce46ebc32617726f53db1981c920f6363bbcbec3a4044ef258db3479a2",
+ "availablePaymentMethods": [
+ {
+ "isAvailable": false,
+ "reasonCodeMethodAvailabilityDescription": "Mandatory structure: userData was not provided in the request body. See specs.",
+ "paymentMethod": "CARD_PAY",
+ "reasonCodeMethodAvailability": "MANDATORY_STRUCTURE_NOT_PROVIDED"
+ },
+ {
+ "isAvailable": false,
+ "reasonCodeMethodAvailabilityDescription": "Mandatory structure: userData was not provided in the request body. See specs.",
+ "paymentMethod": "PAY_LATER",
+ "reasonCodeMethodAvailability": "MANDATORY_STRUCTURE_NOT_PROVIDED"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "BANK_TRANSFER"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "QR_PAY"
+ }
+ ]
+}
+```
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/pre_authorization.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/pre_authorization.mdx
new file mode 100644
index 0000000..3e6abbc
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/pre_authorization.mdx
@@ -0,0 +1,25 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Predautorizácia
+
+Odporúčame použiť typ transakcie „predautorizácia“ v prípade predpokladu zvýšeného počtu žiadostí o zrušenie alebo čiastočného zrušenia platieb z dôvodu nedostupnosti tovaru/služieb, zmien ceny objednávky a pod.
+Ak chcete použiť predautorizáciu pre platby kartou, môžete pri iniciovaní platby zadať `is_pre_authorization: true`.
+
+import createPaymentPreAuthorization from '!!raw-loader!@site/code_samples/php/v1.0.0/create_payment_pre_authorization.php';
+
+{createPaymentPreAuthorization}
+
+V prípade platby prostredníctvom predautorizácie je obchodník povinný zabezpečiť ukončenie/zrušenie predautorizácie **zavolaním na online rozhranie do 7 dní** od dátumu, kedy bola predautorizácia vykonaná.
+Ak obchodník vykoná transakciu predautorizácie za účelom [registrácie karty pre ComfortPay](/docs/libraries/php/v1.0.0/save_card), transakcia nebude zúčtovaná a bude držiteľovi karty uvoľnená bankou držiteľa karty v priebehu niekoľkých dní.
+Neodporúčame vykonávať následné storno tohto typu transakcie. Je to z dôvodu, že autorizačná správa obsahuje všetky informácie pre budúcu opakovanú platbu.
+Existuje riziko, že banka zákazníka si tieto informácie v rámci zrušenia transakcie neuchová.
+
+
+import confirmCancelPreAuthorization from '!!raw-loader!@site/code_samples/php/v1.0.0/confirm_cancel_pre_authorization.php';
+
+{confirmCancelPreAuthorization}
+
+
+
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/process_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/process_payment.mdx
new file mode 100644
index 0000000..13e84cf
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/process_payment.mdx
@@ -0,0 +1,67 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Spracovanie platby
+
+Po dokončení operácií v službe TatraPayPlus bude používateľ presmerovaný na **URL adresu presmerovania** uvedenú pri inicializácii platby.
+
+## Parametre presmerovania
+
+### Path parametre pre presmerovanie bez technickej chyby
+
+| Path Parameter | Typ | Povinné | Popis |
+| --------------- | ------ | -----------------| --------------------------------------- |
+| `paymentId` | string | Povinné | ID platby |
+| `paymentMethod` | string | Povinné | Kód zvolenej platobnej metódy |
+
+### Path parametre pre presmerovanie v prípade technickej chyby
+
+| Path Parameter | Typ | Povinné | Popis |
+| --------------- | ------ | ----------| --------------------------------------- |
+| `paymentId` | string | Povinné | ID platby |
+| `error` | string | Povinné | Kód chyby |
+| `errorId` | string | Povinné | unikátne ID chyby |
+
+### Príklad
+
+Úspech ✔️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&paymentMethod=CARD_PAY
+```
+
+Chyba ❌️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&error=FAILED&errorId=43ca30ec-2956-454c-9d1b-4bd2befee7c8
+```
+
+## Získanie stavu platby
+
+Na základe prijatých parametrov GET by ste mali získať stav platby nasledovne:
+
+import getPaymentStatus from '!!raw-loader!@site/code_samples/php/v1.0.0/get_payment_status.php';
+
+{getPaymentStatus}
+
+Návratová hodnota `simple_status` môže mať jednu z troch hodnôt: `CAPTURE`, `AUTHORIZED` alebo `REJECTED`.\
+Vaša implementácia by mala vykonať príslušné akcie na základe hodnoty `simple_status`.
+
+`$response['object']` typu `PaymentIntentStatusResponse` obsahuje všetky informácie na základe štruktúry opísanej v [API príručke](/docs/api/get-payment-intent-status).
+
+Odpoveď obsahuje aj uložené informácie o karte (ak sa zákazník rozhodne uložiť údaje o svojej karte).
+Viac podrobností o tejto funkcii nájdete [💳 tu 💳](/docs/libraries/php/v1.0.0/save_card).
+
+## Periodická úloha
+
+Niektoré platby môžu byť spracované neskôr.
+Preto by ste mali pravidelne kontrolovať stav **„čakajúcich“ platieb**.
+Odporúčame nastaviť plánovanú úlohu, ktorá z vášho systému načíta všetky čakajúce platby.
+Pomocou uloženého `payment_id` s metódou `get_payment_status` môžete získať aktuálny stav a vykonať príslušné akcie vo vašom systéme.
+
+Odporúčané intervaly získania stavov na základe **veku objednávok**:
+
+| Časový rozsah | Frekvencia dopytu |
+|-----------------------|---------------------|
+| 1. hodina | Každých 5 minút |
+| 1 hodina - 24 hodín | Každú hodinu |
+| Po 24 hodinách | 5-krát denne |
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/save_card.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/save_card.mdx
new file mode 100644
index 0000000..47e379f
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/php/v1.0.0/save_card.mdx
@@ -0,0 +1,94 @@
+# Zapamätanie karty (ComfortPay)
+
+ComfortPay je samostatná služba, ktorá umožňuje zapamätať si kreditnú kartu používateľa pre budúce použitie.
+
+:::warning
+
+Ak chcete túto funkciu používať, **musíte na ňu spĺňať podmienky**. Pre viac informácií kontaktujte podporu Tatrabanky.
+
+:::
+
+## Registrácia pre uloženie karty
+
+Pre uloženie údajov o kreditnej karte používateľa je potrebné vykonať jednu platbu a zadať parameter `card_detail.comfort_pay`.
+
+```php
+$initiate_payment_request = new Tatrapayplus\TatrapayplusApiClient\Model\InitiatePaymentRequest([
+ "base_payment" => new Tatrapayplus\TatrapayplusApiClient\Model\BasePayment([
+ "instructed_amount" => new Tatrapayplus\TatrapayplusApiClient\Model\Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new Tatrapayplus\TatrapayplusApiClient\Model\E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+ ]),
+ "card_detail" => new Tatrapayplus\TatrapayplusApiClient\Model\CardDetail([
+ "card_holder" => "Janko Hrasko",
+ "comfort_pay" => new Tatrapayplus\TatrapayplusApiClient\Model\RegisterForComfortPayObj([
+ "register_for_comfort_pay" => true,
+ ]),
+ ]),
+ // ...
+]);
+```
+
+## Získanie a uloženie tokenu karty
+
+Po úspešnej platbe s `card_detail.comfort_pay = RegisterForComfortPayObj(["register_for_comfort_pay" => true])` dostanete údaje o zákazníckej karte v premennej `saved_card`.
+
+```php
+$payment_id = 'b54afd37-5bb9-4080-9416-5ec450779087'; // Retrieved from initiatePayment
+$[$simple_status, $response] = $tatrapayplus_api->getPaymentIntentStatus($payment_id);
+
+$status_obj = $response["object"]->getStatus();
+
+$status_obj->getMaskedCardNumber(); // '440577******5558'
+$comfort_pay_obj = $status_obj->getComfortPay(); // CardPayStatusStructureComfortPay instance
+$comfort_pay_obj->getCid(); // '123'
+```
+
+| Premenná | Popis |
+|------------------|------------------------------------------------------------------------------------------------------------------------------------|
+| cid | Tento token by mal byť uložený pre účet zákazníka. |
+| masked_card_number | Môže byť zobrazené používateľovi, aby si mohol vybrať z uložených kariet
+
+## Použitie uloženého tokenu
+
+Po uložení tokenu `cid` pre zákazníka by ste mali zákazníkovi zobraziť uložené karty na vašej webovej stránke. Keď si používateľ vyberie jednu z uložených kariet, musíte odovzdať `cid` funkcii `TatraPayPlusAPIApi::generateSignedCardId` a výsledok tejto funkcie je možné odovzdať funkcii `comfort_pay.SignedCardIdObj()`.
+
+```php
+$cid = '123'; // cid taken from stored customer
+$public_key_content = '...'; // contents of public key file in string format
+$signed_card_id = TatraPayPlusAPIApi::generateSignedCardId(
+ $cid,
+ $public_key_content
+);
+
+$initiate_payment_request = new Tatrapayplus\TatrapayplusApiClient\Model\InitiatePaymentRequest([
+ "base_payment" => new Tatrapayplus\TatrapayplusApiClient\Model\BasePayment([
+ "instructed_amount" => new Tatrapayplus\TatrapayplusApiClient\Model\Amount([
+ "amount_value" => 10.0,
+ "currency" => "EUR",
+ ]),
+ "end_to_end" => new Tatrapayplus\TatrapayplusApiClient\Model\E2e([
+ "variable_symbol" => "ORDER123456",
+ ]),
+ ]),
+ "user_data" => new Tatrapayplus\TatrapayplusApiClient\Model\UserData([
+ "first_name" => "Janko",
+ "last_name" => "Hrasko",
+ "email" => "janko.hrasko@example.com",
+ ]),
+ "card_detail" => new Tatrapayplus\TatrapayplusApiClient\Model\CardDetail([
+ "card_holder" => "Janko Hrasko",
+ "comfort_pay" => new Tatrapayplus\TatrapayplusApiClient\Model\SignedCardIdObj([
+ "signed_card_id" => $signed_card_id
+ ]),
+ ]),
+ // ...
+]);
+```
+
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/appearances.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/appearances.mdx
new file mode 100644
index 0000000..8a893bd
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/appearances.mdx
@@ -0,0 +1,34 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Vzhľad brány
+
+Platobná brána môže mať vlastné farby a logo.
+
+
+
+:::warning
+
+Vzhľad brány je možné zmeniť iba v móde **PRODUCTION**.
+
+:::
+
+## Logo
+
+import setLogo from '!!raw-loader!@site/code_samples/python/v1.0.0/set_logo.py';
+
+{setLogo}
+
+## Farby
+
+import setColors from '!!raw-loader!@site/code_samples/python/v1.0.0/set_colors.py';
+
+{setColors}
+
+
+:::tip
+
+Zmeny sa prejavia iba v **nových platbách**. Obnovenie stránky nestačí.
+
+:::
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/available_methods.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/available_methods.mdx
new file mode 100644
index 0000000..edafd5f
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/available_methods.mdx
@@ -0,0 +1,18 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import getAvailablePaymentMethods from '!!raw-loader!@site/code_samples/python/v1.0.0/get_available_payment_methods.py';
+
+# Získanie dostupných metód
+
+V tejto platobnej bráne si zákazník vyberá spôsob platby priamo v bráne, **NIE na eshope**.
+Preto chcete zákazníka informovať o dostupných metódach, prípadne zobraziť odlišný text alebo obrázok podľa podmienok ako:
+- mena
+- suma platby
+- krajina
+
+Pre tento účel môžete získať dostupné platobné metódy nasledujúcim volaním:
+{getAvailablePaymentMethods}
+
+Na základe odpovede by ste mali zákazníkovi zobraziť informácie o dostupných metódach a následne vytvoriť novú platbu.
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/cancel_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/cancel_payment.mdx
new file mode 100644
index 0000000..83e0f1b
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/cancel_payment.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Zrušenie platby
+
+Túto operáciu je možné použiť s akoukoľvek platobnou metódou, ale iba ak je `authorization_status=NEW`.
+
+V prípade platobnej metódy „PAY_LATER“ je možné túto metódu použiť aj vtedy, ak `authorization_status=AUTH_DONE` a zároveň platba obsahuje `status=CUSTOMER_CREATION_IN_PROGRESS`.
+
+import cancelPayment from '!!raw-loader!@site/code_samples/python/v1.0.0/cancel_payment.py';
+
+{cancelPayment}
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/chargeback.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/chargeback.mdx
new file mode 100644
index 0000000..dee8b2e
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/chargeback.mdx
@@ -0,0 +1,13 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Vrátenie platby
+
+Obchodník môže vykonať úplné alebo čiastočné vrátenie platby cez CardPay.
+Vrátenie platby je možné len pri úspešných platbách vrátane dokončených predautorizácií, ako aj pri platbách, pri ktorých už bolo vrátenie vykonané, pričom výška vrátenia nesmie presiahnuť pôvodnú sumu platby (v prípade predautorizácie ide o sumu, ktorou bola predautorizácia potvrdená).
+
+
+import chargeBack from '!!raw-loader!@site/code_samples/python/v1.0.0/chargeback.py';
+
+{chargeBack}
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/create_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/create_payment.mdx
new file mode 100644
index 0000000..2902212
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/create_payment.mdx
@@ -0,0 +1,171 @@
+import Button from '@site/src/components/Button';
+import CodeBlock from '@theme/CodeBlock';
+import createPayment from '!!raw-loader!@site/code_samples/python/v1.0.0/create_payment.py';
+
+# Vytvorenie platby
+
+Pre vytvorenie platby cez Python SDK zavolajte metódu `TBPlusSDK.create_payment()`.
+
+
+ Zobraziť príklady pre všetky dostupné platobné metódy
+ {createPayment}
+
+
+## Povinné údaje
+
+Tatrapay+ podporuje viaceré platobné metódy. Na základe zvolenej metódy môžete v požiadavke doplniť dodatočné údaje.
+Niektoré údaje sú však **povinné** pre všetky typy platieb:
+
+```python
+base_payment=BasePayment(
+ end_to_end="VS0123456789/SS0123456789/KS123456",
+ instructed_amount=Amount(
+ amount_value=99.99,
+ currency="EUR"
+ )
+)
+```
+:::warning
+
+Najčastejšia chyba nastáva, keď hodnota `instructed_amount.amount_value` nie je správne zaokrúhlená a API ju odmietne.
+Prosím zaokrúhlite vaše údaje na **2 desatinné miesta**.
+
+:::
+
+### Úprava jazyka a preferovanej metódy
+
+V základe Tatrapay+ zobrazí všetky dostupné platobné metódy a bude zobrazená v **slovenskom** jazyku.
+Ak chcete upraviť toto správanie, môžete poslať parametre `language` a `preferred_method` do `create_payment`.
+
+Ak je `preferred_method` dostupná, zákazník na ňu bude priamo nasmerovaný.
+
+
+ Zobrazenie brány v anglickom jazyku s platbou prevodom
+
+```python
+client.create_payment(
+ payment_data,
+ redirect_uri,
+ ip_address,
+ 'en',
+ 'BANK_TRANSFER'
+)
+```
+
+
+### Presmerovanie na URI
+
+`redirect_uri` je použitá ako návratová adresa zákazníka po vykonaní platby. Táto URI je povinná a slúži na [spracovanie výsledku platby](/docs/libraries/python/v1.0.0/process_payment).
+
+Ak vaša aplikácia poskytuje viacero jazykov s odlišnými URI, ako napr.:
+- https://example.com pre 1 jazyk
+- https://example.com/de/ pre nemecký jazyk
+
+musíte zaregistrovať obidve URI v developer portáli.
+Následne sa pri požiadavke `create_payment` uistite, že používate `redirect_uri` zodpovedajúcu správnemu jazyku.
+
+:::warning
+
+Táto URI musí presne zodpovedať URI definovanej v [Developer Portáli](https://developer.tatrabanka.sk/pages/devportal/sk/#/)
+
+:::
+
+## Údaje špecifické pre platobnú metódu
+
+### Bankový prevod a platba cez QR kód
+
+Pre túto platobnú metódu musíte definovať atribút `bank_transfer`. **Môže byť prázdny** alebo obsahovať dodatočné informácie.
+Ak nepoužíjete tento atribút, bankový prevod nebude zobrazený.
+
+```python
+bank_transfer \=BankTransfer(remittance_information_unstructured: "Additional informations")
+```
+### Platba kartou
+
+Táto platobná metóda vyžaduje `card_detail.card_holder`, `user_data.first_name` a `user_data.last_name`.
+Jeden z atribútov `user_data.email` alebo `user_data.phone` je povinný. Podľa týchto údajov budú zákazníkom zasielané notifikácie.
+
+:::tip
+
+SDK automaticky odstráni diakritiku v atribúte `card_detail.card_holder`, takže ich **nemusíte** konvertovať.
+
+:::
+
+```python
+user_data=UserData(
+ first_name="Janko",
+ last_name="Hruska",
+ email="janko.hruska@example.com",
+ phone="+421911123456",
+ ),
+
+card_detail=CardDetail( card_holder="Janko Hruška")
+```
+### PayLater (Na splátkyTB)
+
+Táto platobná metóda vyžaduje informácie o zakúpených položkách zákazníka.
+Ich štruktúra je komplexnejšia a popis všetkých údajov nájdete v [API príručke](/docs/api/initiate-payment).
+
+:::warning
+
+API odmietne požiadavky, v ktorých `instructed_amount.amount_value` sa nerovná **sume všetkých položiek**.
+
+:::
+
+```python
+pay_later = PayLater(
+ order=Order(
+ order_no="ORDER123456",
+ order_items=[
+ OrderItem(
+ quantity=1,
+ total_item_price=10.0,
+ item_detail=ItemDetail(
+ item_detail_sk=ItemDetailLangUnit(
+ item_name="Testovací produkt",
+ item_description="Popis produktu",
+ ),
+ item_detail_en=ItemDetailLangUnit(
+ item_name="Test Product",
+ item_description="Product description",
+ ),
+ ),
+ item_info_url="https://tatrabanka.sk",
+ )
+ ],
+ preferred_loan_duration=12,
+ down_payment=1.0,
+ ),
+ capacity_info=CapacityInfo(
+ monthly_income=2000.0,
+ monthly_expenses=800.0,
+ number_of_children=1,
+ ),
+)
+```
+
+## Odpoveď
+
+Po vytvorení požiadavky na platbu obdržíte `InitiatePaymentResponse` s nasledujúcimi údajmi:
+```python
+InitiatePaymentResponse(
+ payment_id='d7ec77c6-39d8-4011-a462-1a0f1b23f65f',
+ tatra_pay_plus_url='https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/auth?paymentId=d7ec77c6-39d8-4011-a462-1a0f1b23f65f&client_id=l7ba7ffa0bf66b49b88d17dfe144955f54&hmac=7043761cb4cff51d1d084f90cd25d370b89515a1c43c39e6ea459dd504059834',
+ available_payment_methods=[
+ AvailablePaymentMethod(
+ payment_method=PaymentMethod.BANK_TRANSFER,
+ is_available=True,
+ ),
+ AvailablePaymentMethod(
+ payment_method=PaymentMethod.CARD_PAY,
+ is_available=True,
+ ),
+ ]
+)
+```
+Mali ste si uložiť `payment_id` k objednávke spojenej s danou platbou. Neskôr ho budete potrebovať pre [zistenie stavu platby](/docs/libraries/python/v1.0.0/process_payment).
+Následne máte 2 možnosti pre zobrazenie platobnej brány:
+1. Presmerujete zákazník na bránu, podľa url z atribútu `tatra_pay_plus_url`.
+2. Zobrazenie v iframe. Pre detailné informácie o použití iframe zobrazenia prosím navštívte [Developer portál dokumentáciu](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=iFrame-podpora)
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/errors_handling.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/errors_handling.mdx
new file mode 100644
index 0000000..fb30a4f
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/errors_handling.mdx
@@ -0,0 +1,32 @@
+
+# Riešenie chýb
+
+Pri použití `TBPlusSDK` sú všetky požiadavky API obalené internou logikou spracovania chýb. Ak API vráti chybu, vyvolá sa vlastná výnimka **`TatrapayPlusApiException`**. To vám umožňuje zachytiť a reagovať na zlyhania štruktúrovaným spôsobom.
+
+## Základné použitie
+
+Zabaľte všetky volania klienta do bloku `try/except` na zachytenie a spracovanie výnimky `TatrapayPlusApiException`.
+
+```python
+from tatrapayplus.errors import TatrapayPlusApiException
+
+try:
+ payment_response = client.create_payment(
+ request=payment_data,
+ redirect_uri="https://tatrabanka.sk/",
+ ip_address="127.0.0.1"
+ )
+except TatrapayPlusApiException as e:
+ print("Payment failed:", e)
+ # Handle error
+```
+## Typy tela chyby
+
+Keď sa vyvolá výjimka `TatrapayPlusApiException`, atribút `error_body` bude obsahovať **jednu z troch** inštancií štruktúrovaného modelu v závislosti od toho, ktorý koncový bod bol volaný a aký druh chyby sa vyskytol.
+### Podporované modely
+
+| Model | Popis | Kedy je použitá |
+|---------------------------|-------------------------------------------------|-----------------------------------|
+| `GetAccessTokenResponse400` | Vrátené z koncového bodu autorizácie, keď autentifikácia zlyhá. | Neplatné API údaje klienta |
+| `Field400ErrorBody` | Vráti sa, keď je chyba „400 Bad Request“ spôsobená neplatným vstupom alebo nepodporovanou operáciou. | Chyby overovania/business logiky |
+| `Field40XErrorBody` | Vrátené pre iné chyby 40X, ako napríklad `403`, `404` atď. | Problémy s autorizáciou alebo prístupom |
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/google_apple_pay.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/google_apple_pay.mdx
new file mode 100644
index 0000000..fcc1bbc
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/google_apple_pay.mdx
@@ -0,0 +1,14 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Google pay a Apple pay
+
+Väčšina detailov implementácie je už zahrnutá v [Developer portál dokumentácii](https://developer.tatrabanka.sk/apihub/#/apis/f438e906-7845-4bc1-a028-73d3f9547d2a/show/doc?mode=view&uri=Priama-integracia-pre-Google-Pay-a-Apple-Pay).
+
+SDK poskytuje wrapper okolo API, ktorý je možné použiť nasledujúcim spôsobom:
+
+import createPaymentDirect from '!!raw-loader!@site/code_samples/python/v1.0.0/create_payment_direct.py';
+
+{createPaymentDirect}
+
+
+
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/index.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/index.mdx
new file mode 100644
index 0000000..ac01019
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/index.mdx
@@ -0,0 +1,26 @@
+# Úvod
+
+Aby ste mohli používať a testovať platobnú bránu, potrebujete **Client ID** a **Client secret** z [TB developer portálu](https://developer.tatrabanka.sk/).
+
+# Inštalácia
+```python
+pip install tatrapayplus-python
+```
+# Vytvorenie API klienta
+
+Pre prácu s API potrebujete inicializovať `TBPlusSDK` s nasledovnými parametrami:
+
+```python
+from tatrapayplus import TBPlusSDK
+from tatrapayplus.enums import Mode
+
+client = TBPlusSDK(
+ "your-client-id", # Client ID
+ "your-client-secret", # Client secret
+ mode=Mode.SANDBOX, # SANDBOX alebo PRODUCTION
+)
+```
+
+API podporuje 2 módy:
+- `SANDBOX (default)`: dopyty budú posielané do SANDBOX (testovacieho) prostredia brány
+- `PRODUCTION`: dopyty budú posielané do PRODUCTION (produkčného) prostredia brány
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/logging.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/logging.mdx
new file mode 100644
index 0000000..51abc39
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/logging.mdx
@@ -0,0 +1,123 @@
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Logging
+
+# TatrapayPlusLogger
+
+`TatrapayPlusLogger` je jednoduchý a prispôsobiteľný HTTP logger pre `TBPlusSDK`.
+Pomáha vám ladiť volania API zaznamenávaním odchádzajúcich požiadaviek a prichádzajúcich odpovedí a zároveň bezpečne maskuje citlivé údaje.
+
+---
+
+## Funkcie
+
+- Zaznamenáva metadáta **žiadostí a odpovedí**
+- Vstavané **maskovanie polí**
+- Rozšíriteľné pomocou `write_line()`
+
+## Maskované polia
+
+Logger maskuje citlivé hodnoty pred ich výstupom:
+
+- **Headers**: `Authorization`
+- **Body fields (reqest and response)**: `client_id`, `client_secret`, `access_token`
+
+Príklad maskovaného výstupu: `client_secret=abcde*************uvxyz`
+
+Maskovanie môžete zakázať nastavením parametra `mask_sensitive_data=False` počas inicializácie loggeru.
+
+
+## Príklad použitia
+
+### Krok 1: Vytvorenie podtriedy Loggeru
+
+
+```python
+from tatrapayplus.helpers import TatrapayPlusLogger
+
+class ConsoleLogger(TatrapayPlusLogger):
+ def write_line(self, line):
+ print(line)
+
+# Rozšírená verzia pre logovanie do súboru
+class FileLogger(TatrapayPlusLogger):
+ def __init__(self, file_path, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.file_path = file_path
+
+ def write_line(self, line):
+ with open(self.file_path, "a", encoding="utf-8") as f:
+ f.write(str(line) + "\n")
+```
+
+### Krok 2: Vloženie loggeru do klienta
+
+```python
+from tatrapayplus.client import TBPlusSDK
+
+logger = ConsoleLogger()
+
+client = TBPlusSDK(
+ client_id="your-client-id",
+ client_secret="your-client-secret",
+ redirect_uri="https://yourapp.com/redirect",
+ logger=logger,
+)
+```
+
+## Prispôsobenie
+Maskovacie polia si môžete prispôsobiť:
+```python
+logger.mask_body_fields = ["client_id", "client_secret", "access_token"]
+logger.mask_header_fields = ["Authorization"]
+logger.mask_sensitive_data = True # or False to disable masking
+```
+
+## Príklad výstupu
+```
+INFO [2025-04-10 13:11:51] [INFO] Request:
+Method: POST
+URL: https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/payments
+Headers:
+{'Authorization': 'Beare*********************************70d69', 'Content-Type': 'application/json', 'X-Request-ID': 'df7f30e8-6cde-4c76-b377-a2e83fd937dd', 'IP-Address': '127.0.1.1', 'Redirect-URI': 'https://tatrabanka.sk/', 'Accept-Language': 'sk', 'Content-Length': '125'}
+Body:
+{
+ "basePayment": {
+ "instructedAmount": {
+ "amountValue": 120,
+ "currency": "EUR"
+ },
+ "endToEnd": "ORDER123456"
+ },
+ "bankTransfer": {}
+}
+
+INFO [2025-04-10 13:11:51] [INFO] Response success(status: 201):
+{
+ "paymentId": "baf651a5-1582-4b92-9a59-dacd61f65a51",
+ "tatraPayPlusUrl": "https://api.tatrabanka.sk/tatrapayplus/sandbox/v1/auth?paymentId=baf651a5-1582-4b92-9a59-dacd61f65a51&client_id=l7ba7ffa0bf66b49b88d17dfe144955f54&hmac=bf1796ce46ebc32617726f53db1981c920f6363bbcbec3a4044ef258db3479a2",
+ "availablePaymentMethods": [
+ {
+ "isAvailable": false,
+ "reasonCodeMethodAvailabilityDescription": "Mandatory structure: userData was not provided in the request body. See specs.",
+ "paymentMethod": "CARD_PAY",
+ "reasonCodeMethodAvailability": "MANDATORY_STRUCTURE_NOT_PROVIDED"
+ },
+ {
+ "isAvailable": false,
+ "reasonCodeMethodAvailabilityDescription": "Mandatory structure: userData was not provided in the request body. See specs.",
+ "paymentMethod": "PAY_LATER",
+ "reasonCodeMethodAvailability": "MANDATORY_STRUCTURE_NOT_PROVIDED"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "BANK_TRANSFER"
+ },
+ {
+ "isAvailable": true,
+ "paymentMethod": "QR_PAY"
+ }
+ ]
+}
+```
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/pre_authorization.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/pre_authorization.mdx
new file mode 100644
index 0000000..ed067b7
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/pre_authorization.mdx
@@ -0,0 +1,22 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Predautorizácia
+
+Odporúčame použiť typ transakcie „predautorizácia“ v prípade predpokladu zvýšeného počtu žiadostí o zrušenie alebo čiastočného zrušenia platieb z dôvodu nedostupnosti tovaru/služieb, zmien ceny objednávky a pod.
+Ak chcete použiť predautorizáciu pre platby kartou, môžete pri iniciovaní platby zadať `is_pre_authorization: true`.
+
+import createPaymentPreAuthorization from '!!raw-loader!@site/code_samples/python/v1.0.0/create_payment_pre_authorization.py';
+
+{createPaymentPreAuthorization}
+
+V prípade platby prostredníctvom predautorizácie je obchodník povinný zabezpečiť ukončenie/zrušenie predautorizácie **zavolaním na online rozhranie do 7 dní** od dátumu, kedy bola predautorizácia vykonaná.
+Ak obchodník vykoná transakciu predautorizácie za účelom [registrácie karty pre ComfortPay](/docs/libraries/python/v1.0.0/save_card), transakcia nebude zúčtovaná a bude držiteľovi karty uvoľnená bankou držiteľa karty v priebehu niekoľkých dní.
+Neodporúčame vykonávať následné storno tohto typu transakcie. Je to z dôvodu, že autorizačná správa obsahuje všetky informácie pre budúcu opakovanú platbu.
+Existuje riziko, že banka zákazníka si tieto informácie v rámci zrušenia transakcie neuchová.
+
+import confirmCancelPreAuthorization from '!!raw-loader!@site/code_samples/python/v1.0.0/confirm_cancel_pre_authorization.py';
+
+{confirmCancelPreAuthorization}
+
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/process_payment.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/process_payment.mdx
new file mode 100644
index 0000000..69a15ef
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/process_payment.mdx
@@ -0,0 +1,75 @@
+import CodeBlock from '@theme/CodeBlock';
+
+# Spracovanie platby
+
+Po dokončení operácií v službe TatraPayPlus bude používateľ presmerovaný na **URL adresu presmerovania** uvedenú pri inicializácii platby.
+
+## Parametre presmerovania
+
+### Path parametre pre presmerovanie bez technickej chyby
+
+| Path Parameter | Typ | Povinné | Popis |
+| --------------- | ------ | -----------------| --------------------------------------- |
+| `paymentId` | string | Povinné | ID platby |
+| `paymentMethod` | string | Povinné | Kód zvolenej platobnej metódy |
+
+### Path parametre pre presmerovanie v prípade technickej chyby
+
+| Path Parameter | Typ | Povinné | Popis |
+| --------------- | ------ | ----------| --------------------------------------- |
+| `paymentId` | string | Povinné | ID platby |
+| `error` | string | Povinné | Kód chyby |
+| `errorId` | string | Povinné | unikátne ID chyby |
+
+### Príklad
+
+Úspech ✔️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&paymentMethod=CARD_PAY
+```
+
+Chyba ❌️
+```bash
+https://theredirecturl.com/redirect?paymentId=e43f85a2-b21f-4ec2-b0a1-0e449d6972c7&error=FAILED&errorId=43ca30ec-2956-454c-9d1b-4bd2befee7c8
+```
+
+## Získanie stavu platby
+
+Na základe prijatých parametrov GET by ste mali získať stav platby nasledovne:
+
+import getPaymentStatus from '!!raw-loader!@site/code_samples/python/v1.0.0/get_payment_status.py';
+
+{getPaymentStatus}
+
+Výsledok obsahuje atribút `simple_status`, ktorý môže mať jednu z troch hodnôt: `CAPTURE`, `AUTHORIZED` alebo `REJECTED`.
+| Platobná metóda| CAPTURE | REJECTED | AUTHORIZED |
+|----------------|-------------------------------------------|----------------------|----------------------|
+| QR_PAY | ACSC, ACCC | CANC, RJCT | |
+| BANK_TRANSFER | ACSC, ACCC | CANC, RJCT | |
+| PAY_LATER | LOAN_APPLICATION_FINISHED, LOAN_DISBURSED | CANCELED, EXPIRED | |
+| CARD_PAY | OK, CB | FAIL | PA |
+| DIRECT_API | OK, CB | FAIL | |
+
+Vaša implementácia by mala vykonať príslušné akcie na základe hodnoty `simple_status`.
+
+Atribút `data` obsahuje všetky informácie na základe štruktúry opísanej v [API príručke](/docs/api/get-payment-intent-status).
+
+Odpoveď obsahuje aj uložené informácie o karte (ak sa zákazník rozhodne uložiť údaje o svojej karte).
+Viac podrobností o tejto funkcii nájdete [💳 tu 💳](/docs/libraries/python/v1.0.0/save_card).
+
+## Periodická úloha
+
+Niektoré platby môžu byť spracované neskôr.
+Preto by ste mali pravidelne kontrolovať stav **„čakajúcich“ platieb**.
+Odporúčame nastaviť plánovanú úlohu, ktorá z vášho systému načíta všetky čakajúce platby.
+Pomocou uloženého `payment_id` s metódou `get_payment_status` môžete získať aktuálny stav a vykonať príslušné akcie vo vašom systéme.
+
+Odporúčané intervaly získania stavov na základe **veku objednávok**:
+
+| Časový rozsah | Frekvencia dopytu |
+|-----------------------|---------------------|
+| 1. hodina | Každých 5 minút |
+| 1 hodina - 24 hodín | Každú hodinu |
+| Po 24 hodinách | 5-krát denne |
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/save_card.mdx b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/save_card.mdx
new file mode 100644
index 0000000..6522965
--- /dev/null
+++ b/i18n/sk/docusaurus-plugin-content-docs/current/libraries/python/v1.0.0/save_card.mdx
@@ -0,0 +1,78 @@
+# Zapamätanie karty (ComfortPay)
+
+ComfortPay je samostatná služba, ktorá umožňuje zapamätať si kreditnú kartu používateľa pre budúce použitie.
+
+:::warning
+
+Ak chcete túto funkciu používať, **musíte na ňu spĺňať podmienky**. Pre viac informácií kontaktujte podporu Tatrabanky.
+
+:::
+
+## Registrácia pre uloženie karty
+
+Pre uloženie údajov o kreditnej karte používateľa je potrebné vykonať jednu platbu a zadať parameter `card_detail.comfort_pay`.
+
+```python
+payment_data = InitiatePaymentRequest(
+ base_payment=BasePayment(
+ instructed_amount=Amount(
+ amount_value=10.0,
+ currency="EUR",
+ ),
+ end_to_end="ORDER123456",
+ ),
+ card_detail=CardDetail(
+ card_holder="Janko Hruška",
+ comfort_pay=RegisterForComfortPayObj(register_for_comfort_pay=True)
+ )
+ ...
+)
+```
+
+## Získanie a uloženie tokenu karty
+
+Po úspešnej platbe s `card_detail.comfort_pay = RegisterForComfortPayObj(register_for_comfort_pay=True)` dostanete údaje o zákazníckej karte v premennej `saved_card`.
+
+```python
+payment_id="b54afd37-5bb9-4080-9416-5ec450779087" # Retrieved from create payment intent
+response = client.get_payment_status(payment_id)
+#response["saved_card"] -> {'cid': '123456789', 'credit_card': 'Visa', 'masked_card_number': '440577******5558'}
+```
+
+| Premenná | Popis |
+|------------------|------------------------------------------------------------------------------------------------------------------------------------|
+| cid | Tento token by mal byť uložený pre účet zákazníka. |
+| masked_card_number | Môže byť zobrazené používateľovi, aby si mohol vybrať z uložených kariet |
+| credit_card | Názov typu kreditnej karty |
+
+## Použitie uloženého tokenu
+
+Po uložení tokenu `cid` pre zákazníka by ste mali zákazníkovi zobraziť uložené karty na vašej webovej stránke. Keď si používateľ vyberie jednu z uložených kariet, musíte odovzdať `cid` funkcii `generate_signed_card_id_from_cid` a výsledok tejto funkcie je možné odovzdať funkcii `comfort_pay.SignedCardIdObj()`.
+
+```python
+cid = customer.cid # cid taken from stored customer
+signed_cid = client.generate_signed_card_id_from_cid(cid)
+payment_data = InitiatePaymentRequest(
+ base_payment=BasePayment(
+ instructed_amount=Amount(
+ amount_value=120.0,
+ currency="EUR",
+ ),
+ end_to_end="ORDER123456",
+ ),
+ user_data=UserData(
+ first_name="Janko",
+ last_name="Hruska",
+ email="janko.hruska@example.com",
+ phone="+421911123456",
+ ),
+ card_detail=CardDetail(
+ card_holder="Janko Hruška",
+ comfort_pay=SignedCardIdObj(signed_card_id=signed_cid)
+ )
+ ...
+)
+```
+
+
+
\ No newline at end of file
diff --git a/i18n/sk/docusaurus-theme-classic/footer.json b/i18n/sk/docusaurus-theme-classic/footer.json
new file mode 100644
index 0000000..f3d53a1
--- /dev/null
+++ b/i18n/sk/docusaurus-theme-classic/footer.json
@@ -0,0 +1,30 @@
+{
+ "link.title.Docs": {
+ "message": "Dokumenty",
+ "description": "The title of the footer links column with title=Docs in the footer"
+ },
+ "link.title.More": {
+ "message": "Viac",
+ "description": "The title of the footer links column with title=More in the footer"
+ },
+ "link.item.label.Guides": {
+ "message": "Návody",
+ "description": "The label of footer link with label=Guides linking to /docs/libraries/node/v1.0.0"
+ },
+ "link.item.label.API Reference": {
+ "message": "API príručka",
+ "description": "The label of footer link with label=API Reference linking to /docs/api/tatrapayplus-api"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/SmartBase-SK/tatrapayplus-node"
+ },
+ "link.item.label.Developer Portal": {
+ "message": "Developer Portál",
+ "description": "The label of footer link with label=Developer Portal linking to https://developer.tatrabanka.sk/pages/devportal/sk/#/"
+ },
+ "copyright": {
+ "message": "Copyright © 2025 Smartbase.",
+ "description": "The footer copyright"
+ }
+}
diff --git a/i18n/sk/docusaurus-theme-classic/navbar.json b/i18n/sk/docusaurus-theme-classic/navbar.json
new file mode 100644
index 0000000..0e6db32
--- /dev/null
+++ b/i18n/sk/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,30 @@
+{
+ "title": {
+ "message": "tatrapay+",
+ "description": "The title in the navbar"
+ },
+ "logo.alt": {
+ "message": "tatrapay+ Logo",
+ "description": "The alt text of navbar logo"
+ },
+ "item.label.SDK": {
+ "message": "SDK",
+ "description": "Navbar item with label SDK"
+ },
+ "item.label.API Reference": {
+ "message": "API príručka",
+ "description": "Navbar item with label API Reference"
+ },
+ "item.label.Node.js": {
+ "message": "Node.js",
+ "description": "Navbar item with label Node.js"
+ },
+ "item.label.Python": {
+ "message": "Python",
+ "description": "Navbar item with label Python"
+ },
+ "item.label.PHP": {
+ "message": "PHP",
+ "description": "Navbar item with label PHP"
+ }
+}
diff --git a/sidebars.js b/sidebars.js
index 5e089c5..11b2d9a 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -41,7 +41,20 @@ const sidebars = {
"libraries/python/v1.0.0/logging",
"libraries/python/v1.0.0/errors_handling",
],
- pphpSidebar: ["libraries/php/v1.0.0/index"],
+ phpSidebar: [
+ "libraries/php/v1.0.0/index",
+ "libraries/php/v1.0.0/available_methods",
+ "libraries/php/v1.0.0/create_payment",
+ "libraries/php/v1.0.0/process_payment",
+ "libraries/php/v1.0.0/chargeback",
+ "libraries/php/v1.0.0/save_card",
+ "libraries/php/v1.0.0/pre_authorization",
+ "libraries/php/v1.0.0/google_apple_pay",
+ "libraries/php/v1.0.0/cancel_payment",
+ "libraries/php/v1.0.0/appearances",
+ "libraries/php/v1.0.0/logging",
+ "libraries/php/v1.0.0/errors_handling",
+ ],
apisidebar: require("./docs/api/sidebar.ts").default,
};