Tapaya
Online platbyPrůvodce integracíIntegrace přes API

Integrace přes API

Vytváření a načítání relací Checkoutu z vašeho backendu.

Váš backend vytvoří pro každou objednávku relaci Checkoutu a načte ji, aby ověřil platbu.

Pro Node.js poskytuje SDK @tapayadot/checkout pro tyto endpointy typované metody create() a get(). Ve výchozím nastavení načítá TAPAYA_SECRET_KEY. Příklady HTTP na této stránce předávají TAPAYA_CHECKOUT_API_KEY explicitně.

Autentizace

Každé volání Checkoutu probíhá mezi servery a odesílá klíč jako bearer token:

Authorization: Bearer <key>

Zvolte režim podle toho, kdo backend provozuje. Oba typy klíčů uchovávejte na svém serveru; viz Zabezpečení Checkoutu.

Režim obchodníka

Tento režim použijte, když backend obsluhuje jeden obchod. V Nastavení Checkoutu vytvořte Checkout klíč obchodníka: otevřete obchodníka a zvolte Create merchant key. Klíč začíná na tapaya_test_ v sandboxu nebo tapaya_live_ v produkci a odkazuje právě na tohoto obchodníka.

Authorization: Bearer <merchant-checkout-key>

X-Tapaya-Merchant-Token je v tomto režimu volitelný. Pokud jej odešlete, musí označovat stejného obchodníka.

Tapaya Platform zobrazí klíč jen jednou a ukládá pouze jeho hash. Při rotaci klíče nejprve vytvořte náhradní klíč a teprve potom zrušte starý. Zrušení klíče neovlivní ostatní klíče obchodníků, klíče organizace ani client secret, které už byly vydány prohlížečům.

Režim platformy

Tento režim použijte, když jeden backend jedná za mnoho obchodníků, například jako tržiště nebo platforma pro rozvoz jídla. V každém požadavku odešlete Secret key organizace ze stránky API Keys a token obchodníka:

Authorization: Bearer <secret-key>
X-Tapaya-Merchant-Token: <merchant-token>

Žádný výchozí obchodník neexistuje. Požadavek bez této hlavičky vrátí HTTP 401. Obchodník musí patřit do organizace daného klíče. Tokeny obchodníků zkopírujte z tabulky obchodníků v Nastavení Checkoutu. Token identifikuje obchodníka; není tajný.

Secret key organizace je tentýž přihlašovací údaj, který dokumentace Platform API nazývá Server Secret Token. Checkout vyžaduje předponu Bearer. Ostatní endpointy Platform API přijímají token přímo. Onboarding obchodníků a správa organizace probíhají přes Platform API.

Těla požadavků nepřijímají merchantId.

Prostředí

ProstředíOrigin APIOrigin Hosted CheckoutuPřihlašovací údaje
Sandboxhttps://api.sandbox.tapaya.comhttps://checkout.sandbox.tapaya.comSandboxové klíče s testovacími kartami
Produkcehttps://api.tapaya.comhttps://checkout.tapaya.comOstré klíče se skutečnými platebními metodami

Nastavte TAPAYA_CHECKOUT_API_URL na origin API pro vaše prostředí. V produkci jsou k dispozici hostované i embedded platby. Každý obchodník musí projít onboardingem, získat od zpracovatele plateb schválení pro online platby a mít nakonfigurovanou platební bránu. Připravenost obchodníka zkontrolujete v Nastavení Checkoutu. Vrácenou URL hostované relace používejte beze změny.

Relace Checkoutu

Vytvoření relace Checkoutu

Relaci vytvořte, když zákazník ve vašem obchodě klikne na Checkout, a pak jej přesměrujte na vrácenou url. Nejprve na svém serveru spočítejte konečnou celkovou částku a uložte objednávku s jedinečným idempotency key (klíčem idempotence).

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čkaPovinnéPopis
Authorization✓Bearer <key>: Checkout klíč obchodníka nebo Secret key organizace.
X-Tapaya-Merchant-TokenRežim platformyToken obchodníka patřícího do organizace daného klíče. S Checkout klíčem obchodníka je volitelný.
Idempotency-Key✓Neprázdný, nejvýše 250 znaků. Viz Idempotence a chyby.

