De integratie van PCI DSS-tokenisatie in een betalingsapplicatie vereist geen weken ontwikkelingswerk. De PCI Proxy EU SDK biedt gedocumenteerde clientbibliotheken voor de meest gangbare back-endtalen en stelt ontwikkelaars in staat tokenstromen veilig te implementeren zonder directe PAN-verwerking. Deze gids toont de belangrijkste integratiestappen voor Node.js, Python en PHP met volledig PCI-conforme API-aanroepen.
Waarom de back-endintegratie geen PAN mag verwerken
Het fundamentele ontwerpprincipe voor een PCI-conforme integratie is: de PAN mag nooit via de back-endcode van de handelaar gaan. Wanneer het betaalformulier op de clientpagina (browser of app) staat, moeten kaartgegevens rechtstreeks naar de PCI Proxy EU-kluis worden overgedragen via de client-side JavaScript-SDK of een gehoste betaalpagina, zonder de server van de handelaar te doorkruisen. De server ontvangt alleen het token.
Deze scheiding heeft directe gevolgen voor het PCI-bereik: wanneer er geen PAN de server raakt, valt de server buiten de CDE. Dat betekent geen versleutelingsverplichtingen voor databases, geen ASV-scans voor die server, geen specifiek toegangscontrolebeleid voor betalingsgegevens. Het back-end gebruikt het token om transacties te initiëren, en alleen de PCI Proxy EU-kluis beheert de werkelijke toegang tot de PAN.
Node.js-integratie: een tokengebaseerde betaling initiëren
Het back-endvoorbeeld laat zien hoe een betaling via PCI Proxy EU met een token wordt gestart dat de client eerder heeft ontvangen:
// PCI Proxy EU Node.js Integratie const axios = require('axios'); async function processPayment(token, amount, currency) { const response = await axios.post( 'https://api.pci-proxy.eu/v1/charge', { token: token, // token ontvangen van de client amount: amount, // in centen (bijv. 1000 = 10,00 EUR) currency: currency, // ISO 4217 (bijv. 'EUR') merchantId: process.env.PCI_PROXY_MERCHANT_ID, }, { headers: { 'Authorization': `Bearer ${process.env.PCI_PROXY_API_KEY}`, 'Content-Type': 'application/json', }, } ); return response.data; // { transactionId, status, authCode } } // Gebruik app.post('/checkout', async (req, res) => { const { token, amount } = req.body; // PAN nooit hier const result = await processPayment(token, amount, 'EUR'); res.json({ success: true, transactionId: result.transactionId }); }); Python-integratie: tokengebaseerde belasting
# PCI Proxy EU Python Integratie import requests import os def process_payment(token: str, amount: int, currency: str) -> dict: """ Initieert een betaling via PCI Proxy EU. Geen PAN in deze code: alleen veilig tokenbeheer. """ response = requests.post( 'https://api.pci-proxy.eu/v1/charge', json={ 'token': token, 'amount': amount, 'currency': currency, 'merchantId': os.environ['PCI_PROXY_MERCHANT_ID'], }, headers={ 'Authorization': f"Bearer {os.environ['PCI_PROXY_API_KEY']}", 'Content-Type': 'application/json', }, timeout=30 ) response.raise_for_status() return response.json() # Django/Flask View Voorbeeld def checkout_view(request): token = request.POST.get('token') # Van de client, geen PAN amount = int(request.POST.get('amount')) result = process_payment(token, amount, 'EUR') return JsonResponse({'success': True, 'id': result['transactionId']}) PHP-integratie: abonnementsbetaling met token
<?php
// PCI Proxy EU PHP Integration
class PciProxyClient {
private string $apiKey;
private string $merchantId;
private string $baseUrl = 'https://api.pci-proxy.eu/v1';
public function __construct(string $apiKey, string $merchantId) {
$this->apiKey = $apiKey; $this->merchantId = $merchantId; } public function charge(string $token, int $amount, string $currency): array { // Geen PAN hier: alleen token en bedrag $ch = curl_init($this->baseUrl. '/charge'); $payload = json_encode([ 'token' => $token, 'amount' => $amount, 'currency' => $currency, 'merchantId' => $this->merchantId, ]); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer '. $this->apiKey, 'Content-Type: application/json', ], ]); $response = curl_exec($ch); curl_close($ch); return json_decode($response, true); } } // Abonnementsverlenging met opgeslagen Token $client = new PciProxyClient($_ENV['PCI_PROXY_API_KEY'], $_ENV['MERCHANT_ID']); $token = $db->getTokenForSubscription($subscriptionId); // Opgeslagen Token, geen PAN $result = $client->charge($token, 1999, 'EUR');?> Veelgestelde vragen
Moet ik specifieke SDK-versies gebruiken?
PCI Proxy EU stelt officieel onderhouden clientbibliotheken beschikbaar voor Node.js (npm), Python (PyPI) en PHP (Composer). Het wordt aanbevolen altijd de nieuwste stabiele versie te gebruiken, omdat updates doorgaans beveiligingspatches en verbeteringen voor nieuwe betalingsstandaarden bevatten. Voor andere talen (Java, Go, Ruby) is directe REST API-integratie met een standaard HTTP-clientbibliotheek mogelijk.
Hoe beheer ik fouten bij tokenisatie?
De PCI Proxy EU API geeft gestandaardiseerde HTTP-foutcodes terug: 400 voor ongeldige parameters, 401 voor authenticatiefouten, 422 voor verwerkingsfouten (bijv. geweigerde kaart). Het is belangrijk voor elk fouttype geschikte fallback-mechanismen te implementeren: bij een autorisatieweigering toont u de gebruiker een gebruiksvriendelijke melding en biedt u de optie een nieuwe kaart in te voeren. Alle API-fouten moeten intern worden gelogd, zonder gevoelige gegevens op te nemen.
Hoe test ik de integratie zonder echte kaarten?
PCI Proxy EU biedt een sandboxomgeving met test-API-sleutels en testkaartnummers. In de sandboxomgeving kunt u de volledige tokenisatiestroom simuleren — tokengeneratie, belasting, terugbetaling, annulering — zonder echte transacties te genereren. De SDK bevat specifieke testkaarten voor verschillende scenario's (autorisatie geslaagd, weigering, 3DS vereist) die volledige integratietests mogelijk maken zonder productiegegevens.
Klaar om met de integratie te beginnen? Raadpleeg de PCI Proxy EU-documentatie.Ontdek PCI Proxy EU.
Hulp nodig bij PCI-naleving?
Ons team helpt u uw CDE in kaart te brengen, het juiste SAQ te kiezen en tokenisatie te implementeren met gegevensresidentie in de EU.
Neem contact op