from rest_framework import serializers from .models import PaymentRecord, WebhookEvent class PaymentRecordSerializer(serializers.ModelSerializer): booking_id = serializers.IntegerField(source="booking.id", read_only=True) class Meta: model = PaymentRecord fields = ( "id", "booking_id", "stripe_payment_intent_id", "stripe_charge_id", "amount", "currency", "status", "created_at", "updated_at", ) class CreatePaymentIntentSerializer(serializers.Serializer): booking_id = serializers.IntegerField() currency = serializers.CharField(required=False, default="usd", max_length=8) class MockWebhookSerializer(serializers.Serializer): stripe_event_id = serializers.CharField(max_length=255) event_type = serializers.ChoiceField( choices=( "payment_intent.processing", "payment_intent.succeeded", "payment_intent.payment_failed", "charge.refunded", ) ) stripe_payment_intent_id = serializers.CharField(max_length=255) payload = serializers.JSONField(required=False, default=dict) class WebhookEventSerializer(serializers.ModelSerializer): class Meta: model = WebhookEvent fields = ("id", "stripe_event_id", "event_type", "processed", "processed_at", "created_at")