{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"3DS OTP","description":"Крипто-платежи для бизнеса. Принимайте USDT, платите через СБП QR. AML-проверки включены.","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"3ds-otp","__idx":0},"children":["3DS OTP"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Когда карта используется для покупки, эквайер присылает SMS с OTP-кодом."," ","У нас нет SIM — мы получаем коды напрямую из почтового ящика эквайера и"," ","выдаём через API."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"endpoint","__idx":1},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /cards/:id/otp/latest\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"пример","__idx":2},"children":["Пример"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl 'https://b2b.lumowallet.io/cards/8c7f1823-.../otp/latest' \\\n  -H 'X-API-Key: YOUR_API_KEY'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"ответ","__idx":3},"children":["Ответ"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"a1b2c3d4-...\",\n  \"cardId\": \"8c7f1823-...\",\n  \"code\": \"582130\",\n  \"maskedCard\": \"4466 ** ** 1234\",\n  \"subject\": \"3DS Verification\",\n  \"receivedAt\": \"2026-04-23T12:00:10Z\",\n  \"expiresAt\": \"2026-04-23T12:02:10Z\",\n  \"consumedAt\": null\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Если свежего OTP нет — возвращается ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"как-получать-коды-в-real-time","__idx":4},"children":["Как получать коды в real-time"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"вариант-1--поллинг","__idx":5},"children":["Вариант 1 — поллинг"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Опрашивайте эндпоинт каждые 5–15 секунд после инициации 3DS-проверки."," ","OTP живёт ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2 минуты"]}," (поле ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expiresAt"]},"). Наш поллер почты сканирует"," ","ящик каждые 15 секунд."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"вариант-2--webhook-рекомендуется","__idx":6},"children":["Вариант 2 — webhook (рекомендуется)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Подпишитесь на событие ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["card.otp_received"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"event\": \"card.otp_received\",\n  \"data\": {\n    \"cardId\": \"8c7f1823-...\",\n    \"code\": \"582130\",\n    \"receivedAt\": \"2026-04-23T12:00:10Z\",\n    \"expiresAt\": \"2026-04-23T12:02:10Z\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhooks доставляются сразу после того, как наш поллер увидел письмо."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"тестовый-режим","__idx":7},"children":["Тестовый режим"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cardsTestMode = true"]}," всегда возвращает фиксированный код ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["843903"]}," со"," ","сроком 2 минуты от текущего момента — удобно для автотестов."]}]},"headings":[{"value":"3DS OTP","id":"3ds-otp","depth":1},{"value":"Endpoint","id":"endpoint","depth":2},{"value":"Пример","id":"пример","depth":2},{"value":"Ответ","id":"ответ","depth":2},{"value":"Как получать коды в real-time","id":"как-получать-коды-в-real-time","depth":2},{"value":"Вариант 1 — поллинг","id":"вариант-1--поллинг","depth":3},{"value":"Вариант 2 — webhook (рекомендуется)","id":"вариант-2--webhook-рекомендуется","depth":3},{"value":"Тестовый режим","id":"тестовый-режим","depth":2}],"frontmatter":{"seo":{"title":"3DS OTP"}},"lastModified":"2026-04-23T20:52:51.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/cards/otp-3ds","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}