47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
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")
|