Vytvorenie platby
Pre vytvorenie platby cez Python SDK zavolajte metódu TatraPayPlusAPIApi->initiatePayment().
Zobraziť príklady pre všetky dostupné platobné metódy
<?php
use Tatrapayplus\TatrapayplusApiClient\Api\TatraPayPlusAPIApi;
$tatrapayplus_api = new TatraPayPlusAPIApi(
"your-client-id",
"your-client-secret",
);
$address = new Tatrapayplus\TatrapayplusApiClient\Model\Address([
"street_name" => "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" => "1",
"specific_symbol" => "2",
"constant_symbol" => "3",
]),
]),
"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
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:
$base_payment = new BasePayment([
"instructed_amount" => new Amount([
"amount_value" => 10.0,
"currency" => "EUR",
]),
"end_to_end" => new E2e([
"variable_symbol" => "ORDER123456",
]),
]);
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
$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.
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.
Táto URI musí presne zodpovedať URI definovanej v Developer Portáli
Ú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ý.
$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.
SDK automaticky odstráni diakritiku v atribúte card_detail.card_holder, takže ich nemusíte konvertovať.
$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.
API odmietne požiadavky, v ktorých instructed_amount.amount_value sa nerovná sume všetkých položiek.
$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:
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:
$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.
Následne máte 2 možnosti pre zobrazenie platobnej brány:
- Presmerujete zákazník na bránu, podľa url z atribútu
tatra_pay_plus_url. - Zobrazenie v iframe. Pre detailné informácie o použití iframe zobrazenia prosím navštívte Developer portál dokumentáciu