Два клика — одна оплата: Форсаж вокруг платежного шлюза

habrahabr.ru · world
Full story

Two clicks on the pay button send two requests to the payment provider, and a single order suddenly turns into two payment sessions. The article walks through a real case of refactoring a payment integration, starting with a naive Create call and then trying local locks. Those locks fail once the service runs as several instances, so the author moves on to PostgreSQL advisory locks, idempotency and concurrent Check and Cancel handling. The stack involves some C# and a lot of PostgreSQL.

Два клика по кнопке оплаты. Два запроса к провайдеру. И внезапно один заказ превращается в две платежные сессии. В этой статье разберём реальный кейс рефакторинга платёжной интеграции: начнём с наивного Create, попробуем локальные блокировки, столкнёмся с несколькими экземплярами сервиса и доберёмся до PostgreSQL advisory locks, идемпотентности и конкурентных Check/Cancel. Немного C#, много PostgreSQL и чуть‑чуть «Форсажа». Посмотрим, как устроить гонку запросов так, чтобы победитель был только один. Press W

Read full article → Compare