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

Nefungujici Reverse platby v testovacim prostredi #612

Closed honzastefan closed 2 years ago

honzastefan commented 2 years ago

Dobry den,

pokud poslu po uspesne provedene transakci Reverse

POST https://iapi.iplatebnibrana.csob.cz/api/v1.8/payment/reverse HTTP/1.1 Content-Length: 436 Content-Type: application/json

{"merchantId":"M1MIPS9355","payId":"2a6e9e45bf59@GL","dttm":"20211207175815","signature":"h3ZTw98ubi7OZ7lEcJBK7+AXNXeJJo6eyQ9btZiazOFoLeYqhegZNGV9Nohs9pSe4cQXTWWuEPsT+WO5zbNYeoF1PNfF+9Dr+C0dIzSH/AlnlVY9mVuyGxixZoOQl9F7qQKLZpSeEA77V6KpMWsC6gWD5YPljKZqua1W16BZ0Vjb6DviMTsGr3R6YyF/Xi3z8suK9ALsLiK1rPpASMmVumiDb5OIh2LT5/BiMzErtwfUZDqxop4XgZNVRmmV3v7zdHu0PIkQsQUzwMBLa4woYpiRxtC7blNlxD+PcgF+Hehh3onKuD6MbpoCP3PBf90UmTWVZ4i3ew2EwempCZ5NQA=="}

Brana mi vraci toto:

HTTP/1.1 200 OK cache-control: no-cache connection: close content-length: 246 content-type: text/html; charset=utf-8 pragma: no-cache

Podle dokumentace by me mela vratit json s vysledkem viz dokumentace

{ "payId":"d165e3c4b624fBD", "dttm":"20190925131559", "resultCode": 0, "resultMessage":"OK", "paymentStatus": 5, "signature":"base64-encoded-response-signature" }

Pred volanim Reverse overuju pomoci status jestli ma platba status 7, coz ma. A dle dokumentace bych mel mit vsechny nalezitosti splnene.

5) Platba odvolána: Dokud neprojde potvrzená platba zúčtováním, lze ji odvolat. To znamená, že nebude vůbec držiteli karty účtována, blokované prostředky na kartě se uvolní a neplatí se žádný poplatek. Tento stav je koncový a nelze jej vrátit. Počet odvolaných plateb obchodníkem je bankou monitorován.

Spoléhat na možnost odvolání platby lze pouze u transakcí, které dosud nebyly zúčtovány. Odvolat platbu lze u transakcí ve stavu „Platba potvrzena“ (4) pouze do té doby, dokud nebude zařazena do zúčtování a neproběhne samotné zúčtování. U transakcí ve stavu „Čekání na zúčtování“ (7) lze odvolat platbu maximálně do půlnoci daného dne, po této době se provádí zúčtování transakcí, u zúčtované platby lze již jen provést operaci vrácení prostředků.

Muzete mi prosim poradit co s tim?

Predem diky

jstuchlik-mnt commented 2 years ago

Dobrý den,

požadavek byl předán na servis.

S pozdravem

-- Jan Stuchlík IT Support Specialist

dkomarek2 commented 2 years ago

Dobrý den,

snažil jsem se dohledat váš request pro reverse a následný payment/status ale marně. Transakce je ve State 8 a reverse na ni jsem v logu nenašel.

Můžete prosím zkontrolovat, zda jste poslal správné payId transakce?

Případně jiný příklad?

Děkuji.

S pozdravem,

Daniel Komárek IT application specialist

honzastefan commented 2 years ago

Dobry den,

Z tohoto testu je patrne ze pouzivam stejne hodnoty payId. Je to zkuporovano primo z Idei a pokud dobre vidim tak odpoved na process a nasledne reverse pouziva stejne PayId.

pokusim se tedy podrobně popsat jak to testuji.

Muj stav před pokusem vypada takto v POS:

Pred

Následně tedy provedu ECHO, INIT, PROCESS

