Wpis z mikrobloga

Czy ktoś tutaj korzysta z API Przelewy24.pl?

Już na wejściu mam problem.
Wg dokumentacji dostęp do API jest zabezpieczony przez Basic Auth.

Test połączenia. REST korzysta ze standardu autoryzacji "basicAuth", gdzie login i hasło to, odpowiednio, ID konta w P24 i klucz API (klucz do raportów) uzyskany z sekcji “Moje dane”.


Tak więc generuję sobie:

$basicAuth = base64_encode("id_konta:klucz_API");
a potem już próbuję się wbić do sandboxa:

$curl_opt = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $basicAuth",
"Content-Type: application/json",

"cache-control: no-cache"
)
);

(oczywiście idkonta i kluczAPI wyciągnięte z panelu sandboxa).

Problem taki, że zwraca mi błąd 401, a wszystko zrobione zgodnie z instrukcją.. Ma ktoś jakiś pomysł?

#przelewy24 #php #api
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@helenamamzawal: Próbowałem z % i z konkretnym IP - cały czas 401 :-(
Ale dokument tożsamości mam jeszcze nie zweryfikowany, więc może o to chodzi..

Tym bardziej, że nie działa np. generator linku - przekierowuje na stronę główną panelu...
  • Odpowiedz
Spróbuj w postmanie wykonać request get do ich metody testAccess. W postmanie jest opcja podania danych basic auth w tabie authorization (typ basic auth). Robiąc to w postmanie właściwie pomijasz ryzyko błędu w kodzie a możesz sprawdzić czy masz dostęp. Oczywiście metoda nie polecana na danych produkcyjnych.
  • Odpowiedz
@husky83: może kretyńskie pytanie - ale w tym co pokazałeś wygląda to ok - więc czy napewno łączysz się z sandboxem?
Wklej może cały kod gdzieś (bez danych autoryzacyjnych) a nie tylko wycinek.
  • Odpowiedz
@silves1980: Nie mogę wkleić kodu, bo Wykop mi pisze, że zostałem zbanowany ;-)

Ale url leci sandboxowe na 100%.
Zastanawiam się czy hasło dobrze składam...
Czy 'klucz API' to na pewno to, co w 'moje dane' widnieje jako 'Klucz do raportów:', a id_konta to 'dane konta' (i login do logowania do sandboxa). Tak wynika z dokumentacji, ale pewności nie mam ;-)
  • Odpowiedz
na pastebin albo innym portalu
tak, idkonta to login (5 cyfr), a klucz do raportów to "hasło", jest inne na serwerze sandbox / produkcji.
Zadzwoń do ich działu pomocy technicznej - mogą monitorować Twoje zapytania na żywo i podpowiedzieć co robisz źle (mi przy wdrożeniu kilkukrotnie pomogli, a dwukrotnie był problem po ich stronie z popranym skonfigurowaniem mojego konta).
  • Odpowiedz
@husky83: @mDeo:
posId to jest numerek na górze panelu - 12345
hasło to jest "klucz do raportów"

Trzeba zrobić Basic Auth i wtedy zadziała, ale upewnijcie się, że macie włączone API, bo ja walczyłem, a potem się okazało, że pan musiał kliknąć u nich, żeby cokolwiek zadziałało.

Słabo generalnie.
  • Odpowiedz
@mDeo:
Nie, właśnie chciałem sprawdzić czy dokumenty klepnęli - w ogóle panel nie działa :-(

@fujiyama: u mnie w panelu praktycznie nic nie działa - Generator linku przekierowuje mnie na stronę główną, kilka dni temu wysłałem im dowód osobisty do sprawdzenia - dalej ma status informujący, że nie dostarczono dokumentu...
  • Odpowiedz
@fujiyama:
Po kontakcie z pomocą nagle magicznie zaczęło działać (chociaż twierdzą, że nic nie zrobili).
Jednak pojawia się kolejne pytanie - jak liczyć 'sign' przy składaniu zamówienia?
Dokumentacja jest tak napisana, że nie do końca rozumiem o co chodzi, a cały czas dostaję zwrotkę '{"error":"Invalid merchantId","code":400}' (a skoro merchantId to login, to musi się suma nie zgadzać)...

Obecnie robię tak, ale w dokumentacji pokazali
  • Odpowiedz
@husky83:
W dokumentacji mają fiuty md5 z JSON a naprawdę działa tak jak napisałeś. Co najlepsze w oficjalnej paczce do drupala mają jeszcze inaczej to liczone:

$crc = md5($this->postData["p24_session_id"] . "|" . $this->posId . "|" . $this->postData["p24_amount"] . "|" . $this->postData["p24_currency"] . "|" . $this->salt);
@maciek3609 @vayned
miałem nieprawidłowy sign, teraz też mam invalid merchantId. Chyba zostaje napisać na support.
  • Odpowiedz