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

Připojení testovací platby #555

Closed NeXxik91 closed 3 years ago

NeXxik91 commented 3 years ago

Ahoj, snažím se napojit ČSOB platební bránu vše jsem nastavil dle 1.8dokumentace, ale neustále mi to vrací viz. toto, může někdo poradit?

preparing payment init data ...

preparing cart data: [ { "name": "Shopping at ...", "quantity": 1, "amount": 100, "description": "Lenovo ThinkPad Edge E540..." }, { "name": "Shipping", "quantity": 1, "amount": 0, "description": "PPL" } ]

data to sign: "A5134y7NHd|123456|20210227173922|payment|card|100|CZK|false|https://vasobchod.cz/gateway-return|POST|Shopping at ...|1|100|Lenovo ThinkPad Edge E540...|Shipping|1|0|PPL|1234|CZ"

prepared payment/init request: { "merchantId": "A5134y7NHd", "orderNo": "123456", "dttm": "20210227173922", "payOperation": "payment", "payMethod": "card", "totalAmount": 100, "currency": "CZK", "closePayment": false, "returnUrl": "https://vasobchod.cz/gateway-return", "returnMethod": "POST", "cart": [ { "name": "Shopping at ...", "quantity": 1, "amount": 100, "description": "Lenovo ThinkPad Edge E540..." }, { "name": "Shipping", "quantity": 1, "amount": 0, "description": "PPL" } ], "merchantData": null, "language": "CZ", "customerId": "1234", "signature": "G2tm3HnIo4L0q52R4TUJZ+xStUKQs0rlWAbnSuR74Ag5H4Khdm2/KeWA6OFMzUsCjA0ISJKHLaieK/y++IYNeeiaFPNfCRjIvGsC5iOwD1QqTHM9Jjz+q3X7/Yz4bgIJcWNJAtyDjbPLnk69o3C5uQrB8KkFhj7nGxylug15jFL4wpPNGNVUdOaaMip1B5DgliK7YBV8omVr7mQX78Lg5i4quqh4/7+RcEPLcCzgIy1KrAJFHoTzJEVPixEc2iys4h0+BXr7jl4bPVAIEoWbhSD4lE7nRScwPfvMkMLc2ixPVdZ2UiswoyZXY/UZ5IaPQ5TlSsvLTqIthBgpt/K0HA==" }

processing payment/init request ...

payment/init result: {"dttm":"20210227183922","signature":"MUOzPyLFKp9iunYtmfdCdx8/AtYNpPiRlV+2nK3QPgtxCLRQnu0GyyLAUsPJqz/+h7uFecNTyHhY6iZhFWsfiUYk/d5kXbxPbo+i3LgRxNImJ782g8/uaVReVcxEzxdj76gRu41JCxyTJd7Y09sm3VIYjuMF5XYxH6h0j7uaoGKleCTWhvN07W4wff1g1Xt00/Rlubo4qx5uTkwqqg/xKWvq4YYQmwZw/I23K4kgwPovwTDu2h/TuNfhqNxL/t9aI9N2Z8y8MOyi1ZbPgUlBF4qmykw83tAi8CZuPDZawvEjWyrOaEYm3re+A8LlX8HpgTp8XBTxudahjfFN6rSoKg==","payId":"eb1dab8a6758eGB","resultCode":0,"resultMessage":"OK","paymentStatus":1}

Warning: openssl_verify(): supplied key param cannot be coerced into a public key in /srv/users/grapa/apps/margareta/public/testy/crypto.php on line 180

Warning: openssl_free_key() expects parameter 1 to be resource, bool given in /srv/users/grapa/apps/margareta/public/testy/crypto.php on line 181

mjanek commented 3 years ago

Dobrý den, Váš požadavek byl zaevidován a předán k řešení. O dalším průběhu Vás bude informovat odpovědný servisní technik. S pozdravem Miroslav Janek

NeXxik91 commented 3 years ago

@mjanek super, díky

NeXxik91 commented 3 years ago

@mjanek Mohu poprosit o reakci?

dkomarek2 commented 3 years ago

