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

Implementace eAPI 1.6 PHP - Error (400) Bad Request #228

Closed Pally20 closed 8 years ago

Pally20 commented 8 years ago

Dobry den,

prosim pomozte mi s implementaciou s eApi 1.6, pokusam odoslat testovaciu poziadavku na https://iapi.iplatebnibrana.csob.cz/api/v1.6/payment/init/ , ale vzdy sa mi vrati error 400, kluce som generoval z vasej stranky https://iplatebnibrana.csob.cz/keygen/ ,skusal som aj anonymne vygeneovany kluc a tak isto sa mi vrati error 400. Pouzivam Vase funkcie i na kontrolu private a public key, obe su vyhodnotene ako OK. Nizsie mozete vidiet data, ktore sa snazim poslat:

----- Thu, 22 Sep 2016 05:59:31 +0000 ----- { "merchantId": "M1MIPS0905", "orderNo": "554822", "payOperation": "payment", "payMethod": "card", "totalAmount": 1789600, "currency": "CZK", "closePayment": true, "returnUrl": "https://vasobchod.cz/return-gateway", "returnMethod": "POST", "cart": [ { "name": "Nakup na vasobchod.cz", "quantity": 1, "amount": 1789600, "description": "Lenovo ThinkPad Edge E540" }, { "name": "Shipping", "quantity": 1, "amount": 100, "description": "Doprava PPL" } ], "description": "Nakup na vasobchod.cz (Lenovo ThinkPad Edge E540, Doprava PPL)", "merchantData": "c29tZS1iYXNlNjQtZW5jb2RlZC1tZXJjaGFudC1kYXRh", "language": "CZ", "dttm": "20160922055931", "signature": "Id1L7USzARempdGwowfFQemgAAopyDnKf6DJ5axBc+fnooGhpA/oNqWn0fGiqSggPx7iRuWrRBKAxfXxtVPNtugcGhmYuQtU/FO1GmMGoFc/JtQIEIJgUqm6I6is2bPVl6ZylvCbFm2438x8xjPOBGEN5N225R6FiBFRQm8SdQqkkk3S5jlyvlJJXyKffra2YEySMDOVPPLmqrz0wZuOdWmzw8DG2oI+x3I/jaZngVywoqR7AuSLlA46T071lZ8txtytmKu6Cum8jhP+3qgw/60KnmY/FAUJCXdJaA6EJxNOUi3jrOkL6UeWxyS6uLBI6MvJd0LTgnpAph/iSBWdAg==" } ----- Thu, 22 Sep 2016 05:59:31 +0000 ----- payment/init failed, http response: 400

Vopred dakujem za pomoc.

Sveda Pavol

Mspisar commented 8 years ago

Dobrý den,

Váš požadavek jsme zaregistrovali a již je v řešení. O dalším postupu Vás bude informovat odpovědný kolega.

s pozdravem

Spisar

vzich commented 8 years ago

Dobrý den, pane Sveda, dle aplikačního logu máte chybu v podpise, prověřte především klíče, které používáte. Jak privátní klíč, který jste vygeneroval na adrese https://iplatebnibrana.csob.cz/keygen/. A veřejný klíč dostupný zde na githubu v záložce Code, pro testovací prostředí konkrétně mips_iplatebnibrana.csob.cz.pub. S pozdravem VZ

ratajskym commented 8 years ago

Doporučuji napřed implementovat triviální metodu echo

Díky ní, budete vědět, jestli máte v pořádku klíče.

Pally20 commented 8 years ago

Dobry den,

dakujem za odpoved, podla echa je to OK vid. :

