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.

Пов’язані шляхи

Почніть з IOSOR

Налаштуйте сувору перевірку ключів ідемпотентності для всіх серверних запитів надсилання в консолі IOSOR, щоб запобігти повторним списанням при повторних кліках у SaaS. Налаштуйте обробку вебхуків DLR та звірте статуси утримання грошових коштів із фактичним леджером. Щотижня експортуйте деталізацію використання суборендарями для точного узгодження внутрішніх кредитів із єдиним передплаченим гаманцем.

Підсумок IOSOR

Ця стаття доводить, що вбудована відправка повідомлень у SaaS не повинна створювати віртуальних гаманців, які не підкріплені реальними коштами ISV. Будь-яка активність кінцевих користувачів завжди списується з одного передплаченого балансу IOSOR, а внутрішні пакети сервісу є лише комерційною обгорткою. Оператор повинен налаштувати моніторинг у консолі, звіряти виписки ledger export за часом UTC та перевіряти статус кожного списання. Завжди транслюйте статуси леджера та DLR безпосередньо у свій інтерфейс і блокуйте дубльовані спроби через ідемпотентність. Не дозволяйте інтерфейсу показувати успішне надсилання, якщо запит не отримав підтверджений холд або фінальне списання.

Чи був матеріал корисним?

Пов’язані гіди