Ключевые темы
Связанные публичные страницы
Если нужен не только разбор, а страница продукта, API или операционного сценария, начните с этих разделов VPOS.am.
Hold должен быть отдельным типом payment intent
Preauthorization резервирует возможность оплаты, но не должен автоматически закрывать заказ как paid.
Для отеля, проката, клиники, салона или сервиса с бронированием бизнесу часто нужен депозит или резервирование суммы. Но hold отличается от обычной успешной оплаты: деньги могут быть только заблокированы, а финальный capture зависит от правил провайдера, срока и результата услуги.
Поэтому в backend лучше завести отдельный payment intent type: authorization, deposit, capture или direct payment. CRM должна видеть не только paid, но и authorized, capture_pending, captured, voided, expired и manual_review.
- не считать hold финальной оплатой;
- хранить service date, amount, currency и customer reference;
- фиксировать provider authorization reference;
- показывать оператору срок действия hold.
Capture, partial capture и void должны иметь правила
После услуги бизнесу нужно явно решить: списать всю сумму, часть суммы или снять резерв.
Главный риск preauthorization - смешать резерв, списание и отмену в одну кнопку. Если гость не приехал, услуга изменилась или сумма стала другой, backend должен проверить допустимый остаток, срок hold и правила provider contract.
Если провайдер не поддерживает partial capture или card hold, нельзя обещать такой UX в статье, на сайте или в CRM. В таком случае лучше использовать deposit payment или payment link с отдельными правилами возврата.
- проверять provider support до запуска;
- не делать capture после истечения hold;
- partial capture считать отдельной операцией;
- void не должен удалять исходный audit trail.
CRM и бухгалтерия должны видеть lifecycle целиком
Оператору нужна история: кто создал hold, когда он истекает, что captured и почему voided.
Без lifecycle-журнала поддержка не поймет, заблокирована ли сумма, списана ли она, отменена ли операция или истек срок. Для клиента это особенно чувствительно: blocked amount может выглядеть как списание, даже если бизнес еще не сделал capture.
Практичная модель связывает booking id, payment intent id, provider reference, status transitions, operator notes и reconciliation. Тогда спорные кейсы закрываются по фактам, а не по переписке.
- логировать actor, reason и timestamp для capture/void;
- связывать hold с booking или service order;
- показывать blocked, captured и released amounts отдельно;
- сверять provider report с CRM перед закрытием дня.
FAQ
Можно ли использовать preauthorization для любого vPOS?
Нет. Preauthorization, capture и void зависят от банка, платежного провайдера, договора и типа операции. Перед запуском нужно подтвердить поддержку сценария.
Чем депозит отличается от hold?
Депозит обычно является фактической оплатой с возможным возвратом, а hold резервирует сумму до capture или release. В CRM это должны быть разные статусы.
Что делать, если hold истек до оказания услуги?
Нельзя тихо списывать сумму. Нужно создать новый payment attempt, запросить оплату заново или перевести запись в manual review по правилам бизнеса.