Jak działa PCI Proxy
Przesyłasz nam dane karty. My dokonujemy tokenizacji, przechowujemy je w vault PCI DSS i zwracamy token. Twoje systemy nigdy nie otrzymują numeru karty.
Wysyłasz
My przechowujemy
Otrzymujesz
Przepływ w 5 krokach
Od chwili, gdy klient wpisuje dane karty, do tokenu zapisanego w Twoim back office: oto co dzieje się krok po kroku.
Dane karty wchodzą
Kasa na stronie, wywołanie API lub formularz call center
PCI Proxy przechwytuje
Odbieramy dane karty z ładunku HTTP zanim dotrą do Twoich serwerów
Tokenizacja
Szyfrujemy numer karty i generujemy unikalny token
Bezpieczny vault
Numer karty pozostaje zaszyfrowany w naszym vault PCI DSS Level 1, wyłącznie w UE
Token do Ciebie
Otrzymujesz token i używasz go do płatności, subskrypcji lub zwrotów
Co dzieje się podczas tokenizacji
Zastępujemy numer karty tokenem. W Twoich systemach nigdy nie pojawia się numer karty w postaci jawnej. Oto trzy wewnętrzne kroki.
Krok
Wykrywamy dane karty
Analizujemy przychodzące żądania i identyfikujemy numery kart w JSON, formularzach lub ładunkach multipart. Bez zmian w Twoim kodzie: podłącz swój przepływ i gotowe.
Krok
Tworzymy token
Każdy token zaczyna się od tok_pci_eu_ i zawiera cztery ostatnie cyfry, schemat oraz datę ważności. Dzięki temu Twój interfejs może wyświetlać „Visa kończąca się na 1234" bez przechowywania numeru karty.
Krok
Ten sam token, ta sama karta
Jeśli ta sama karta pojawi się ponownie, zwracamy ten sam token. Przydatne w subskrypcjach i zapisanych kartach. Mapowanie pozostaje wyłącznie w vault i nie jest udostępniane przez API.
→ POST /v1/tokenize
{
"card_number": "4111 1111 1111 1234",
"expiry": "12/26"
}
← 200 OK · 47ms
{
"token": "tok_pci_eu_a1b2c3d4e5f61234",
"last_four": "1234",
"brand": "visa",
"card_in_your_systems": false
}
Kiedy numer karty jest potrzebny
Aby autoryzować płatność, PSP potrzebuje prawdziwego numeru karty. Przesyłasz token: pobieramy kartę z vault i przekazujemy ją bezpiecznie. Ty jej nigdy nie widzisz.
Kiedy to następuje
Gdy chcesz obciążyć zapisaną kartę, wyślij token do naszego endpointu forward. Rozwiązujemy numer karty w vault i przekazujemy go do PSP przez szyfrowane połączenie. Numer nie pojawia się w Twoich logach.
Kto może to zrobić
Wyłącznie posiadacze klucza API z uprawnieniami forward lub detokenize. Możesz ograniczyć dostęp według adresu IP, środowiska i wolumenu żądań.
W pełni audytowane
Każde pobranie jest rejestrowane: kto je zainicjował, kiedy i do którego PSP. Logi są przechowywane przez co najmniej 12 miesięcy i dostępne z poziomu dashboardu lub API.
Warstwy ochrony
Każde żądanie jest uwierzytelniane
Tylko z Twoich autoryzowanych serwerów
TLS z weryfikowanymi certyfikatami
Przechowywane przez co najmniej 12 miesięcy
Dwa endpointy, przejrzysty przepływ
Uwierzytelnij się kluczem API. Jeden endpoint tworzy token, drugi używa go do płatności. JSON na wejściu, JSON na wyjściu.
/v1/tokenize Zakres: tokenize Treść żądania
{ "card_number": "4111111111111111", "expiry": "12/26", "cvv": "123" }
Odpowiedź 200 OK
{ "token": "tok_pci_eu_a1b2c3d4e5f6", "last_four": "1111", "brand": "visa", "expires_at": "2026-12-31" }
/v1/forward Zakres: forward Treść żądania
{ "token": "tok_pci_eu_a1b2c3d4e5f6", "target_url": "https://psp.eu/charge", "amount": 9900, "currency": "EUR" }
Odpowiedź (od PSP, proxied)
{ "status": "authorized", "transaction_id": "txn_9f8e7d6c", "amount": 9900, "currency": "EUR" }
Webhooki i powiadomienia
Gdy coś się wydarzy (token utworzony, płatność wysłana, błąd), wysyłamy zdarzenie w czasie rzeczywistym na Twój endpoint. Każda wiadomość jest podpisana, dzięki czemu możesz ją zweryfikować po stronie serwera.
Jeśli dostarczenie się nie powiedzie, ponowimy próbę do 5 razy z rosnącymi odstępami. Możesz też ręcznie odtworzyć zdarzenie z dashboardu w ciągu 72 godzin.
Obsługiwane typy zdarzeń
token.created Nowy token wygenerowany token.used Token wysłany do PSP token.expired Token osiągnął swój TTL token.deleted Token usunięty na żądanie forward.success PSP zwrócił 2xx forward.failure PSP zwrócił błąd Przykładowy ładunek webhooka
twoj-serwer.pl/webhooks/pci NA ŻYWO
{
"event": "token.created",
"timestamp": "2026-04-03T10:15:30Z",
"data": {
"token": "tok_pci_eu_a1b2c3d4e5f6",
"last_four": "1111",
"brand": "visa",
"merchant_id": "mrc_xyz789"
},
"signature": "sha256=4a8b9c..." // HMAC-SHA256
} Weryfikacja podpisu
Każdy webhook zawiera nagłówek X-PCI-Signature. Oblicz HMAC-SHA256 treści z Twoim sekretem i porównaj z podpisem. Jeśli się nie zgadzają, odrzuć żądanie.
SDK i sposoby integracji
SDK dla Node, Python i PHP lub Hosted Fields w iFrame. Wybierz rozwiązanie pasujące do Twojego stosu technologicznego.
JavaScript SDK
npmimport PCIProxy from '@pci-proxy-eu/js';
const pci = new PCIProxy({
merchantId: 'mrc_xyz789'
});
const { token } = await pci.tokenize({
cardNumber: '4111...'
}); Python SDK
PyPIfrom pci_proxy_eu import Client
client = Client(
merchant_id="mrc_xyz789",
api_key="sk_live_..."
)
result = client.tokenize(
card_number="4111..."
) PHP SDK
Composeruse PCIProxyEU\Client;
$client = new Client(
merchantId: 'mrc_xyz789',
apiKey: 'sk_live_...'
);
$result = $client->tokenize([
'card_number' => '4111...'
]); Bezpieczne iFrame dla kasy
Aby zachować SAQ A: pola karty są renderowane w naszych iFrame. Dane karty nigdy nie przechodzą przez Twój DOM.
<div id="card-number"></div>
<div id="card-expiry"></div>
<div id="card-cvv"></div>
<script>
PCIProxy.hostedFields({
merchantId: 'mrc_xyz789',
fields: {
cardNumber: '#card-number',
expiry: '#card-expiry',
cvv: '#card-cvv'
},
onTokenize: (result) => {
// tylko token, nigdy numer karty
console.log(result.token);
}
});
</script> Dane płatności
Dane karty nigdy na Twoim serwerze
SAQ A
Mniejszy zakres PCI
CSS
Dostosowywalny styl
Mobile
Responsywny
Gotowy do integracji?
Dowiedz się czym jest PCI Proxy, poznaj tokenizację w szczegółach lub sprawdź, jak programiści korzystają z platformy.