SimBank
Симуляция эквайринга для Bounty. Денег не двигает, карты не проверяет, чеков не выпускает.
Зачем
Способ приёма российских карт за тайские объекты — открытый вопрос проекта (В-3). Пока на него нет ответа, писать интеграцию не с чем, а путь оплаты сервису нужен целиком: бронь подтвердили — гость платит — сервис узнал. Этот модуль закрывает ровно этот путь и будет заменён настоящим провайдером.
Как это работает
| 1 | Сервер создаёт платёж: POST /v1/payments |
|---|---|
| 2 | Гость уходит на /pay/{id} |
| 3 | Платит картой или по коду СБП |
| 4 | Возвращается на return_url?payment_id=… |
| 5 | Сервер спрашивает GET /v1/payments/{id} |
Пятый шаг главный: состояние платежа сервис узнаёт на нашем сервере, а не из адреса возврата. Адрес человек правит руками, и «оплачено» в нём не значит ничего. Настоящие провайдеры устроены так же.
Создать платёж
POST /v1/payments
X-Simbank-Secret: <общий секрет>
{
"order_id": "BK-000123",
"amount_minor": 1250000,
"currency": "THB",
"description": "Вилла Sunset, 3 ночи",
"return_url": "https://mybounty.org/ru/trips/<id>",
"webhook_url": "https://api.mybounty.org/v1/payments/callback"
}
Уведомление
Когда платёж проходит, модуль отправляет POST на
webhook_url с заголовком X-Simbank-Signature —
это HMAC-SHA256 тела запроса на общем секрете. Уведомление нужно для
случая, когда человек закрыл вкладку и в магазин не вернулся.
Чего здесь нет
Реквизиты карт не сохраняются нигде: форма проверяет длину и выбрасывает их. Возвратов, выплат и чеков модуль не умеет — они появятся вместе с настоящим эквайрингом.