Parametry:

PoleTypPovinnéPopis
merchantOrderIdstring✓Vaše označení objednávky, 1 až 200 znaků. Viz Jedna platba na objednávku.
amountinteger✓Konečná účtovaná částka v nejmenších jednotkách měny, včetně daně a dopravy. 1 až 2 147 483 647.
currencystring✓Třípísmenný kód podle ISO 4217 podporovaný backendem, velkými písmeny, například EUR.
localestringVýchozí hodnota je en.
successUrlstringPřepíše výchozí URL pro úspěch pro tuto relaci. Musí odpovídat povolenému webu volajícího přihlašovacího údaje.
cancelUrlstringPřepíše výchozí URL pro zrušení pro tuto relaci. Musí odpovídat povolenému webu volajícího přihlašovacího údaje.
taxintegerDPH již zahrnutá v amount, v rozmezí od nuly do amount. Výchozí hodnota je 0.
shippingintegerDoprava již zahrnutá v amount, v rozmezí od nuly do amount. Výchozí hodnota je 0.
taxRatenumberSazba DPH v procentech pro celou objednávku, například 21 nebo 5.5. Nezáporná.
taxBreakdownarrayDPH seskupená podle sazeb. Neprázdné pole nelze použít současně s taxRate.
itemsarrayPoložky objednávky jen pro zobrazení. Neurčují účtovanou částku.
customerobjectE-mail, fakturační adresa a doručovací adresa zákazníka.

Relace účtuje v měně currency, kterou nastavíte. Stránka Podporované měny uvádí všechny měny, které Tapaya podporuje, obchodník však má obvykle povolené jen některé z nich. Vytvoření relace v měně, kterou obchodník nebo backend nepodporuje, je odmítnuto, takže se nevytvoří žádná hostovaná stránka.

API účtuje částku amount přesně tak, jak je zadána. Nepřičítá dopravu ani daň, nepočítá DPH ze sazby ani nepočítá celkovou částku z položek.

Odpovědi:

KódPopis
200Relace byla vytvořena, nebo byla při opakování se stejným klíčem, tělem a režimem přihlašovacích údajů vrácena stejná relace s aktuálním stavem
409Konflikt: klíč byl znovu použit se změněným tělem nebo režimem přihlašovacích údajů (API-0025), nebo je objednávka již zaplacená či u ní probíhá platba

Tělo odpovědi:

