Pay-by-link (Czechy)
dpay.pl umożliwia bezpośrednia integrację z bankami w Czechach za pomocą metody white-label (Pay-by-Link). Klient jest przekierowywany bezpośrednio do wybranego banku, bez pośredniej strony bramki.
Obsługiwane banki
| Bank | Channel ID | Waluta |
|---|---|---|
| Ceska sporitelna | 332 | CZK |
| mBank (CZ) | 333 | CZK |
| Komercni banka | 336 | CZK |
| Raiffeisenbank (CZ) | 337 | CZK |
| Moneta Money Bank | 340 | CZK |
| Fio Banka | 343 | CZK |
| CSOB | 346 | CZK |
| UniCredit Bank (CZ) | 349 | CZK |
Endpoint
Użyj standardowego endpointu rejestracji płatności:
POST https://api-payments.dpay.pl/api/v1_0/payments/register
Content-Type: application/json
Parametry zapytania
Wszystkie pola sa wymagane:
| Pole | Typ | Opis | Przykład |
|---|---|---|---|
transactionType | string | Typ transakcji | "transfers" |
service | string | Nazwa serwisu z panelu | "abc123" |
value | string | Kwota transakcji | "499.00" |
currency_code | string | Kod waluty | "CZK" |
channel | string | ID kanalu płatności (bank) | "332" |
url_success | string | URL po udanej płatności | "https://mojsklep.pl/sukces" |
url_fail | string | URL po nieudanej płatności | "https://mojsklep.pl/błąd" |
url_ipn | string | URL do powiadomień IPN | "https://mojsklep.pl/api/ipn" |
checksum | string | Suma kontrolna SHA-256 | (patrz niżej) |
W przypadku integracji white-label pole channel jest obowiązkowe. Bez niego system nie będzie wiedzieć, do którego banku przekierować klienta.
Generowanie checksum
Checksum generowany jest identycznie jak dla standardowej płatności:
sha256({service}|{SecretHash}|{value}|{url_success}|{url_fail}|{url_ipn})
Przykład zapytania
cURL
curl -X POST https://api-payments.dpay.pl/api/v1_0/payments/register \
-H "Content-Type: application/json" \
-d '{
"transactionType": "transfers",
"service": "abc123",
"value": "499.00",
"currency_code": "CZK",
"channel": "332",
"url_success": "https://mojsklep.pl/sukces",
"url_fail": "https://mojsklep.pl/błąd",
"url_ipn": "https://mojsklep.pl/api/ipn",
"checksum": "e3b0c44298fc1c149afb..."
}'
PHP
<?php
$service = getenv('DPAY_SERVICE');
$secretHash = getenv('DPAY_SECRET_HASH');
$value = '499.00';
$currencyCode = 'CZK';
$channel = '332'; // Ceska sporitelna
$urlSuccess = 'https://mojsklep.pl/sukces';
$urlFail = 'https://mojsklep.pl/błąd';
$urlIpn = 'https://mojsklep.pl/api/ipn';
$checksum = hash('sha256',
$service . '|' . $secretHash . '|' . $value . '|' .
$urlSuccess . '|' . $urlFail . '|' . $urlIpn
);
$payload = json_encode([
'transactionType' => 'transfers',
'service' => $service,
'value' => $value,
'currency_code' => $currencyCode,
'channel' => $channel,
'url_success' => $urlSuccess,
'url_fail' => $urlFail,
'url_ipn' => $urlIpn,
'checksum' => $checksum,
]);
$ch = curl_init('https://api-payments.dpay.pl/api/v1_0/payments/register');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if ($result['status'] === 'success') {
header('Location: ' . $result['message']);
exit;
}
Odpowiedź API
Sukces
{
"status": "success",
"message": "https://api-payments.dpay.pl/pay/redirect/abc-def-123",
"transactionId": "abc-def-123-456"
}
Klient po kliknięciu na URL z message zostanie przekierowany bezpośrednio do wybranego banku.
Obsługa IPN
Powiadomienia IPN działają identycznie jak dla standardowych płatności. Szczegóły znajdźiesz w Obsługa IPN.
Dla banków czeskich używaj waluty CZK. Użycie nieprawidłowej waluty spowoduje błąd transakcji.