Przejdź do głównej zawartości

Pay-by-link (Słowacja)

dpay.pl umożliwia bezpośrednia integrację z bankami na Slowacji za pomoca metody white-label (Pay-by-Link). Klient jest przekierowywany bezpośrednio do wybranego banku, bez posredniej strony bramki.

Obsługiwane banki

BankChannel IDWaluta
Viamo363EUR
Postova banka354EUR
Slovenska sporitelna357EUR
Tatra banka360EUR
ePlatby VUB366EUR

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:

PoleTypOpisPrzykład
transactionTypestringTyp transakcji"transfers"
servicestringNazwa serwisu z panelu"abc123"
valuestringKwota transakcji"19.99"
currency_codestringKod waluty"EUR"
channelstringID kanalu płatności (bank)"360"
url_successstringURL po udanej płatności"https://mojsklep.pl/sukces"
url_failstringURL po nieudanej płatności"https://mojsklep.pl/błąd"
url_ipnstringURL do powiadomień IPN"https://mojsklep.pl/api/ipn"
checksumstringSuma kontrolna SHA-256(patrz niżej)
Pole channel jest wymagane

W przypadku integracji white-label pole channel jest obowiązkowe. Bez niego system nie będzie wiedziec, do którego banku przekierowac 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": "19.99",
"currency_code": "EUR",
"channel": "360",
"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 = '19.99';
$currencyCode = 'EUR';
$channel = '360'; // Tatra banka
$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;
}

Odpowiedz 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.

Budowanie selektóra bankow

<h3>Wybierz bank:</h3>
<div class="bank-selector">
<button data-channel="354">Postova banka</button>
<button data-channel="357">Slovenska sporitelna</button>
<button data-channel="360">Tatra banka</button>
<button data-channel="363">Viamo</button>
<button data-channel="366">ePlatby VUB</button>
</div>
document.querySelectorAll('.bank-selector button').forEach(btn => {
btn.addEventListener('click', async () => {
const channel = btn.dataset.channel;
const response = await fetch('/api/pay/bank', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ channel, currency_code: 'EUR' }),
});
const result = await response.json();
if (result.status === 'success') {
window.location.href = result.message;
}
});
});

Obsługa IPN

Powiadomienia IPN działają identycznie jak dla standardowych płatności. Szczegoly znajdźiesz w Obsługa IPN.

Waluta

Dla bankow słowackich używaj waluty EUR. Uzycie nieprawidłowej waluty spowoduje błąd transakcji.