ondrakoupil / csob

PHP client for ČSOB payment gateway eAPI
MIT License
44 stars 18 forks source link

API returned HTTP code 400, which is not code 200. Probably wrong signature, check crypto keys. #28

Closed janvalentik closed 4 years ago

janvalentik commented 4 years ago

Zdravím Ondro, nenapadá vás kde by mohl být problém

https://github.com/csob/paymentgateway/issues/478

ondrakoupil commented 4 years ago

Zdravím, bylo by možné poslat výpis z logu? Jakou verzi API používáte?

janvalentik commented 4 years ago

Poslal jsem raději mailem. Api 1.8

ondrakoupil commented 4 years ago

Honzo, teď se dívám na specifikaci button/init metody a v API 1.8 je úplně jiná. Nechápu, že jsem si toho nevšiml... Metoda má jiné parametry a už se s ní hlavně nepracuje tak, že se nejdříve založí platba přes payment/init a pak se volá button/init, ale už se rovnou volá button/init. Upravím podle toho knihovnu. Pak to bude fungovat.

janvalentik commented 4 years ago

Super, děkuji. Dáte mi pak vědět?

ondrakoupil commented 4 years ago

Zkuste prosím commit 53e8cfa, mělo by to už fungovat správně. Je potřeba použít metodu buttonInit() a ne paymentButton(). Pokud to u vás bude fungovat, jak má, označím to pak tagem jako novou verzi.

janvalentik commented 4 years ago

Zdravím, zkouším to ale nedaří se mi. buttonInit má správnou responzi, vrátí v pořádku data, ale když pak volám redirectToGateway, tak mi to háže chybu, že object payment nemá payId. Takto to zkouším.

$payment = new Csob\Payment(time());

$payment->addCartItem("Dobití kreditu", 1, ($amount * 100));

$response = $this->client->buttonInit($payment, $_SERVER['REMOTE_ADDR']);

$this->client->redirectToGateway($payment);

janvalentik commented 4 years ago

Zkusil jsem ještě dodat payId před redirectem $payment->setPayId($response['payId']);

Kdy mě to již přesměrovalo, ale na bráně to vyhodí jakousi technickou chybu. https://free-picload.com/image/gfmYE

janvalentik commented 4 years ago

Omlouvám se, beru zpět. Musím použít url z response.

ondrakoupil commented 4 years ago

Ne ne, je potřeba přesměrovat přímo na tu adresu, kterou vrací buttonInit(). Celá ta věc s redirectToGateway je jen pro situace, kdy jde o klasickou platbu přes paymentInit(). Zmíním to lépe v dokumentaci, aby to bylo jasnější.

janvalentik commented 4 years ago

Tak hlásím, že jsem úspěšně otestoval platbu. Děkuji moc.

ondrakoupil commented 4 years ago

Prima, díky. Zavírám.