Betalingen
Betalingen met Wealth Reader
Wealth Reader maakt het mogelijk om een onveranderlijke betalingsorder van de backend voor te bereiden en de bankautorisatie te voltooien in een speciale beveiligde widget (PSD2 /PIS - Payment Initiation Services). De APItoegangssleutel, gevoelige begunstigdenaccounts en interne verbindingsgegevens worden nooit aan de browser geleverd.
De deterministische sandbox maakt integratie mogelijk zonder echt geld te verplaatsen, maar wordt niet met een parameter geactiveerd: het is een aparte implementatie met een eigen basis-URL en toegangssleutel, die Wealth Reader op verzoek verstrekt (zie Beveiliging en tests). In de sandbox retourneert profile-institutions één gesimuleerde bank. Het veld expected_mode wisselt niet van omgeving: het controleert alleen of je de verwachte omgeving aanroept en retourneert 409 payment_mode_mismatch als deze niet overeenkomt.
De beschikbaarheid van een bank voor aggregatie vereist niet dezelfde beschikbaarheid voor betalingsinitiatie. In productie biedt de Wealth Reader catalogus van instellingen dekking in Spanje en heel Europa.
Architectuur in twee stappen
Betalingsintegratie volgt een strikte scheiding van verantwoordelijkheden in twee stappen:
sequenceDiagram autonumber actor Usuario as Gebruiker participant Front as Frontend (Commerce) participant Back as Backend (Commerce) participant API as API Wealth Reader participant Widget as Widgetbetalingen participant Banco as Bank (SCA) Note over Back,API: Vorige stap (alleen beheerde profielen) Back->>API: POST /payments/?action=profile-institutions API-->>Back: Profielcatalogus (institution_code) Note over Back,API: Stap 1: Het creëren van de onveranderlijke intentie (Server-to-Server) Back->>API: POST /payments/?action=create (met X-API-Key en Idempotency-Key) API-->>Back: 201 met payment.id + payment.widget.token vluchtig Note over Front,Widget: Stap 2: Laden en autoriseer in de widget (browser) Back->>Front: Bezorging payment.id en payment.widget.token Front->>Widget: WealthReaderPayments.mount(...) of load-payments.js Widget->>Usuario: Toont de onveranderlijke bank, het bedrag en de betalingsomschrijving Usuario->>Widget: Betaling autoriseren Widget->>Banco: Doorverwijzing / App naar App (SCA) Banco->>API: Terugkeer van de SCA naar de callback van Wealth Reader API-->>Widget: Technische bevestiging van de autorisatie Note over Back,API: Financiële verzoening en bevestiging loop Naar terminale toestand Back->>API: POST /payments/?action=status API-->>Back: payment_status: not_initiated | pending | settled | ... end
- Stap 1 (Secure Backend): Je server creëert een betalingsintentie (
POST /payments/?action=create) met jeX-API-Key, eenIdempotency-KeyenContent-Type: application/json. In dit gesprek zijn het bedrag (amount_minor, in centen), de munteenheid (currency, tegenwoordig slechtsEUR), de begunstigde (beneficiary.nameenbeneficiary.iban), de betalingsomschrijving op het afschrift (reference), de interne referentie (customer_reference) en de toegestane weboorsprong (allowed_origin) onveranderlijk vastgelegd. Die zes velden zijn verplicht, en het lichaam is een strikte whitelist: elk niet-erkend veld keert terug422 invalid_request. - Antwoord:
201met{"success": true, "payment": {…}}— of200als het een idempotente herhaling is. De intentie-ID komt inpayment.iden de vluchtige token van de widget inpayment.widget.token. - Stap 2 (Frontend van de transactie): De browser mountt de widget met het officiële
load-payments.js-script of deWealthReaderPayments.mount()functie, waarbij alleen depayment.idenpayment.widget.tokenworden geleverd. De gebruiker selecteert zijn bank (als deze niet vooraf was geselecteerd in de bedoeling) en voltooit de sterke authenticatie (SCA) in de bankinterface. - Financiële bevestiging: Je backend vraagt de staat met
POST /payments/?action=status, waarvan het lichaam precies{"payment_intent_id": "<id>"}is. Geen webhook: Het pollt totdat het een terminale toestand bereikt.
Twee betalingsmodellen
Wealth Reader ondersteunt twee modellen, afhankelijk van de behoeften van het bedrijf:
- Standaardintegratie voor handelaren (Eigen begunstigde):
- De handelaar bepaalt vrij de naam en IBAN van de begunstigde, het bedrag, de munteenheid (
EUR), het concept en de orderreferentie. - Je kunt filteren welke banken beschikbaar worden gesteld aan de gebruiker met
allowed_institution_codesof de hele catalogus toestaan.
- De handelaar bepaalt vrij de naam en IBAN van de begunstigde, het bedrag, de munteenheid (
- Beheerde profielen (zoals
cruz_roja_demo):- Ontworpen voor donaties en openbare demonstraties.
- De server stelt de officiële bestemmingsrekeningen in om ervoor te zorgen dat de fondsen alleen naar het goede doel kunnen worden gestuurd (bijvoorbeeld het Spaanse Rode Kruis met bedragen tussen
0,01 EURen1,00 EUR).
Geïntegreerde directory van bankentiteiten
Wealth Reader biedt een uniforme catalogus van Europese entiteiten die zijn voorbereid voor betalingsinitiatie via PSD2 door:
GET https://api.wealthreader.com/payments/entities/?country=ES
Het stelt u in staat om de lijst van banken te verkrijgen met hun gestandaardiseerde namen, logo's, ondersteunde overboekingsmethoden en technische vereisten (zoals de noodzaak om de IBAN van de schuldenaar aan de betaler op te vragen). Het ondersteunt de filters country, search (alias q), code, payment_method, limit en offset.
Dit eindpunt is openbaar: het vereist geen X-API-Key. Het verzenden ervan draagt niets bij en verbruikt een aanroep van je toegangscodequotum.
Gebruik deze codes altijd zoals ze in codekomen. Het creëren van de intentie valideert de allowed_institution_codesopmaak, maar controleert niet of ze in de catalogus bestaan: verkeerd gespelde code faalt niet bij het aanmaken en verschijnt later als een lege bankplocker.
interaction_status: completed geeft alleen aan dat de technische interactie op het scherm is beëindigd. De betaling wordt alleen als definitief afgewikkeld beschouwd wanneer payment_status settledwaard is. De mogelijke waarden van payment_status zijn not_initiated, pending, settled, rejected, cancelled, expired, failed en unknown; het specificeert ze Status, periodieke statusconsultatie en verzoening.
Scheiding van verantwoordelijkheden
- De betalingstoegangssleutel (
X-API-Key) wordt alleen van server naar server gebruikt. Deze mag nooit worden opgenomen in frontend- of openbare repositories. - De browser ontvangt alleen de identificatie van de intentie en een kortstondige vluchtige token gekoppeld aan de oorsprong HTTPS.
- De widget kan het bedrag, de geldeenheid, de begunstigde, het concept of de geautoriseerde instellingen niet wijzigen.
- Het sluiten van de modal of widget is geen vervanging voor het opvragen van de betalingsstatus in de backend.
- Betalingen delen geen toegangssleutels, tokens of callbacks met het bankaggregatieproduct van Wealth Reader.
Toegangssleutels en oproepquotum
Je betalingstoegangssleutel moet het product PAYMENTS ingeschakeld hebben; zo niet, dan reageert de API 403 payments_not_allowed. Een ontbrekende of verkeerd geformatteerde toegangssleutel keert 401 invalid_api_keyterug.
Elke geauthenticeerde oproep verbruikt één eenheid van de cumulatieve teller van je API -sleutel. Het is een levenslange teller, zonder tijdsvenster en zonder automatische aanvulling: wanneer deze op is, beantwoorden alle betalingsgesprekken 429 api_limit_reached permanent totdat de limiet wordt verlengd. Het wordt niet opgelost door te wachten of opnieuw te proberen. Als je een hoog volume verwacht—of een publieke demo, waarbij elke pagina-laad één aanroep kost—spreek dan met Wealth Reader af over de limiet voordat je publiceert.
Volgende stap
Ga verder met Integratie en widget.