Integrácia API
Vytváranie a načítanie relácií Checkoutu z vášho backendu.
Váš backend vytvorí pre každú objednávku reláciu Checkoutu a načíta ju, aby overil platbu.
Pre Node.js poskytuje SDK @tapayadot/checkout pre tieto endpointy typované metódy create() a get(). Predvolene načítava TAPAYA_SECRET_KEY. Príklady HTTP na tejto stránke odovzdávajú TAPAYA_CHECKOUT_API_KEY explicitne.
Autentifikácia
Každé volanie Checkoutu prebieha medzi servermi a posiela kľúč ako bearer token:
Authorization: Bearer <key>Zvoľte režim podľa toho, kto backend prevádzkuje. Oba typy kľúčov uchovávajte na svojom serveri; pozrite si Zabezpečenie Checkoutu.
Režim obchodníka
Jeden obchod. Checkout kľúč obchodníka určuje svojho obchodníka, bez ďalšej hlavičky.
Režim platformy
Mnoho obchodníkov. Secret key organizácie a k tomu token obchodníka v každej požiadavke.
Režim obchodníka
Tento režim použite, keď backend obsluhuje jeden obchod. V nastaveniach Checkoutu vytvorte checkout kľúč obchodníka: otvorte obchodníka a zvoľte Create merchant key. Kľúč začína na tapaya_test_ v sandboxe alebo tapaya_live_ v produkcii a zodpovedá práve tomuto obchodníkovi.
Authorization: Bearer <merchant-checkout-key>X-Tapaya-Merchant-Token je v tomto režime voliteľný. Ak ho pošlete, musí označovať toho istého obchodníka.
Tapaya Platform zobrazí kľúč iba raz a ukladá len jeho hash. Pri rotácii kľúča najprv vytvorte náhradný kľúč a až potom zneplatnite starý. Zneplatnenie kľúča neovplyvní ostatné kľúče obchodníkov, kľúče organizácie ani client secrets, ktoré už boli vydané prehliadačom.
Režim platformy
Tento režim použite, keď jeden backend koná za mnoho obchodníkov, napríklad marketplace alebo platforma na rozvoz jedla. V každej požiadavke pošlite Secret key organizácie zo stránky API Keys a token obchodníka:
Authorization: Bearer <secret-key>
X-Tapaya-Merchant-Token: <merchant-token>Neexistuje žiadny predvolený obchodník. Požiadavka bez tejto hlavičky vráti HTTP 401. Obchodník musí patriť do organizácie daného kľúča. Tokeny obchodníkov skopírujte z tabuľky obchodníkov v nastaveniach Checkoutu. Token identifikuje obchodníka; nie je tajný.
Secret key organizácie je ten istý prihlasovací údaj, ktorý dokumentácia Platform API nazýva Server Secret Token. Checkout vyžaduje predponu Bearer. Ostatné endpointy Platform API prijímajú token priamo. Onboarding obchodníkov a správa organizácie prebiehajú cez Platform API.
Telá požiadaviek neprijímajú merchantId.
Prostredia
| Prostredie | Origin API | Origin Hosted Checkoutu | Prihlasovacie údaje |
|---|---|---|---|
| Sandbox | https://api.sandbox.tapaya.com | https://checkout.sandbox.tapaya.com | Sandboxové kľúče s testovacími kartami |
| Produkcia | https://api.tapaya.com | https://checkout.tapaya.com | Ostré kľúče so skutočnými platobnými metódami |
Nastavte TAPAYA_CHECKOUT_API_URL na origin API pre vaše prostredie. V produkcii sú k dispozícii hostované aj vložené platby. Každý obchodník musí prejsť onboardingom, získať od spracovateľa schválenie pre online platby a mať nakonfigurovanú platobnú bránu. Pripravenosť obchodníka skontrolujete v nastaveniach Checkoutu. Vrátenú URL hostovanej relácie používajte bez zmeny.
Relácie Checkoutu
Vytvorenie relácie Checkoutu
Reláciu vytvorte, keď zákazník vo vašom obchode klikne na Checkout, a potom ho presmerujte na vrátenú url.
Najprv na svojom serveri vypočítajte konečnú celkovú sumu a uložte objednávku s jedinečným idempotency key (kľúčom idempotencie).
Endpoint: POST /merchant/checkout-sessions
curl -X 'POST' "$TAPAYA_CHECKOUT_API_URL/merchant/checkout-sessions" \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $TAPAYA_CHECKOUT_API_KEY" \
-H "X-Tapaya-Merchant-Token: $TAPAYA_MERCHANT_TOKEN" \
-H 'Idempotency-Key: order-1001-checkout-1' \
-d '{
"merchantOrderId": "order-1001",
"amount": 12100,
"currency": "EUR",
"tax": 2100,
"shipping": 605,
"taxRate": 21,
"successUrl": "https://shop.example/checkout/return",
"cancelUrl": "https://shop.example/checkout/cancel"
}'Hlavičky:
| Hlavička | Povinné | Popis |
|---|---|---|
Authorization | ✓ | Bearer <key>: checkout kľúč obchodníka alebo Secret key organizácie. |
X-Tapaya-Merchant-Token | Režim platformy | Token obchodníka patriaceho do organizácie daného kľúča. S checkout kľúčom obchodníka je voliteľný. |
Idempotency-Key | ✓ | Neprázdny, najviac 250 znakov. Pozrite si Idempotencia a chyby. |
Parametre:
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
merchantOrderId | string | ✓ | Vaša referencia objednávky, 1 až 200 znakov. Pozrite si Jedna platba na objednávku. |
amount | integer | ✓ | Konečná účtovaná suma v najmenších jednotkách meny vrátane dane a dopravy. 1 až 2 147 483 647. |
currency | string | ✓ | Trojpísmenový kód podľa ISO 4217 podporovaný backendom, veľkými písmenami, napríklad EUR. |
locale | string | Predvolená hodnota je en. | |
successUrl | string | Prepíše predvolenú URL úspechu pre túto reláciu. Musí zodpovedať povolenému webu volajúceho prihlasovacieho údaja. | |
cancelUrl | string | Prepíše predvolenú URL zrušenia pre túto reláciu. Musí zodpovedať povolenému webu volajúceho prihlasovacieho údaja. | |
tax | integer | DPH už zahrnutá v amount, v rozsahu od nuly do amount. Predvolená hodnota je 0. | |
shipping | integer | Doprava už zahrnutá v amount, v rozsahu od nuly do amount. Predvolená hodnota je 0. | |
taxRate | number | Sadzba DPH v percentách pre celú objednávku, napríklad 21 alebo 5.5. Nezáporná. | |
taxBreakdown | array | DPH zoskupená podľa sadzieb. Neprázdne pole nemožno použiť spolu s taxRate. | |
items | array | Položky objednávky len na zobrazenie. Neurčujú účtovanú sumu. | |
customer | object | E-mail, fakturačná adresa a doručovacia adresa zákazníka. |
Relácia účtuje v mene currency, ktorú nastavíte. Stránka Podporované meny uvádza všetky
meny, ktoré Tapaya podporuje, obchodník však má zvyčajne povolené len niektoré z nich. Vytvorenie relácie v
mene, ktorú obchodník alebo backend nepodporuje, sa odmietne, takže sa nevytvorí žiadna hostovaná stránka.
API účtuje sumu amount presne tak, ako je zadaná. Nepripočítava dopravu ani daň, nevypočítava DPH zo sadzby ani nevypočítava
celkovú sumu z položiek.
Odpovede:
| Kód | Popis |
|---|---|
200 | Relácia bola vytvorená, alebo bola pri opakovaní s rovnakým kľúčom, telom a režimom prihlasovacích údajov vrátená tá istá relácia s aktuálnym stavom |
409 | Konflikt: kľúč bol znova použitý so zmeneným telom alebo režimom prihlasovacích údajov (API-0025), alebo je objednávka už zaplatená či pri nej prebieha platba |
Telo odpovede:
{
"id": "cs_7Hq2x9LmR4",
"merchantOrderId": "order-1001",
"url": "https://checkout.sandbox.tapaya.com/c/cs_7Hq2x9LmR4",
"status": "open",
"paymentStatus": "unpaid",
"amount": 12100,
"currency": "EUR",
"tax": 2100,
"shipping": 605,
"taxRate": 21,
"taxBreakdown": [],
"items": [],
"expiresAt": "2026-07-15T12:30:00Z",
"createdAt": "2026-07-15T12:00:00Z"
}taxRate je uvedená len vtedy, keď bola zadaná. Uložte id k objednávke a potom pošlite prehliadač na url s
HTTP 303. Relácia prijíma nové platby počas 30 minút od vytvorenia; platba, ktorá už bola odoslaná, sa dokončí
aj po tomto čase. Návratové URL sa vyberajú a overujú pri vytvorení, a to buď z hodnôt v požiadavke, alebo
z predvolených hodnôt volajúceho prihlasovacieho údaja: návratové ciele organizácie
pre Secret key organizácie s X-Tapaya-Merchant-Token, návratové ciele obchodníka pre checkout kľúč obchodníka. Tieto
dve sady sa nikdy nekombinujú.
Načítanie relácie
Keď sa zákazník vráti na vašu URL úspechu alebo zrušenia, alebo v rámci úlohy na odsúhlasenie, načítajte reláciu a pred vybavením objednávky ju porovnajte s uloženou objednávkou.
Endpoint: GET /merchant/checkout-sessions/{id}
curl "$TAPAYA_CHECKOUT_API_URL/merchant/checkout-sessions/cs_7Hq2x9LmR4" \
-H "Authorization: Bearer $TAPAYA_CHECKOUT_API_KEY" \
-H "X-Tapaya-Merchant-Token: $TAPAYA_MERCHANT_TOKEN"Prípona /status neexistuje. Odpoveď obsahuje identitu relácie, URL, súčty, daňové polia, stavy a
časové pečiatky a navyše paymentReference a completedAt, ktoré môžu byť null. paymentReference identifikuje posledný
pokus o potvrdenie a je null, kým žiadny pokus neexistuje. Referencia, ktorá nie je null, nedokazuje úspech.
Časové pečiatky sú reťazce vo formáte ISO 8601.
Stav relácie:
status | Význam |
|---|---|
open | Relácia je k dispozícii na platbu, alebo sa výsledok odoslanej platby ešte potvrdzuje. |
completed | Relácia bola dokončená. Výsledok platby zistíte v paymentStatus. |
expired | Relácia už nie je k dispozícii na novú platbu: vypršala, alebo ju nahradila novšia relácia pre tú istú objednávku. |
Stav platby:
paymentStatus | Význam pre objednávku |
|---|---|
unpaid | Žiadna potvrdená úspešná platba. Výsledok sa ešte môže potvrdzovať. |
successful | Platba prebehla úspešne. Pred vybavením objednávky odsúhlaste referenciu objednávky, sumu a menu. |
failed | Platba bola zamietnutá. Kým je relácia otvorená, zákazník môže skúsiť inú kartu alebo peňaženku. |
cancelled | Platba bola zrušená. |
action_needed | Vyžaduje sa ďalšia akcia. Objednávku nevybavujte ako zaplatenú. |
Zamietnutá karta ponechá status ako open a paymentStatus ako failed. Kým Tapaya na pozadí potvrdzuje neistý
výsledok, relácia zostáva open a unpaid; načítajte ju znova neskôr. Kliknutie na odkaz na zrušenie na hostovanej
stránke je len navigácia na cancelUrl; samo osebe nedokazuje stav platby cancelled.
Overujte na svojom serveri
Objednávku vybavte, len keď načítaná relácia zodpovedá referencii, sume a mene vašej uloženej objednávky a
paymentStatus je successful. Samotné presmerovanie prehliadača platbu nikdy nedokazuje.
Vlastníctvo objednávky a platby
| Váš server vlastní | Tapaya vlastní |
|---|---|
| Referenciu objednávky, ceny, menu a stav vybavenia | Reláciu Checkoutu a výsledok platby z platobnej brány |
ID relácie Checkoutu identifikuje hostovaný Checkout. Pole merchantOrderId relácie ju prepája s vašou objednávkou, zatiaľ čo
paymentReference identifikuje posledný pokus o potvrdenie. Ukladajte ID relácie k objednávke, aby ste mohli
výsledok načítať, aj keď zákazník zatvorí prehliadač.
Hostovaná stránka používa na načítanie a potvrdenie relácie samostatné verejné endpointy. ID relácie slúži pre tieto endpointy ako prístupový údaj. Integrácia obchodníka overuje platbu cez autentifikovaný endpoint pre obchodníkov.
Jedna platba na objednávku
Hosted a Embedded Checkout zdieľajú jeden platobný systém. Obchodník môže
mať na jedno merchantOrderId najviac jednu úspešnú platbu. ID objednávok platia v rámci obchodníka, takže rôzni
obchodníci, aj v rámci jednej organizácie, môžu používať rovnaké ID.
- Vytvorenie relácie pre nezaplatenú objednávku nahradí predchádzajúcu nezaplatenú reláciu. Stará URL hlási
expireda už nemôže prijať platbu. - Vytvorenie relácie pre objednávku, ktorá je už zaplatená alebo pri ktorej prebieha platba, vráti HTTP 409.
- Po zamietnutí môže zákazník v tej istej relácii skúsiť inú kartu alebo peňaženku. Opätovné odoslanie toho istého tokenu karty nikdy nezaťaží kartu dvakrát.
- Tapaya určuje pravidlá pre 3-D Secure a vždy sa pokúsi o autentifikáciu.
Idempotencia a chyby
Vytvorenie vyžaduje neprázdny Idempotency-Key s dĺžkou najviac 250 znakov. Pre toho istého obchodníka platí:
| Pošlete | Tapaya vráti |
|---|---|
| Rovnaký kľúč, telo a režim prihlasovacích údajov | Tú istú reláciu s jej aktuálnymi hodnotami status a paymentStatus |
| Rovnaký kľúč so zmeneným telom | HTTP 409 s kódom API-0025 |
| Rovnaký kľúč a telo s druhým režimom prihlasovacích údajov | HTTP 409 s kódom API-0025, pretože každý režim používa vlastné nastavenia presmerovania |
| Neplatné súčty, nepodporovanú menu, neplatné ciele presmerovania, chýbajúcu konfiguráciu platobnej brány alebo obchodníka, ktorý nie je pridaný do Checkoutu | Odmietnutie vytvorenia relácie |
Zamietnutie karty je výsledok platby, nie dôkaz, že požiadavka HTTP zlyhala.
Neznámy výsledok
Chyba siete alebo vypršanie časového limitu ponechá výsledok platby neznámy. Webhooky pre Checkout zatiaľ nie sú k dispozícii: odsúhlasujte načítaním relácie zo svojho servera a vytvorenie opakujte iba s rovnakým kľúčom a telom.