PHP SDK
✅ Dostępne — wersja stabilna
Oficjalna biblioteka PHP umożliwiająca integrację z API dpay.pl. Automatyzuje generowanie sum kontrolnych, rejestrację płatności oraz weryfikację powiadomień IPN.
Wymagania
- PHP 8.1 lub nowszy
- Rozszerzenie
curl - Rozszerzenie
json - Composer
Instalacja
Zainstaluj pakiet za pomocą Composera:
composer require dpay/dpay-php
Konfiguracja
Utwórz instancję klienta, podając dane z Panelu dpay.pl:
use DPay\Client;
$dpay = new DPay\Client('service_name', 'secret_hash');
| Parametr | Opis |
|---|---|
service_name | Nazwa serwisu z ustawień Punktu Płatności |
secret_hash | Tajny hash do generowania sum kontrolnych |
Rejestracja płatności
$dpay = new DPay\Client('service_name', 'secret_hash');
$payment = $dpay->registerPayment([
'value' => '10.00',
'url_success' => 'https://myshop.pl/success',
'url_fail' => 'https://myshop.pl/fail',
'url_ipn' => 'https://myshop.pl/ipn',
]);
// Przekieruj użytkownika na stronę płatności
header('Location: ' . $payment->msg);
exit;
Parametry płatności
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
value | string | Tak | Kwota płatności (format: "10.00") |
url_success | string | Tak | URL przekierowania po udanej płatności |
url_fail | string | Tak | URL przekierowania po nieudanej płatności |
url_ipn | string | Tak | URL do powiadomień IPN |
description | string | Nie | Opis transakcji widoczny dla klienta |
custom | string | Nie | Własne dane identyfikujące zamówienie |
Obsługa IPN
Weryfikacja i obsługa powiadomień Instant Payment Notification:
$dpay = new DPay\Client('service_name', 'secret_hash');
try {
$notification = $dpay->handleIPN($_POST);
if ($notification->status === 'completed') {
// Płatność zakończona sukcesem
// Zaktualizuj status zamówienia w bazie danych
}
// Odpowiedz statusem 200, aby potwierdzić odbiór
http_response_code(200);
echo 'OK';
} catch (\DPay\Exception\InvalidSignatureException $e) {
// Nieprawidłowy podpis — możliwa próba manipulacji
http_response_code(400);
echo 'Invalid signature';
}
Obsługa błędów
SDK rzuca dedykowane wyjątki, które ułatwiają obsługę różnych scenariuszy:
use DPay\Exception\ApiException;
use DPay\Exception\InvalidSignatureException;
use DPay\Exception\NetworkException;
try {
$payment = $dpay->registerPayment([...]);
} catch (NetworkException $e) {
// Problem z połączeniem sieciowym
} catch (ApiException $e) {
// Błąd zwrócony przez API dpay.pl
echo $e->getErrorCode();
echo $e->getMessage();
}