IframePasul 2 din 2
Configurați backend-ul
Primiți pe serverul dumneavoastră datele bancare normalizate și confirmați corect callback-ul.
Completați mai întâi lista de verificare frontend. Widgetul nu trimite datele bancare prin postMessage: le trimite aici, ca POST.
Checklist de integrare
0 din 41. Creați URL-ul de callback
Expuneți pe serverul dumneavoastră un endpoint HTTPS care acceptă POST cu un corp JSON.
După ce ați procesat ce este necesar, răspundeți HTTP 200 cu următorul JSON:
{
"status": "ok"
}
Dacă returnați alt cod de stare sau un JSON diferit, widgetul nu va notifica frontend-ul că fluxul s-a încheiat corect.
Tratați operation_id ca idempotent: o livrare repetată nu trebuie să creeze două operațiuni în sistemul dumneavoastră.
2. Ce ajunge în POST
Corpul este același JSON ca la POST /entities/ din referința OpenAPI. Câmpuri de care aveți nevoie pentru a potrivi operațiunea:
| Câmp | Utilizare |
|---|---|
success |
true dacă citirea s-a încheiat cu succes. |
payload |
Date normalizate (conturi, portofolii, carduri, …). |
statistics.operation_id |
operation_id generat de frontend-ul dumneavoastră. |
statistics.token |
Credențial aflat în custodie pentru reîmprospătări ulterioare (dacă tokenizarea este activă). |
statistics.code |
Codul instituției (bbva, caixabank, …). |
statistics.SESSION |
Identificatorul sesiunii, util într-un tichet de suport. |
statistics.warnings |
Avertismente care nu invalidează citirea (de exemplu un produs gol). |
Exemplu prescurtat:
{
"success": true,
"payload": {
"user_information": {
"ID": "12345678Z",
"name": "LUIS GARCIA BAQUERO"
},
"accounts": [
{
"uuid": "8076932f04f73e27fe608fee4d12fca8708dec8c",
"subtype": "checking",
"code": "ES4914651234561234567890",
"name": "Cuenta NOMINA",
"currency": "EUR",
"balances": {
"available": 14302.07,
"current": 14302.07
},
"transactions": []
}
]
},
"statistics": {
"SESSION": "A1B2C3D4E5F67890",
"execution_time": 12.4,
"warnings": [],
"operation_id": "8f1c2a6e-4b0d-4c3a-9e21-0d5b7a91c4e2",
"token": "FRJ0mHlaqZwLzu",
"code": "bbva"
}
}
Schema completă a payload este în OpenAPI. Nu presupuneți că fiecare cheie este întotdeauna prezentă: depinde de product_types și de ce deține utilizatorul la instituție.
3. Asociați domeniul, callback-ul și cheia API
În zona de clienți asociați:
- domeniul de pe care se încarcă widgetul (origin-ul frontend-ului);
- URL-ul de callback pe care tocmai l-ați creat;
api_key-ul dumneavoastră.
Până când domeniul este înregistrat, widgetul nu funcționează.
4. Testați fluxul
Deschideți pagina care încarcă widgetul și autentificați-vă:
| Utilizator | Parolă | Rezultat |
|---|---|---|
MOCKDATA |
orice | Citire reușită cu date de exemplu anonimizate. Callback-ul primește JSON cu success: true. |
MOCKOTP |
orice | Recreează o provocare în doi factori. |
MOCKLOGINKO |
orice | Recreează o eroare de autentificare. Callback-ul nu este apelat. |
Dacă nu aveți e-mailul de bun venit, cereți-l la support@wealthreader.com.
Dacă vreți să inspectați POST-ul înainte ca endpoint-ul dumneavoastră să existe, creați un URL temporar pe un serviciu precum https://pipedream.com/ și setați-l ca callback.
5. Reîmprospătarea datelor (opțional)
În acest punct aveți o integrare one-shot: o citire de fiecare dată când utilizatorul deschide widgetul.
Dacă aveți nevoie de un lot nocturn sau de un buton „actualizare”, apelați din nou API-ul cu token și code pe care le-ați stocat din callback. Nu cereți din nou numele de utilizator și parola.
curl --location 'https://api.wealthreader.com/entities/' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'code=bbva' \
--data-urlencode 'token=TOKEN_FROM_CALLBACK' \
--data-urlencode 'product_types=accounts,portfolios'
Acordați atenție codurilor de eroare: nu reîncercați o parolă invalidă; puteți reîncerca când instituția este în mentenanță.
Dacă token-ul încetează să funcționeze (schimbare de parolă sau un 2FA nou), deschideți din nou widgetul transmițând acea valoare în wr_conf.token ca utilizatorul să se poată reautentifica.