Dobrý den, používáte správnou sadu klíčů? Tzn. Váš privátní klíč + veřejnou část klíče banky (https://github.com/csob/paymentgateway/blob/master/keys/mips_iplatebnibrana.csob.cz.pub).

Dále používáte pro šifrování algoritmus založený na SHA-256 (pro eAPI v1.8 a vyšší)? Jakou používáte verzi openSSL? Měla by se používat: OpenSSL s podporou nejméně TLS v1.2.

Projděte si prosím informace zde: https://github.com/csob/paymentgateway/wiki/%C4%8Cast%C3%A9-technick%C3%A9-dotazy

Vyzkoušejte implementovat request "echo" pro kontrolu funkčnosti klíčů: https://github.com/csob/paymentgateway/wiki/Z%C3%A1kladn%C3%AD-metody#echo-operation

S pozdravem,

Daniel Komárek IT application specialist

NeXxik91 commented 3 years ago

@dkomarek2

takto mám setup.php

$url = "https://iapi.iplatebnibrana.csob.cz/api/v1.8"; $publicKey = "mips_iplatebnibrana.csob.cz.pub";

// set up your merchant ID $merchantId = "A5134y7NHd";

// place your private key into 'keys' directory and set up key's filename $privateKey = "rsa_A5134y7NHd.key"; $privateKeyPassword = null;

a takto sign verify test.php

require_once ('logger.php'); require_once ('crypto.php');

echo "sign & verify test ...\n";

$text = "some text to sign"; $private_key = "rsa_A5134y7NHd.key"; $private_key_passwd = null; $public_key = "rsa_A5134y7NHd.pub";

echo "signing text '" . htmlspecialchars($text) . "' using private key " . htmlspecialchars($private_key) . "\n"; $signature = sign($text, $private_key, $private_key_passwd); echo "signature is '" . htmlspecialchars($signature) . "'\n";

echo "verifying signature using public key " . htmlspecialchars($public_key) . "\n"; $result = verify($text, $signature, $public_key); echo "verify result: " . ($result == 1 ? "ok" : "failed") . "\n";

Na serveru jsem zkoušel aktualizovat openSSL, ale píše mi, že mám nejposlednější verzi, takže předpokládám, že obsahuje TLS. Co se týče šifrování, stáhnul jsem Váš vzor z 1.8, kde to máte napsané, takže ano :)

NeXxik91 commented 3 years ago

@dkomarek2 Verze OpenSSL je 1.1.1

NeXxik91 commented 3 years ago

@dkomarek2 ??

NeXxik91 commented 3 years ago

Vyřešeno, když stáhnu testovací veřejný klíč tady z gitu, tak mi to nejede, když jsem použil testovací klíč v řešení od Ondřeje Skoupila, tak vše proběhne.

dkomarek2 commented 3 years ago

Dobrý den, váš dotaz jsem předal na kolegu z vývojového oddělení ale dosud mi neodpověděl.

Pokud jste vyřešil změnou klíčů, mohl by jste uvést který klíč fungoval a který ne? Klíč z Githubu by měl být platný.

Děkuji

Daniel Komárek IT application specialist

NeXxik91 commented 3 years ago

@dkomarek2 klíč z csob/paymentgateway/keys/mips_iplatebnibrana.csob.cz.pub mi dělal výše uvedené

dkomarek2 commented 3 years ago

Dobrý den, můžete mi teda poslat klíč, s kterým vám to funguje? (URL nebo samotná data)

Děkuji.

Daniel Komárek IT application specialist

NeXxik91 commented 3 years ago

image

karelbartunek commented 3 years ago

Zdravím. Řešil jsem nyní problém, že mi přestalo fungovat napojení na testovací účet brány. Používám knihovnu od Ondřeje Koupila a vracelo mi to tohle: API returned HTTP code 400, which is not code 200. Probably wrong signature, check crypto keys.

Při jeho řešení jsem prošel tohle vlákno, tak napíšu postřehy, třeba pomohou:

dkomarek2 commented 3 years ago

Dobrý den,

přikládám vyjádření kolegy z vývojového týmu:

Podepsani pozadavku privatnim klicem obchodnika a overeni public klicem obchodnika na strane brany zda se ok (platebni brana vratila response s payId a state=1), to co zda se nefunguje je overeni podpisu odpovedi z brany (tam je potreba mit stazeny verejny klic mips_iplatebnibrana.csob.cz.pub)

Nekdy se stane, ze misto stazeni souboru se stahne cela html stranka, je tedy potreba overit, zda je v souboru mips_iplatebnibrana.csob.cz.pub jen ten klic (musi zacinat a koncip pres ... begin /end rsa public key)

Daniel Komárek IT application specialist