Транзакцията минава, поръчката - не
Webhook-ът от банката не е свързан с order статуса. Парите тръгват, поръчката увисва между „в кошницата“ и „платена“.
Клиентът стига до плащане. Въвежда картата. Натиска „Плати“ - и нищо не се случва. Или още по-лошо: парите тръгват, поръчката не се записва. В 90% от случаите това не е проблем на банката. Това е проблем на интеграцията. Ние я изграждаме така, че плащането да е естествено продължение на продажбата, а не нейна спирачка.
Целият ви маркетинг, цялата ви рекламна стратегия, целият ви продуктов опит - всичко се събира в един единствен бутон. Ако той не работи безупречно, всичко преди него губи смисъл.
Повечето търговци разбират, че имат проблем едва когато е твърде късно. Ето как изглеждат най-честите технически пропуски - преди клиентът да напише първото оплакване.
Webhook-ът от банката не е свързан с order статуса. Парите тръгват, поръчката увисва между „в кошницата“ и „платена“.
Липсва идемпотентен ключ. Един бутон „Плати“, натиснат два пъти, генерира две оторизации към една и съща карта.
Клиентът затваря таба по време на 3DS. Поръчката стои в „pending“ до безкрайност - нито отказана, нито потвърдена.
Невалидни обратни URL-и, лош MID, липсваща обработка на 3DS. Банката връща интеграцията за корекции.
Магазинът разчита основно на cash on delivery. Резултатът: откази на пратки, замразен оборотен капитал, нула продажби извън България.
Изграждаме цялата логика зад него: state machine, retry, идемпотентност, обратни webhook-и, reconciliation и пълно покритие на 3DS сценариите.
Шест етапа. Никакви предположения. Всеки сценарий - тестван, преди да види първата истинска карта.
B2B, нискомаржови продукти, международни плащания - всеки случай иска различна архитектура.
BORICA, Stripe, Paysera, PayPal, директен виртуален POS - критерият е „подходящ за вас“, не „популярен“.
Защитени ключове, обработка на отговорите, retry логика, идемпотентни заявки, чисти state machines.
PSD2 / SCA съвместимост, рисково-базирана автентикация, без излишно триене за добрите клиенти.
Успешен · неуспешен · прекъснат · повторен · timeout · refund · partial capture - всеки сценарий минава ръчно.
Първите реални транзакции се следят на живо. Alarms за грешки > праг. SLA за реакция.
BORICA · Stripe · Paysera · PayPal · директен виртуален POS - всеки има своите силни страни. Избираме този, който пасва на маржа, географията и потребителския ви профил.
Разминаването между която и да е от тях създава „висящи“ поръчки. Правилната интеграция държи трите в синхрон - във всяко състояние на плащането.
Изпраща заявка, поддържа state machine, реагира на webhook-и за всеки изход.
Криптира, верифицира 3DS, маршрутизира към издателя, връща ясни кодове.
Авторизира, capture-ва, изпраща settlement - със същия order ID през целия цикъл.
Картовите данни никога не минават през вашия сървър. Всяка стъпка от плащането е криптирана, подписана и логнатa - съобразно PSD2, SCA и PCI DSS изискванията на европейските регулатори.
Всеки байт между браузъра, магазина, gateway-а и банката пътува през TLS 1.3 с актуални cipher suites. Картови данни не се записват - само еднопосочни токени.
Production ключовете живеят в secret manager (Vault / KMS), не в кода и не в .env. Разделение на live / test среди, ротация по график, отделни webhook signing secrets за всяка интеграция.
WooCommerce, OpenCart, Shopify, Magento или custom build - стабилната интеграция зависи от това как е настроена връзката между магазина, банката и логиката за обработка на поръчките.
Не „още един метод на плащане“. Това са сигналите, че сегашната ви схема вече ви струва пари - всеки ден.
Договори, прекъснати плащания, диагностика на сегашна интеграция, срокове за внедряване - кратки и конкретни отговори.
Правим анализ на текущата ви интеграция и ви показваме къде точно изтичат клиентите - кой webhook не пристига, кой код за грешка не се обработва, кой timeout убива транзакцията.