IOSOR База знань
Send end-user все одно б’є в один prepaid ledger
Вбудований Send списує prepaid wallet ISV. Не вигадуйте другий ledger, який продукт не фінансує — hold, retry і idempotency лишаються чесними.
Вбудований messaging здається безкоштовним: тап Send у UI SaaS і зелена галочка. Під склом кожен успішний submit б’є в один prepaid ledger ISV. Другого wallet не з’являється від факту embed. Якщо ISV не фінансує hold, send падає з чесною product-помилкою — не з fake delivered.
Fiction accounting — типовий провал: in-app credit meter без опори на wallet IOSOR, refund у валюті SaaS при палаючому prepaid ledger, retry без idempotency з подвійним debit одного OTP. Embed ховає консоль; ISV лишається funded party.
Рядок в architecture doc: end-user send ≡ prepaid debit ISV. Кожен design review починається з нього. Перед пілотом звірте один OTP-intent у UI з одним рядком hold/debit в export — без цього join demo заборонене.
Один ledger, навіть якщо UI показує product credits
Message packs для tenant — commercial layer ISV. Вони мапляться на prepaid hold і debit одного wallet IOSOR. Баланс tenant без звірки з рядками ledger — бомба для support. Експортуйте usage щотижня проти рядків wallet.
Не відкривайте другий акаунт IOSOR на tenant, доки Partner isolation не явний контракт. Embed-пілоти живуть на одному акаунті ISV із fair-share caps.
Hold і idempotency обов’язкові на embed-шляху
Server-side send використовує idempotency keys для OTP і transactional SMS. Double-click не створює два debit на одне intent. Retry після timeout — той самий ключ до terminal DLR або mapped failure.
Якщо wallet не бере hold, поверніть insufficient-funds або paused-send. Ніколи HTTP 200 із семантикою delivered при провалі hold.
Звірте product-помилки з правдою ledger
| Сигнал UI SaaS | Правда ledger | Допустимий next step |
|---|---|---|
| Sent / delivered | Є debit + шлях DLR | Показати receipt id |
| Queued | Hold відкритий або submit прийнятий | Poll статусу |
| Failed / paused | Hold відхилений або stop-гейт | Retry лише з новим intent |
| Fake success | Немає debit / немає hold | Заборонено |
Навчіть support середньої колонки. Тікети про UI green без рядків ledger спалюють pilot week.
Handover каналів на тому ж wallet
Email або voice поруч із SMS сідають на той самий prepaid ledger, доки немає second-channel handover з підписом finance. Embed не дає безкоштовний side channel. Читайте Wallet adjacency до фліпу Live-тайла в налаштуваннях SaaS.
Пов’язані шляхи
- Handover spend другого каналу на одному wallet
- Idempotency API, retry і гроші
- Rate limits subtenant і fair share
Почніть з IOSOR
Налаштуйте сувору перевірку ключів ідемпотентності для всіх серверних запитів надсилання в консолі IOSOR, щоб запобігти повторним списанням при повторних кліках у SaaS. Налаштуйте обробку вебхуків DLR та звірте статуси утримання грошових коштів із фактичним леджером. Щотижня експортуйте деталізацію використання суборендарями для точного узгодження внутрішніх кредитів із єдиним передплаченим гаманцем.
Підсумок IOSOR
Ця стаття доводить, що вбудована відправка повідомлень у SaaS не повинна створювати віртуальних гаманців, які не підкріплені реальними коштами ISV. Будь-яка активність кінцевих користувачів завжди списується з одного передплаченого балансу IOSOR, а внутрішні пакети сервісу є лише комерційною обгорткою. Оператор повинен налаштувати моніторинг у консолі, звіряти виписки ledger export за часом UTC та перевіряти статус кожного списання. Завжди транслюйте статуси леджера та DLR безпосередньо у свій інтерфейс і блокуйте дубльовані спроби через ідемпотентність. Не дозволяйте інтерфейсу показувати успішне надсилання, якщо запит не отримав підтверджений холд або фінальне списання.
Чи був матеріал корисним?
Пов’язані гіди
- Вбудовування API vs white-label партнерський портал
SaaS, що вбудовує messaging, лишається на поверхні ISV. White-label партнерський портал — зона Partner: не змішуйте бренд, ключі й ownership ops.
- Коли cap tenant у вбудованому продукті зобов’язаний зупинити send
Fair-share caps усередині продукту ISV зобов’язані hard-stop send для tenant — ніколи не віддавайте fake delivered API 200 при ударі в стелю.