----- Thu, 22 Sep 2016 10:36:58 +0000 ----- sign:bj75ayJ9VdXIdHFbB1cEBQE3EBvptCh5LciG59Xopr2KFs84EnEmC6bOR51NSJiHUwBlQGJ7BYI7zHQTB0IBz9i3QdSnyiXemkTeE2Azhi8hhE64K1MS90czewdSoDszTFSBPLefaAZDRtAlv67sR/vWI5UIhJOFYfeiSgArBAFI9jHvroSAJmRh6BGSby2S7fbW0/kG9T8MTPvArV24zzk6EDGhR9OI75DfeN/iuYsQ8rh7ID93Fyn0uWR47Bi5H4qhJDwBtO7OKCe6egL7Ux8/tXuw8je73GzFy4354dcqOS/a3iWSLQ1ShziF8s0hEGFjys6R5XWZ8Dc0AI0lBQ== ----- Thu, 22 Sep 2016 10:36:58 +0000 ----- data: { "merchantId": "M1MIPS0905", "dttm": "20160922103658", "signature": "bj75ayJ9VdXIdHFbB1cEBQE3EBvptCh5LciG59Xopr2KFs84EnEmC6bOR51NSJiHUwBlQGJ7BYI7zHQTB0IBz9i3QdSnyiXemkTeE2Azhi8hhE64K1MS90czewdSoDszTFSBPLefaAZDRtAlv67sR/vWI5UIhJOFYfeiSgArBAFI9jHvroSAJmRh6BGSby2S7fbW0/kG9T8MTPvArV24zzk6EDGhR9OI75DfeN/iuYsQ8rh7ID93Fyn0uWR47Bi5H4qhJDwBtO7OKCe6egL7Ux8/tXuw8je73GzFy4354dcqOS/a3iWSLQ1ShziF8s0hEGFjys6R5XWZ8Dc0AI0lBQ==" } ----- Thu, 22 Sep 2016 10:36:58 +0000 ----- array ( 'dttm' => '20160922123654', 'signature' => 'mKYP3upSuCeWkv9Knf3sw54Di/zMR+Y9QHr71s1cRa6n497JHKmpF0mO/FBonMHZ43kk7XhyyF/uqtrRfk4g/LAAodlTkfgmTqiQ1DduhqPm7ASuSJNQRid3h8gxupaNMexf8bmryASnpPQNwY5IusOjmsPCk27w1mjGyhPBPDEd27NE9OjfvQXVFYaqgBBep+UVcaCaEMMXnVeK2rELMJyG071JQYT3NQZ2Q5cs7vLpDCOOWReEPz6hXb84qkOFcOTTLM+Y1/Hu/XWUjPfr1a8qJLRK6ZszdIEYn6gwGDJJTvvKXsJRnwr+w+oyMYB9twYxwqehCWwyH7OsLY4IYw==', 'resultCode' => 0, 'resultMessage' => 'OK', )

Ale ak spustim init tak je to error 400 vid.:

----- Thu, 22 Sep 2016 10:50:52 +0000 ----- Data: { "merchantId": "M1MIPS0905", "orderNo": "1144", "dttm": "20160922105052", "payOperation": "payment", "payMethod": "card", "totalAmount": 15000, "currency": "CZK", "closePayment": true, "returnUrl": "http://yoga.local/lekce/done/1144", "returnMethod": "POST", "cart": [ { "name": "ZaDA A STABILIZAcNi ", "quantity": 1, "amount": 15000, "description": "ZaDA A STABILIZAcNi SYSTeM" }, { "name": "Shipping", "quantity": 1, "amount": 0, "description": "Test PPL" } ], "description": "Rezervace ID1144", "merchantData": null, "language": "CZ", "signature": "gc2p8KRltmjn6GGfcT/P+AvEW+XJN8wwO4mo5G2f2ukCB3hjNIA6KaDZ9iX+c7zJLyeciUgvkaRt8X6zpi2BQCDiclKDDLwCVNAoGHNcmDjZKKaxM3otv42gxyNZMw8MENl0wjGfD+MPZrercekl8TvB4xhvT7g0BiyU/92r/nZd5t0XTPnlHhpVA8AGCVM0yiLq3woJLHXvTcHZYwJd8vRoSuFEDk8cbp/G3ox2dRffAhF68UKoPsZmPt3nKJxdeES/OkdSiHTw+lXk5yUSl8WSowmXSKsrvsUAtep31fMC92QhEUmYZpyNbUqRzkafUgU2YoYgZ7hAmyOCBsT3nw==" } ----- Thu, 22 Sep 2016 10:50:52 +0000 ----- payment/init failed, http response: 400

signature vytvaram takto:

