Integrations · payments · booking
Online payment intake for a booking platform
Client:
NDA
Category: Integrations
Stack: PHP (custom backend), payment gateway, webhook, queues
Timeline: 2–3 weeks
Problem
Booking without prepayment turned into a problem: some clients simply did not show up, and support had to reconcile payments for every order by hand.
Constraints
Both partial and full payments and refunds on cancellation had to be handled without losing payment status on repeated or delayed gateway webhook notifications.
What I did
- Creating a payment when a booking is placed, passing along the amount and purpose
- Receiving payment webhook notifications with signature verification
- Idempotent handling of repeated notifications — booking status never duplicates or "flips back"
- Refunds on booking cancellation with status sync
- Booking-to-payment reconciliation with no manual support work
Architecture
Booking
→ Payment gateway
→ Webhook receiver
→ Idempotent handler
→ Booking status
Result
Booking payment became transparent: the client pays at checkout, the booking status updates automatically, and support no longer reconciles payments by hand.
What can be reused
Idempotent payment-gateway webhook handler
Partial-payment and refund logic
Booking-to-payment reconciliation with no manual work