Docs

Підтвердження замовлення

Підтвердження замовлення

У v2 виконуйте лише замовлення, пов'язане зі збереженою сесією. До обробки JSON виконайте повну перевірку початкового тіла й підпису: обмеження розміру, довірений вибір секрету за ID ключа, вікно 300 секунд, точні підписані ID і тип події, порівняння HMAC за сталий час. Відхиляйте повторювані заголовки підпису й невідомі ключі. Зберігайте нескомпрометовані старі секрети для наявних доставок.

Для виконання приймайте payment_session.paid, потім серверним секретом отримайте GET /v2/payment-sessions/:id. Вимагайте PAID і збіг збережених ID сесії, externalId, проєкту, режиму, валюти та початкової ціни з точними десятковими порівняннями. Test не оплачує Live. Перевіряйте переможну спробу в складі сесії; не виконуйте окремо її дочірній рахунок.

В одній транзакції БД збережіть унікальний ID події в потрібній області й один раз позначте замовлення оплаченим, додавши завдання на виконання до вихідної черги. Обмежте унікальність і на рівні замовлення: різні події не мають видавати його двічі. Повертайте 2xx після надійного збереження; тимчасові помилки БД чи читання стану допускають повтор. Перевірені тестові події отримують 2xx, але не виконують замовлення.

Перехід браузера, клієнтський стан, знімок, хеш чи квитанція на перевірці недостатні. Для v1 використовуйте збережену прив'язку рахунку, авторизоване читання v1 та контракт invoice.paid. Див. дедуплікацію.