90209ebef1
- Create NaloGO receipt when code-only gifts (no recipient) are paid via any gateway provider, not just directed gifts - Add receipt_uuid and receipt_created_at columns to guest_purchases for persistent DB-level dedup (covers PENDING_ACTIVATION and code-only paths where no Transaction exists at receipt time) - Use SELECT ... FOR UPDATE in try_fulfill_guest_purchase to prevent concurrent webhook double-processing race condition - Expand idempotency guard to include code-only gifts already in PAID status - Add db.refresh after PENDING_ACTIVATION nalogo call to guard against inner rollback expiring the ORM object