Process mi vrati toto:

CsobGwPaymentResponse(payId=cc80a8b8717c@GL, timestamp=20211209152040, resultCode=0, resultMessage=OK, paymentStatus=7, authCode=491833, customerCode=null, statusDetail=null, signature=LNmkfWgjwRBjmZrvYjE3yw6Nni4/SQi1BZs+58HZlk0zhu0pvpBwq27a8XPEx2N/FyQlxOOdUVifITj/nPNX0gMdYrtOKA5BeZtIAKm6w9mgp4EgTV0HrDQvKBVug/J0nyVS66HBywkT9BPf1NsjkSK8YcWS4hcqPlmbFjVFjH/CufK6YsaSVTynwYpk6znRBHr8iFBowLYCeziFz2adxvkFpzjsKxWySS7Gns7lYRghfr3hPp7vC2Oas5iUa91zk4YJW8djVfE5QqRfnA0l+lF9qM+CfndRrqidwr1SM2ofqw7T0pOgiaa9fHnsdV566xCADWf9JzhA7XtWieiZaw==)

Na webu POS se mi objevi toto:

PozaplaceniPredReverzalem

Prvni zvlastni vec je, ze pri pouziti karty pro reverzovani se mi provede test na OK platbu. Jediné co mě k tomto napada ze test neni zavisly na konkretni karte, ale na poradi v jakem to provadim, Nikde neni zminka o tom, ze by na tom zalezeno, nebo jsem tu informaci nenasel.

Pak provedu dotaz na STATUS a tem mi vrati toto, pridal jsem to sem jen pro jistotu stejne se to chovalo i pred tim nez jsem to sem pridal. Takze odeslani dotazu na status na to nema vliv.

CsobGwPaymentResponse(payId=cc80a8b8717c@GL, timestamp=20211209154055, resultCode=0, resultMessage=OK, paymentStatus=7, authCode=491833, customerCode=null, statusDetail=null, signature=hxQOT7UK1/swowUe/BU9l8moNAXHpBLTPzKEr3okxtNSO1IGJVgEuWmdRLmmLSO90AErZf5KldCXw/hwKecLZZHBlafHSiJRsWwdFhPVkyWV44mcLrNhgQ1iQt/eo2cU4J3aD8OfI4IxnEipjU3EZkikkGE1n2suflxD2ZkNqPEsQC0G7C3sIyaWRfQSF2XZ1dU5Vr3wHLrG3KHzGc0wxZ/rWz8JPgtXhyde33sJanIbTlWOWF7Fps6zTr8q64jeEMU67y75GJuCcdnv0DIPMHoFmO5HyaE8IMya8bS0CSjZgOGKg2kECn9YfUY9oFOapxBFAQYCLqphSVVhHAtKaA==)

Pak si pripravim request.

CsobGwPaymentRequest(merchantId=M1MIPS9355, payId=cc80a8b8717c@GL, timestamp=20211209154314, signature=YoroUFrFv8BtJyYifZJIUwb/z5C6fZUb6/+Q91ChvGyYGgZc3M8LfOunxpxPG1tYCF1O4wfr9iQlzQUdrrqIS/KAw5zt80c8vIv/uXdU3h4FAuDh0Y4wSKHLcStxE69TVKBp2LXwJXQvxwQ36lPoe+kzYuk1QlbQW/FRc50bmiqRw0/iKuwCMRM/KP5NPlThSzVSS2Zugo+fcopzt9dpACsz4JedxBm9mx3s08gNbtHFBc7mPY3YM51eDAuIkYHl8wSxnveo2VDNtL38IuUK2bircgbRcTH0xoboptPEmHxh9NbaDE9EZuQlrXdgWzq+XGATP0KFfeRCIBuGOOlXow==)

A odeslu a brana vrati html s kodem 200

HTTP/1.1 200 OK cache-control: no-cache connection: close content-length: 246 content-type: text/html; charset=utf-8 pragma: no-cache

