Przejdź do głównej zawartości

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');
ParametrOpis
service_nameNazwa serwisu z ustawień Punktu Płatności
secret_hashTajny 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

ParametrTypWymaganyOpis
valuestringTakKwota płatności (format: "10.00")
url_successstringTakURL przekierowania po udanej płatności
url_failstringTakURL przekierowania po nieudanej płatności
url_ipnstringTakURL do powiadomień IPN
descriptionstringNieOpis transakcji widoczny dla klienta
customstringNieWł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();
}

Więcej informacji