from rest_framework import serializers class BazaarVerifyRequestSerializer(serializers.Serializer): orderId = serializers.CharField() purchaseToken = serializers.CharField() class BazaarStartResponseSerializer(serializers.Serializer): orderId = serializers.CharField() sku = serializers.CharField(help_text='productIdِ PurchaseRequestِ Poolakey.') amount = serializers.IntegerField(help_text='مبلغِ سفارش (تومان)، پس از کدِ تخفیف.') dynamicPriceToken = serializers.CharField( allow_null=True, help_text='JWTِ «تخفیف پویا» برای PurchaseRequest.dynamicPriceToken؛ null یعنی قیمتِ پیشخان.') class BazaarVerifyResponseSerializer(serializers.Serializer): orderId = serializers.CharField() status = serializers.CharField() valid = serializers.BooleanField() class ZarinpalCallbackResponseSerializer(serializers.Serializer): """فقط وقتی settings.ZARINPAL_REDIRECT_URL خالی باشه برگردونده می‌شه؛ وگرنه کاربر به همون URL ریدایرکت می‌شه، نه به این JSON.""" orderId = serializers.CharField() status = serializers.CharField() class TransactionSerializer(serializers.Serializer): id = serializers.CharField() gateway = serializers.CharField() status = serializers.CharField() paidAt = serializers.DateTimeField(allow_null=True) class OrderDetailResponseSerializer(serializers.Serializer): orderId = serializers.CharField() status = serializers.CharField() amount = serializers.IntegerField() transactions = TransactionSerializer(many=True) class InvoiceSerializer(serializers.Serializer): orderId = serializers.CharField() invoiceNumber = serializers.CharField(help_text='شماره‌ی فاکتور: «TD-» و شناسه‌ی سفارش، شش رقمی.') status = serializers.ChoiceField(choices=['pending', 'paid', 'failed', 'canceled', 'refunded']) provider = serializers.CharField(help_text='gateway (زرین‌پال) یا bazaar') planTitle = serializers.CharField(allow_blank=True) listPrice = serializers.IntegerField(allow_null=True, help_text='قیمتِ پایه پیش از تخفیف؛ null برای سفارش‌های پیش از ۱۴۰۵-۰۷-۰۹.') discountAmount = serializers.IntegerField(allow_null=True) discountCode = serializers.CharField(allow_blank=True) amount = serializers.IntegerField(help_text='مبلغِ پرداختی (پس از تخفیف).') currency = serializers.CharField() createdAt = serializers.DateTimeField() paidAt = serializers.DateTimeField(allow_null=True) refId = serializers.CharField(allow_blank=True, help_text='کدِ پیگیریِ پرداخت (شماره‌ی مرجعِ زرین‌پال/بازار).') class InvoiceListResponseSerializer(serializers.Serializer): invoices = InvoiceSerializer(many=True)