{
    "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 uvedena jen tehdy, když byla zadána. Uložte id k objednávce a pak prohlížeč pošlete na url s HTTP 303. Relace přijímá nové platby po dobu 30 minut od vytvoření; platba, která už byla odeslána, se dokončí i po této době. Návratové URL se vybírají a ověřují při vytvoření, a to buď z hodnot v požadavku, nebo z výchozích hodnot volajícího přihlašovacího údaje: návratové cíle organizace pro Secret key organizace s X-Tapaya-Merchant-Token, návratové cíle obchodníka pro Checkout klíč obchodníka. Tyto dvě sady se nikdy nekombinují.

Načtení relace

Když se zákazník vrátí na vaši URL pro úspěch nebo zrušení, nebo v rámci úlohy pro odsouhlasení, načtěte relaci a před vyřízením objednávky ji porovnejte 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"

Přípona /status neexistuje. Odpověď obsahuje identitu relace, URL, součty, daňová pole, stavy a časová razítka a navíc paymentReference a completedAt, které mohou být null. paymentReference identifikuje poslední pokus o potvrzení a je null, dokud žádný pokus neexistuje. Reference, která není null, neprokazuje úspěch. Časová razítka jsou řetězce ve formátu ISO 8601.

Stav relace:

statusVýznam
openRelace je k dispozici pro platbu, nebo se výsledek odeslané platby ještě potvrzuje.
completedRelace byla dokončena. Výsledek platby zjistíte v paymentStatus.
expiredRelace už není k dispozici pro novou platbu: vypršela, nebo ji nahradila novější relace pro stejnou objednávku.

Stav platby:

paymentStatusVýznam pro objednávku
unpaidŽádná potvrzená úspěšná platba. Výsledek se může ještě potvrzovat.
successfulPlatba proběhla úspěšně. Před vyřízením objednávky odsouhlaste označení objednávky, částku a měnu.
failedPlatba byla zamítnuta. Dokud je relace otevřená, zákazník může zkusit jinou kartu nebo peněženku.
cancelledPlatba byla zrušena.
action_neededJe vyžadována další akce. Objednávku nevyřizujte jako zaplacenou.

Zamítnutá karta ponechá status jako open a paymentStatus jako failed. Zatímco Tapaya na pozadí potvrzuje nejistý výsledek, relace zůstává open a unpaid; načtěte ji znovu později. Kliknutí na odkaz pro zrušení na hostované stránce je jen navigace na cancelUrl; samo o sobě neprokazuje stav platby cancelled.

Ověřujte na svém serveru

Objednávku vyřiďte, jen když načtená relace odpovídá označení, částce a měně vaší uložené objednávky a paymentStatus je successful. Samotné přesměrování prohlížeče platbu nikdy neprokazuje.

Vlastnictví objednávky a platby

Váš server vlastníTapaya vlastní
Označení objednávky, ceny, měnu a stav vyřízeníRelaci Checkoutu a výsledek platby z platební brány

ID relace Checkoutu identifikuje hostovaný Checkout. Pole merchantOrderId relace ji propojuje s vaší objednávkou, zatímco paymentReference identifikuje poslední pokus o potvrzení. Ukládejte ID relace k objednávce, abyste mohli výsledek načíst, i když zákazník zavře prohlížeč.

Hostovaná stránka používá k načtení a potvrzení relace samostatné veřejné endpointy. ID relace slouží pro tyto endpointy jako přístupový údaj. Integrace obchodníka ověřuje platbu přes autentizovaný endpoint pro obchodníky.

Jedna platba na objednávku

Hosted a Embedded Checkout sdílejí jeden platební systém. Obchodník může mít na jedno merchantOrderId nejvýše jednu úspěšnou platbu. ID objednávek platí v rámci obchodníka, takže různí obchodníci, i v rámci jedné organizace, mohou používat stejná ID.

  • Vytvoření relace pro nezaplacenou objednávku nahradí předchozí nezaplacenou relaci. Stará URL hlásí expired a už nemůže přijmout platbu.
  • Vytvoření relace pro objednávku, která je už zaplacená nebo u které probíhá platba, vrátí HTTP 409.
  • Po zamítnutí může zákazník ve stejné relaci zkusit jinou kartu nebo peněženku. Opětovné odeslání stejného tokenu karty nikdy nezaúčtuje platbu dvakrát.
  • Tapaya určuje pravidla pro 3-D Secure a vždy se pokusí o autentizaci.

Idempotence a chyby

Vytvoření vyžaduje neprázdný Idempotency-Key o délce nejvýše 250 znaků. Pro stejného obchodníka platí:

OdešleteTapaya vrátí
Stejný klíč, tělo a režim přihlašovacích údajůStejnou relaci s jejími aktuálními hodnotami status a paymentStatus
Stejný klíč se změněným tělemHTTP 409 s kódem API-0025
Stejný klíč a tělo s druhým režimem přihlašovacích údajůHTTP 409 s kódem API-0025, protože každý režim používá vlastní nastavení přesměrování
Neplatné součty, nepodporovanou měnu, neplatné cíle přesměrování, chybějící konfiguraci platební brány nebo obchodníka, který není přidán do CheckoutuOdmítnutí vytvoření relace

Zamítnutí karty je výsledek platby, nikoli důkaz, že požadavek HTTP selhal.

Neznámý výsledek

Chyba sítě nebo vypršení časového limitu ponechá výsledek platby neznámý. Webhooky pro Checkout zatím nejsou k dispozici: odsouhlasujte načtením relace ze svého serveru a vytvoření opakujte pouze se stejným klíčem a tělem.

Chybí vám něco na této stránce?Navrhněte funkci. Připojíme tuto stránku, aby tým viděl souvislosti.