IframeШаг 2 из 2
Настройте backend
Получайте нормализованные банковские данные на своём сервере и корректно подтверждайте callback.
Сначала выполните контрольный список frontend. Виджет не передаёт банковские данные через postMessage: он отправляет их сюда, методом POST.
Чек-лист интеграции
0 из 41. Создайте URL callback
Опубликуйте на своём сервере HTTPS-эндпоинт, который принимает POST с телом JSON.
Обработав всё необходимое, ответьте HTTP 200 со следующим JSON:
{
"status": "ok"
}
Если вы вернёте другой код статуса или другой JSON, виджет не сообщит frontend, что поток завершился корректно.
Считайте operation_id идемпотентным: повторная доставка не должна создавать две операции в вашей системе.
2. Что приходит в POST
Тело — тот же JSON, что у POST /entities/ в справочнике OpenAPI. Поля, нужные чтобы сопоставить операцию:
| Поле | Назначение |
|---|---|
success |
true, если чтение завершилось успешно. |
payload |
Нормализованные данные (счета, портфели, карты, …). |
statistics.operation_id |
operation_id, который сгенерировал ваш frontend. |
statistics.token |
Учётные данные на хранении для последующих обновлений (если включена токенизация). |
statistics.code |
Код учреждения (bbva, caixabank, …). |
statistics.SESSION |
Идентификатор сессии, полезен в тикете поддержки. |
statistics.warnings |
Предупреждения, которые не отменяют чтение (например, пустой продукт). |
Сокращённый пример:
{
"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"
}
}
Полная схема payload — в OpenAPI. Не предполагайте, что каждый ключ всегда присутствует: это зависит от product_types и от того, что есть у пользователя в учреждении.
3. Свяжите домен, callback и ключ API
В кабинете клиента свяжите:
- домен, с которого загружается виджет (origin вашего frontend);
- URL callback, который вы только что создали;
- ваш
api_key.
Пока домен не зарегистрирован, виджет не работает.
4. Проверьте поток
Откройте страницу, которая загружает виджет, и войдите:
| Имя пользователя | Пароль | Результат |
|---|---|---|
MOCKDATA |
любой | Успешное чтение с анонимизированными примерными данными. Callback получает JSON с success: true. |
MOCKOTP |
любой | Воспроизводит запрос двухфакторной аутентификации. |
MOCKLOGINKO |
любой | Воспроизводит ошибку входа. Callback не вызывается. |
Если у вас нет приветственного письма, запросите его на support@wealthreader.com.
Если хотите посмотреть POST до того, как эндпоинт появится у вас, создайте временный URL в сервисе вроде https://pipedream.com/ и укажите его как callback.
5. Обновление данных (необязательно)
На этом этапе у вас интеграция one-shot: одно чтение каждый раз, когда пользователь открывает виджет.
Если нужен ночной пакет или кнопка «Обновить», снова вызовите API с token и code, которые вы сохранили из callback. Не запрашивайте имя пользователя и пароль повторно.
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'
Внимательно смотрите коды ошибок: не повторяйте запрос при неверном пароле; при обслуживании учреждения повтор допустим.
Если token перестаёт работать (смена пароля или новый 2FA), снова откройте виджет, передав это значение в wr_conf.token, чтобы пользователь мог повторно пройти аутентификацию.