checkout delivery

Путь оплаты от кнопки до доставленного свитка

Этот внутренний зал сшивает Scroll Shop, Stripe checkout, webhook, purchase link, artifact, email, account archive, recovery, refund и deletion dry run. Здесь не продают красоту, здесь доказывают, что касса не ведёт в лабиринт.

checkout delivery lab

Собрать путь от кнопки до свитка

Выберите продукт, режим оплаты, каналы доставки и признаки прохождения. Панель покажет блокеры до live-платежей.

Delivery channels

needs_review

Standard Scroll

standard

Completed

  • product_selected
  • checkout_created
  • payment_confirmed
  • webhook_claimed
  • purchase_unlocked
  • artifact_created
  • delivery_queued
  • email_sent
  • archive_visible
  • support_recoverable

Next stages

    Tables

    reading_recordsstripe_eventsfinance_eventspurchase_linksdelivery_jobsoracle_artifactsomen_consentsdata_deletion_requests
    Next: Clear remaining warnings before opening live payments.

    Stage proof

    • Product selected: product_id и безопасная формулировка зафиксированы до оплаты.
    • Checkout created: Stripe session имеет client_reference_id, metadata и success/cancel URL.
    • Payment confirmed: Stripe сообщает payment_status=paid, сумма совпадает с tier.
    • Webhook claimed once: stripe_events защищает от дублей и повторной выдачи.
    • Purchase unlocked: purchase_links меняет status на paid/unlocked и ведёт в правильный unlock_route.
    • Artifact created: oracle_artifacts отделяет private_payload от public_payload.

    free_or_entry

    Daily Key

    /daily/shop/daily-key

    safe-share-card

    quick

    Small Scroll

    /matchmaker/shop/small-scroll

    private_pdfprint_view

    standard

    Standard Scroll

    /matchmaker/shop/standard-scroll

    private_pdfsafe-share-card

    deep

    Deep Scroll

    /shop/deep-scroll/shop/deep-scroll

    private_pdfprint_viewsafe-share-card

    premium

    Council of Oracles

    /oracle-council/shop/council-of-oracles

    private_council_pdfredacted_share_card

    premium

    Relationship Mirror

    /compatibility/shop/relationship-mirror

    private_pdf

    premium

    Year Map Scroll

    /year-map/shop/year-map-scroll

    private_year_pdfmonthly_echo_cards

    gift

    Gift Scroll

    /shop/gift-scroll/shop/gift-scroll

    gift_claim_keyrecipient_private_pdf

    membership

    Seeker Bundle

    /passport/shop/seeker-bundle

    archivemonthly_pdfecho_threads

    stages

    Доказательства прохождения

    Product selected

    product_id и безопасная формулировка зафиксированы до оплаты.

    Checkout created

    Stripe session имеет client_reference_id, metadata и success/cancel URL.

    Payment confirmed

    Stripe сообщает payment_status=paid, сумма совпадает с tier.

    Webhook claimed once

    stripe_events защищает от дублей и повторной выдачи.

    Purchase unlocked

    purchase_links меняет status на paid/unlocked и ведёт в правильный unlock_route.

    Artifact created

    oracle_artifacts отделяет private_payload от public_payload.

    Delivery queued

    delivery_jobs имеет idempotency_key, safe subject и attempts.

    Email sent

    receipt/delivery email отправлен без приватного preview.

    Archive visible

    кабинет показывает покупку только владельцу и с правильным consent.

    Support recoverable

    support может найти заказ по email/session без доступа к секретам.

    risk ledger

    Что блокирует live

    Нет Stripe Price ID

    Задать STRIPE_PRICE_* или проверенный fallback price_data.

    Нет webhook secret

    Проверить STRIPE_WEBHOOK_SECRET и live/test mode.

    Сломан success URL

    Success URL должен вести к unlock/recovery route.

    Двойной webhook

    Stripe event claim и idempotency keys обязательны.

    Нет purchase link

    Создать purchase_links запись до checkout.

    Нет delivery job

    Webhook должен ставить delivery_jobs с idempotency_key.

    Приватность в email preview

    Subject/preview только нейтральные, полный текст по ссылке.

    Public artifact leak

    Public payload whitelist и private_payload ban.

    Архив без согласия

    Отдельные consent-флаги до записи в архив.

    Нет recovery

    Support macro + recovery token + lookup по безопасным полям.

    Нет refund/recreate пути

    Decision tree: resend, recreate, refund, manual review.

    rooms

    Legendary checkout standardЕдиный стандарт: product → checkout → webhook → unlock → artifact → email → archive → support.End-to-end mapВся цепочка оплаты и доставки на одной карте.Product to checkoutКак Scroll Shop превращает формат ответа в Stripe session.Checkout session contractЧто обязано жить в metadata и client_reference_id.Webhook idempotencyПовторный Stripe event не должен выдавать второй свиток.Purchase link unlockСвязь purchase_links с результатом и recovery.Artifact deliveryPDF/share-card/gift artifact без утечки приватного текста.Receipt emailПисьмо подтверждения без личного вопроса в теме и preview.Account archiveПокупка должна появиться в кабинете владельца и не появиться у чужого пользователя.Recovery supportПотерянная ссылка должна иметь понятный путь восстановления.Refund or recreateОператор должен знать: пересоздать, переотправить, вернуть оплату или поднять инцидент.Deletion dry runПроверка удаления/анонимизации без уничтожения обязательного accounting ledger.Environment gateКакие env должны быть заданы до live-payment drill.QA matrixМатрица сценариев: happy path, cancel, failed, expired, refunded, recovery.Operator handbookЧто проверять руками перед live и после первых оплат.AI contractAI не должен решать payment, unlock, refund или owner access.World-class auditКритерии, по которым платный путь можно считать взрослым.Completion planЧто ещё нужно сделать перед рекламой и масштабированием.