Files
SMANAGE/gvsds/apps/payment/serializers.py
T
2026-06-16 11:55:14 +08:00

62 lines
3.1 KiB
Python

from rest_framework import serializers
from gvsds.common.Serializer import PascalCaseSerializer, PascalCaseModelSerializer
from gvsds.apps.payment.models import PaymentGatewayConfig, PaymentTransaction
class GatewayConfigSerializer(PascalCaseModelSerializer):
class Meta:
model = PaymentGatewayConfig
fields = ['TenantUUID', 'Platform', 'AppID', 'MchID', 'NotifyURL', 'ReturnURL', 'ConfigExtra', 'ConfigStatus', 'ConfigDefault', 'CreateTime']
read_only_fields = ['CreateTime']
class GatewayConfigCreateSerializer(PascalCaseSerializer):
Platform = serializers.CharField()
AppID = serializers.CharField(required=False, default='')
MchID = serializers.CharField(required=False, default='')
APIKeyEncrypted = serializers.CharField(required=False, default='', source='APIKey')
PrivateKeyEncrypted = serializers.CharField(required=False, default='', source='PrivateKey')
PublicKeyEncrypted = serializers.CharField(required=False, default='', source='PublicKey')
CertPath = serializers.CharField(required=False, default='')
CertKeyPath = serializers.CharField(required=False, default='')
NotifyURL = serializers.CharField(required=False, default='')
ReturnURL = serializers.CharField(required=False, default='')
ConfigExtra = serializers.DictField(required=False, default=dict)
SetDefault = serializers.BooleanField(default=False)
class PaymentRequestSerializer(PascalCaseSerializer):
Platform = serializers.CharField()
Amount = serializers.DecimalField(max_digits=18, decimal_places=4)
Subject = serializers.CharField(required=False, default='')
Body = serializers.CharField(required=False, default='')
Method = serializers.CharField(default='jsapi')
OpenID = serializers.CharField(required=False, default='')
ClientIP = serializers.CharField(required=False, default='')
Extra = serializers.DictField(required=False, default=dict)
ExpireMinutes = serializers.IntegerField(default=30)
class RefundRequestSerializer(PascalCaseSerializer):
OutTradeNO = serializers.CharField()
Amount = serializers.DecimalField(max_digits=18, decimal_places=4)
Reason = serializers.CharField(required=False, default='')
Platform = serializers.CharField(required=False)
Extra = serializers.DictField(required=False, default=dict)
class TransferRequestSerializer(PascalCaseSerializer):
Platform = serializers.CharField()
Amount = serializers.DecimalField(max_digits=18, decimal_places=4)
PayeeAccount = serializers.CharField(required=False, default='')
PayeeName = serializers.CharField(required=False, default='')
Description = serializers.CharField(required=False, default='')
TransferType = serializers.CharField(default='wallet')
Extra = serializers.DictField(required=False, default=dict)
class TransactionSerializer(PascalCaseModelSerializer):
class Meta:
model = PaymentTransaction
fields = ['TenantUUID', 'Platform', 'TransactionType', 'OutTradeNO', 'OutRefundNO', 'ChannelTransactionID', 'TotalAmount', 'Currency', 'TransactionStatus', 'Subject', 'PayTime', 'CreateTime']
read_only_fields = ['CreateTime', 'PayTime']