public function signPaymentInitData($data, $privateKey, $privateKeyPassword) {

    $cart2Sign = $data["cart"][0]["name"] . "|" . $data["cart"][0]["quantity"] . "|" . $data["cart"][0]["amount"] . "|" . $data["cart"][0]["description"] . "|"
            . $data["cart"][1]["name"] . "|" . $data["cart"][1]["quantity"] . "|" . $data["cart"][1]["amount"] . "|" . $data["cart"][1]["description"];

    $data2Sign = $data["merchantId"] . "|" . $data["orderNo"] . "|" . $data["dttm"] . "|" . $data["payOperation"] . "|" . $data["payMethod"] . "|" . $data["totalAmount"]
            . "|" . $data["currency"] . "|" . $data["closePayment"] . "|" . $data["returnUrl"] . "|" . $data["returnMethod"] . "|" . $cart2Sign . "|" . $data["description"];

    $data2Sign = $data2Sign . "|" . $data["language"];

    if ($data2Sign [strlen($data2Sign) - 1] == '|') {
        $data2Sign = substr($data2Sign, 0, strlen($data2Sign) - 1);
    }

    return $this->sign($data2Sign, $privateKey, $privateKeyPassword, "payment/init sign");
}

Stavim sa ze je to nejaka prkotina, ale ja ju tam nevidim.

Dakujem vopred za pomoc

Sveda Pavol

Pally20 commented 8 years ago

Zdravim

skusam vseliako, ale bez uspechu :( , vypisujem cely postup... Skusal som v closePayment zmenit "true" na "1", ale tiez bez vysledku :(

----- Thu, 22 Sep 2016 15:23:18 +0000 -----

Data: array ( 0 => array ( 'name' => 'Rezervace Místa', 'quantity' => 1, 'amount' => 246000, 'description' => 'ZÁDA A STABILIZAČNÍ SYSTÉM', ), )

----- Thu, 22 Sep 2016 15:23:18 +0000 -----

data2Sign: M1MIPS0905|2702e74f|20160922152318|payment|card|246000|CZK|1|http://www.namastery.cz/rezervace/2702e74f|POST|Rezervace Místa|1|246000|ZÁDA A STABILIZAČNÍ SYSTÉM|Rezervace ID: 2702e74f|c29tZS1iYXNlNjQtZW5jb2RlZC1tZXJjaGFudC1kYXRh|CZ

----- Thu, 22 Sep 2016 15:23:18 +0000 -----

Data: { "merchantId": "M1MIPS0905", "orderNo": "2702e74f", "dttm": "20160922152318", "payOperation": "payment", "payMethod": "card", "totalAmount": 246000, "currency": "CZK", "closePayment": 1, "returnUrl": "http://www.namastery.cz/rezervace/2702e74f", "returnMethod": "POST", "cart": [ { "name": "Rezervace Místa", "quantity": 1, "amount": 246000, "description": "ZÁDA A STABILIZAČNÍ SYSTÉM" } ], "description": "Rezervace ID: 2702e74f", "merchantData": "c29tZS1iYXNlNjQtZW5jb2RlZC1tZXJjaGFudC1kYXRh", "language": "CZ", "signature": "ZeVmkLHyMwxTNQjZIzkpcNVdyscZRmzx9ZhgB+grmGQGuGio1Anq8wkFPCpBpt1Ml76SML4wtu0jQZML5N7AVypYrxjhArGzzAwBzUYD/lBuEddZMqjjgLbDgjwcYXko1XoDRRj5NwsYDYeQZlIbjvzdvmdgJ4lAzAXjrF/h/MkfQf+v2Sf5YHocRjFtYhv0S7v/miTyxGB3OC2riWTj3ztrdDwmJahTYsGetUb0nOejXGrznHZI4O4m4qij5p0CUNL6btCdX3BzLpZcbnm4FH6WHLrA5+Qm/Gelkmm7RbjEm6nSeWdGxGDuMAw2SnUxMKBf30j6vPqV/LScXjUnAw==" }

----- Thu, 22 Sep 2016 15:23:18 +0000 -----

payment/init failed, http response: 400

Pally20 commented 8 years ago

Tak nasiel som problem po usilovnych hodinach....

je to v "closePayment", skusal som vsetko mozne, ale nenapadlo by ma, ze ked je vyzadovana hodnota boolen tak ze to mam dat do "" , stymto zapisom mi to funguje: "closePayment": "true",

Sveda

MirecX commented 6 years ago

toto by malo byt v komentari v demo kode. Pouzivajte string "true" a nie boolean true. Spravil som rovnaku chybu.