The payment callback handled subscription and sms-wallet types but left appointment payments pending. Add a TYPE_APPOINTMENT branch that transitions the booking pending → confirmed (guarded by canTransitionTo, so an already-expired booking is skipped) and dispatches a confirmation SMS to the patient's mobile. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>