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