Chtel jsem ted vyzkouset jestli zalezi na poradi provedeni testu. Pri provedeni dalsi platby me to pak hlasi starou dobrou hlasku.

rejected

Stejny stav byl i pred dvema dny. CSOB FW me po nejake dobe odblokoval, takze jsem mohl pokracovat v investigaci problemu. Dostal jsem se do uplne presne stejneho stavu. POS me ukazoval, ze jsem proved OK platbu i pres to ze jsem provedl platbu s kartou pro reverzaci.

Az me FW odblokuje zkusim tedy nejdriv provest test na OK platbu a pak az teprve na Reversovani. U te blokace jsem si myslel, že me FW zablokuje kvuli tomu ze me Feign client dekodoval enkodovane znaky v podpisu. Uprime jsem jeste zatim neimplementoval api, ktere by vyzadovalo podpisy a ruzne specialni znaky v URL. Tak jsem si myslel, ze by to mohlo byt tim. Ale vzhledem k tomu bug Feign Clienta jsem vyresil tak je mi divne, ze se mi to ted bloklo na zaklade komunikace pres POST a json body.

S tim ze mam jeden pokus za den na test jsem se nejak naucil zit a debuguju to stylem, abych toho odhalil co nejvic jit pri prvnim pokusu. Ale je to take dosti otravne.

Mel jsem termin pro zakaznika konec listopadu, ale tyto porodni bolesti, kde nikdo nevi proc FW blokuje platby a nasledne prechod do ostre verze jsou vskutku otravne. A bohuzel se mi jeste nepodarilo Vam predat dostatek informaci pro to, abyste mi mohli pomoct. Uz skutecne nevim co s tim.

Diky

S pozdravem

Jan Stefan

dkomarek2 commented 2 years ago

Dobrý den,

Pokud potřebujete provést testovací scénář "Reverzováno", tak jste správně vytvořil transakci pomocí requestů Init a následně Process. Tím jste se dostal do stavu transakce "7".

payment/init -> vytvoří transakci payment/process -> spustí zpracování transakce (předá vám URL s formulářem platební brány)

Ale reverzování transakce provedete pomocí requestu payment/reverse (nikoli payment/process). Viz definice: https://github.com/csob/paymentgateway/wiki/Z%C3%A1kladn%C3%AD-metody#payment-reverse-operation Takže tam žádnou kartu nepotřebujete.

S pozdravem,

Daniel Komárek IT application specialist

janbrasna commented 2 years ago

@dkomarek2 Pokud nemuzete dohledat operaci v logu tak je to nejspis proto, ze to zarizne uz firewall, viz ta "200 OK text/html" odpoved na api call, coz znamena ze to na branu ani nedorazilo… viz #609 a dalsi issues…

janbrasna commented 2 years ago

@honzastefan Pro ty reverzy jen pozn. pokud utikaji stavy; ono se to meni pulnoci viz #422 …

dkomarek2 commented 2 years ago

Dobrý den,

ano, taky si myslím, že ty requesty co pak obchodník odesílá končí zablokované na FW. Ale jak jsem již psal, tak ikdyž je transakce již ve State 7, tak jestli to dobře chápu tak se snažili je "stornovat" odesláním requestu "payment/process" což nedává smysl. Reversuje se pomocí "payment/reverse". Předpokládám, že pokud obchodník pošle správný request, tak ten projde.

S pozdravem,

Daniel Komárek IT application specialist

honzastefan commented 2 years ago

Ne neni to tak odesilal jsem to normalne na payment/reverse.

Nechapu kde jste vzal ze jsem to posilal na payment process......?????

Ten printscreen jen ukazuje ze kdyz jsem pokus opakoval, tak uz jsem ani neprosel pres payment/process protoze jsem byl zase zarizlej.

honzastefan commented 2 years ago

