csob / paymentgateway

English documentation of the ČSOB Payment Gateway that offers an API for credit card payments, Apple Pay, Google Pay, mallpay and ČSOB Payment Button.
https://platbakartou.csob.cz/platebni-brana
GNU General Public License v3.0
121 stars 68 forks source link

Platba na vrací stav 6 (zamítnuto) #669

Closed pvlst closed 1 year ago

pvlst commented 1 year ago

Snažíme se zprovoznit vůči integračnímu prostředí (https://iapi.iplatebnibrana.csob.cz/) platbu přes Google Pay a opakovaně bojujeme s tím, že nefunguje platba na platební bráně. Platba kartou dopadne takto: image

A Google Pay platba po úspěšné inicializaci a processingu vrátí stav 6 (denied / zamítnuto). JSON odpověd:

{
    "payId": "f4d117bd1c78@IC",
    "resultCode": 0,
    "resultMessage": "OK",
    "dttm": "20230306192920",
    "signature": "Oq+wgAIMrZBQbhaIfq3mQ7JEvYEF1Q69hwMOXEoAivxbOvGz2JvoFDESElGZ/CIQBy/mFFaTDFxnuAVVZXZKl+TEGIhKLlUORCDKrRAFjoBWLWMfCT0p++chKBIlORE7BcF6jYc/Uuo7RyA8xHm6QHYu2QHMi56vRodxq9HhPPblVViJADM2qtAu9lnd5ozloZ4tUDb9B4FPe9txPgeQZHQD742BbWq7RlLPKM1tCLyK/45OlPRyc5zFtYUMwyJZjrL87QguJ6EYZZAavkRdh6APEQf8EJ6kd1KtvZ4mugf0BfaLEZGWGlSlL5dfpEHUgxnETPozOzq4/TxUj1QsXw==",
    "paymentStatus": 6,
    "extensions": [
        // odstraneno
    ]
}

Z těchto status kódů nejde ani identifikovat, kde je jaký problém. Uvítali bychom více informací. Můžete se na to prosím podívat?

mjanek commented 1 year ago

Dobrý den, používáte testovací karty dle návodu ? https://github.com/csob/platebnibrana/wiki/Testovac%C3%AD-karty#testov%C3%A1n%C3%AD-apple-pay-a-google-pay-plateb-na-integra%C4%8Dn%C3%ADm-prost%C5%99ed%C3%AD Miroslav Janek

pvlst commented 1 year ago

Dobrý den, používáte testovací karty dle návodu ? https://github.com/csob/platebnibrana/wiki/Testovac%C3%AD-karty#testov%C3%A1n%C3%AD-apple-pay-a-google-pay-plateb-na-integra%C4%8Dn%C3%ADm-prost%C5%99ed%C3%AD Miroslav Janek

Nemyslím si, že bychom dělali něco špatně. Na platební bráně zadáváme například č. karty 4000007000030004, platnost 08/26, kód 777. Potom to vyžaduje OTP, což je 1234. Pak se začně točit spinner, točí se dlouho a skončí to stejně jako na screenshotu výše.

V případě Google Pay zadáváme například částku 10 Kč, protože chceme otestovat celé flow. Testovací karty používáme z téhle Google skupiny: https://groups.google.com/g/googlepay-test-mode-stub-data

Vždy to dopadne stejně, tj. zamítnutím bez specifikování nějakého důvodu.

pvlst commented 1 year ago

V případě Google Pay jsme přišli na to, že platba při opakovaném dotazování na její stav (a včasné neodbavení ověření uživatelem), se už po 30 sekundách přepne do stavu zamítnuto. Toto je standardní chování, nebo něco děláme špatně?

Plus jak jsem naznačil, ikdyby to bylo standardní chování, očekával bych, že se v ostatních datech vrátí nějaký detail. Místo toho se vrátí ResultCode = OK a StatusDetail = nic.

Standardní platba kartou na platební bráně (jak zmíněno výše) mi stále nefunguje, vrací to stále totéž.

jgrmelova commented 1 year ago

Dobrý den,

u transakce f4d117bd1c78@IC dle logu došlo k zamítnutí v rámci ověření z důvodu vypršení časového limitu - "Transaction f4d117bd1c78@IC timeouted during challenge endpoint processing".

V logu vidím, že v rámci metody payment/status, došlo k zaslání "actions":{"authenticate":{"browserChallenge":{"url":"https://iplatebnibrana.csob.cz/pay/.../3ds/challenge" dále v logu však již nevidím, že by došlo ke zpracování. Můžete, prosím, ověřit zda došlo ke zpracování z Vaší strany?

Děkuji.

pvlst commented 1 year ago

Asi je to tak, k ověření platby nedošlo (včas). Netušil jsem, že je zde nějaký časový limit, který je takto krátký. Je to někde zdokumentované, abychom to mohli na naší straně exaktně přizpůsobit?

Obecně jsem nenašel popis toho, co se stane, když se např. neprovede browser fingerprint po initu. Nebo když se neprovede payment confirmation. Většina popisu mi připadá jen jako "happy path" varianta, což je pro nás poněkud nedostatečné.

pepakriz commented 1 year ago

@pvlst Co jsem vypozoroval, tak ty timeouty neřeší, jak dlouho člověk zůstane viset v 3DS challenge, ale jen hlídají, že se do X vteřin provede provolání toho URL. A jinak naprosto souhlasím, že dokumentace je popsaná velice stroze a bojoval jsem docela dlouho se zjišťováním, jaké pořadí, co, kde kam provolat, aby brána byla spokojená.

jgrmelova commented 1 year ago

Dobrý den, 

pro provolání ověření je časový limit 30 sekund. Pokud k ověření nedojde, je transakce zamítnuta.

Obecně pokud nedojde ke splnění některého z povinných kroků, tak je transakce zamítnuta - přejde do stavu 6. Možností, co všechno může být implementováno nesprávně je velmi velké množství a není možné sepsat všechny scénáře, které mohou nastat. 

Předala jsem však podnět na vývojový tým na rozšíření častých dotazů a seznamu nejčastějších chyb při implementaci, co by mohlo pomoci dalším vývojářům při implementaci.


Jana Grmelová

janbrasna commented 1 year ago

@dmarek Prosim kdyztak informaci o zamitnuti po neprovedeni fingerprintu a casovem okne pridejte k FAQ:
d38f168^...d38f168 — diky.