• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rejestracja płatności Przelewy24 w PHP

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
2,973 wizyt
pytanie zadane 22 maja 2021 w PHP przez Kamil423 Początkujący (350 p.)
edycja 24 maja 2021 przez Kamil423

Witam!

Od pewnego czasu próbuję dokonać rejestracji transakcji w Przelewy24, jednak po każdej próbie dostaję błąd:

{"error":"Incorrect authentication","code":401}

kod źródłowy wygląda tak:

 

<?php

$checkSum = json_encode('"sessionId":"test7","merchantId":MÓJ_ID_SPRZEDAWCY,"amount":1,"currency":"PLN","crc":"MÓJ_CRC"', JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

$json = json_decode('{
	"merchantId": MÓJ_ID_SPRZEDAWCY,
	"posId": MÓJ_ID_SPRZEDAWCY,
	"sessionId": "test7",
	"amount": 1,
	"currency": "PLN",
	"description": "test order",
	"email": "john.doe@example.com",
	"country": "PL",
	"language": "pl",
	"channel": 1,
	"sign": "' . hash('sha384', $checkSum) . '"

}');

print_r($json);

$ch = curl_init('https://sandbox.przelewy24.pl/api/v1/transaction/register');
$payload = json_encode($json,  JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = curl_exec($ch);
curl_close($ch);
echo "<pre>$result</pre>";

MÓJ_ID_SPRZEDAWCY i MÓJ_CRC zastąpiłem oczywiście prawidłowymi wartościami.

 

Co może powodować taki błąd?

 

edit:

źle generowałem sumę kontrolną (dziękuje za wskazanie błędu), niestety nadal jest problem z uwierzytelnieniem, kod wygląda teraz tak:

 

<?php

$checkSum = json_encode([
	"sessionId" => "test7",
	"merchantId" => 54918,
	"amount" => 1,
	"currency" => "PLN",
	"crc" => "dd83c740769d8880"], 
	JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

$json = json_decode('{
	"merchantId": 54918,
	"posId": 54918,
	"sessionId": "test7",
	"amount": 1,
	"currency": "PLN",
	"description": "test order",
	"email": "john.doe@example.com",
	"country": "PL",
	"language": "pl",
	"channel": 1,
	"sign": "' . hash('sha384', $checkSum) . '"

}');

print_r($json);

$ch = curl_init('https://sandbox.przelewy24.pl/api/v1/transaction/register');


$payload = json_encode($json,  JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = curl_exec($ch);
curl_close($ch);
echo "<pre>$result</pre>";

wynik:

{"error":"Incorrect authentication","code":401}

Fragment dokumentacji Przelewy24

1 odpowiedź

+2 głosów
odpowiedź 22 maja 2021 przez rafal.budzis Szeryf (85,380 p.)

A przypadkiem tutaj nie jest źle?

 

<?php
 
$checkSum = json_encode('"sessionId":"test7","merchantId":MÓJ_ID_SPRZEDAWCY,"amount":1,"currency":"PLN","crc":"MÓJ_CRC"', JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
 

Zamieniasz stringa (który nie jest JSONem bo nie ma klamerek) na stringa z JSONem. Wygląda to nieco bez sensu 

Spróbuj tak : 

<?php
 
$checkSum = json_encode([
"sessionId" => "test7",
"merchantId" => MÓJ_ID_SPRZEDAWCY,
"amount" => 1,
"currency" => "PLN",
"crc" => "MÓJ_CRC"], 
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
 

Czyli robisz tablice PHPową i dopiero ją konwertujesz na stringa ? :) 

 

komentarz 24 maja 2021 przez Kamil423 Początkujący (350 p.)
bardzo dziękuję, to faktycznie był błąd... niestety, jest ich więcej, nadaj dostaję ten sam błąd
komentarz 9 września 2021 przez ashenshugar Nowicjusz (100 p.)

Brakuje jeszcze Basic Authentication:

 

curl_setopt( $ch, CURLOPT_USERPWD, TU_TWOJE_POSID . ":" . TU_KLUCZ_API_Z_P24); 

 

Podobne pytania

0 głosów
0 odpowiedzi 1,168 wizyt
pytanie zadane 20 listopada 2018 w PHP przez Alex.Ironside Stary wyjadacz (14,900 p.)
+1 głos
1 odpowiedź 1,322 wizyt
pytanie zadane 7 maja 2018 w JavaScript przez Kacper Łochowski Początkujący (270 p.)
0 głosów
1 odpowiedź 1,643 wizyt
pytanie zadane 10 sierpnia 2019 w Sieci komputerowe, internet przez Przeprze Nowicjusz (120 p.)

93,174 zapytań

142,185 odpowiedzi

321,976 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1389p. - dia-Chann
  2. 1368p. - Łukasz Piwowar
  3. 1360p. - Łukasz Eckert
  4. 1360p. - CC PL
  5. 1344p. - Tomasz Bielak
  6. 1117p. - ssynowiec
  7. 1104p. - Michal Drewniak
  8. 1083p. - Marcin Putra
  9. 1078p. - rucin93
  10. 1071p. - rafalszastok
  11. 1054p. - Adrian Wieprzkowicz
  12. 1047p. - Piotr Aleksandrowicz
  13. 1037p. - Michał Telesz
  14. 1023p. - Mariusz Fornal
  15. 1017p. - Mikbac
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...