Jeste bych se chtel zeptat jestli tam teda hraji nejakou roli ti cisla karet? Proc tedy testy probihaji na ruzne cisla karet kdyz to nema zadny vliv?

honzastefan commented 2 years ago

Nechapu jeste co tedy delam spatne, ze me ten firewall blokuje.

honzastefan commented 2 years ago

image

honzastefan commented 2 years ago

image

dkomarek2 commented 2 years ago

Dobrý den,

omlouvám se ale z toho zadání to tak vyplývalo.

Můžete mi prosím uvést jaká data odesíláte pro ten reverse? Z toho screenu s chybou je vidět, že tam bude nějaký neočekávaný znak (asi ta ostrá závorka). V zadání je jako příklad takový tvar:

URL: https://api.platebnibrana.csob.cz/api/v1.8/payment/reverse

poslaný jako PUT a v těle je něco takového:

{ "merchantId":"012345", "payId":"d165e3c4b624fBD", "dttm":"20190925131559", "signature":"base64-encoded-request-signature" }

Jinak význam použití testovacích karet je popsán zde: https://github.com/csob/paymentgateway/wiki/Testovac%C3%AD-karty Jsou tam například karty, u kterých náš simulátor zamítá z nějakého důvodu atp.

Děkuji

S pozdravem,

Daniel Komárek IT application specialist

honzastefan commented 2 years ago

Abychom se oprostili od meho programu. Simuluju pres Postmana.

Tak ted testuju nad platbou eee355cad567@GL

Na odeslani dotazu na status mi to vraci toto

image

pri odeslani Reverse tohoto

image

honzastefan commented 2 years ago

Jeste posilam test metody PUT

image

image

dkomarek2 commented 2 years ago

Dobrý den,

ano správně má být typu PUT a chybí vám v URL slovo payment

image

S pozdravem,

Daniel Komárek IT application specialist

honzastefan commented 2 years ago

Super, diky moc.

Skutecne jsem mel spatne vybrany typ metody.

honzastefan commented 2 years ago

Je tedy teoreticky mozne, ze FW zarizne pokud poslu na nejake API spatny typ metody?

dkomarek2 commented 2 years ago

Dobrý den,

V Postmanovi vidíte Response v záložbe "Body". provedl jsem test:

image

Jinak nevím o tom, že by FW blokoval obchodníky po provolání 1 špatného requestu. FW zablokuje ten jeden request ale když pošlete následně nový tak by měl projít. Pokud jich nepošlete nějaké nadměrné množství...

S pozdravem,

Daniel Komárek IT application specialist

honzastefan commented 2 years ago

Tak vyreseno.

image

Tato stranka nabehne pokud platbu delam s otevrenym DevTools v Chrome.

Pokud jsou DevTools zavrene. Tak vse funguje v poradku.

Muzete toto issue zavrit.

Diky moc za support

janbrasna commented 2 years ago

Ta "ostra zavorka" je zas pokus parsovat odpoved, ve ktere je misto json payloudu html stranka firewallu (a jeji prvni znaky body jsou logicky ostre zavorky html tagu…) tzn. stale dokola ta #605 — ta issue se bude snazit vyresit jak na json request i na firewallu vracet json odpoved, aby se alespon dala parsovat…

Ano, neposlani PUT metody na PUT operaci je jedna ze situaci kdy pozadavek sezere uz firewall. Ale jeden "divny" pozadavek nezpusobi blokaci na cely den+ … to spis ty devtools si tam zkouseji nejake divoke OPTIONS, HEADs nebo si po svem vykladaji samesite/botprotect cookies na redirectech…? Tezko rict. Da se @dkomarek2 prosim podle tech "support ID" incidentu nechat vytahnout z infrastruktury ktere konkretni pravidlo ten request porusil, aby se pripadne vedelo zda se s tim da neco delat do budoucna? Jen otevrene devtools by samy o sobe nemely znemoznit funkcnost integrace/testingu merchanta:/