commit
This commit is contained in:
3
backend/thirdparty/stripe/apps.py
vendored
3
backend/thirdparty/stripe/apps.py
vendored
@@ -3,4 +3,5 @@ from django.apps import AppConfig
|
||||
|
||||
class StripeConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'stripe'
|
||||
name = 'thirdparty.stripe'
|
||||
label = "stripe"
|
||||
|
||||
26
backend/thirdparty/stripe/migrations/0001_initial.py
vendored
Normal file
26
backend/thirdparty/stripe/migrations/0001_initial.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 5.2.7 on 2025-10-28 00:13
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Order',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('amount', models.DecimalField(decimal_places=2, max_digits=10)),
|
||||
('currency', models.CharField(default='czk', max_length=10)),
|
||||
('status', models.CharField(choices=[('pending', 'Pending'), ('paid', 'Paid'), ('failed', 'Failed'), ('cancelled', 'Cancelled')], default='pending', max_length=20)),
|
||||
('stripe_session_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('stripe_payment_intent', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
],
|
||||
),
|
||||
]
|
||||
71
backend/thirdparty/stripe/serializers.py
vendored
71
backend/thirdparty/stripe/serializers.py
vendored
@@ -1,54 +1,29 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from rest_framework import serializers
|
||||
from .models import Product, Carrier, Order
|
||||
|
||||
from ...commerce.serializers import ProductSerializer, CarrierSerializer
|
||||
from .models import Order
|
||||
|
||||
|
||||
class OrderSerializer(serializers.ModelSerializer):
|
||||
product = ProductSerializer(read_only=True)
|
||||
product_id = serializers.PrimaryKeyRelatedField(
|
||||
queryset=Product.objects.all(), source="product", write_only=True
|
||||
)
|
||||
carrier = CarrierSerializer(read_only=True)
|
||||
carrier_id = serializers.PrimaryKeyRelatedField(
|
||||
queryset=Carrier.objects.all(), source="carrier", write_only=True
|
||||
)
|
||||
# Nested read-only representations
|
||||
# product = ProductSerializer(read_only=True)
|
||||
# carrier = CarrierSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = [
|
||||
"id",
|
||||
"product", "product_id",
|
||||
"carrier", "carrier_id",
|
||||
"quantity",
|
||||
"total_price",
|
||||
"status",
|
||||
"stripe_session_id",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = ("total_price", "status", "stripe_session_id", "created_at", "updated_at")
|
||||
# Write-only foreign keys
|
||||
# product_id = serializers.PrimaryKeyRelatedField(
|
||||
# queryset=Product.objects.all(), source="product", write_only=True
|
||||
# )
|
||||
# carrier_id = serializers.PrimaryKeyRelatedField(
|
||||
# queryset=Carrier.objects.all(), source="carrier", write_only=True
|
||||
# )
|
||||
|
||||
queryset=Product.objects.all(), source="product", write_only=True
|
||||
|
||||
carrier = CarrierSerializer(read_only=True)
|
||||
carrier_id = serializers.PrimaryKeyRelatedField(
|
||||
queryset=Carrier.objects.all(), source="carrier", write_only=True
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = [
|
||||
"id",
|
||||
"product", "product_id",
|
||||
"carrier", "carrier_id",
|
||||
"quantity",
|
||||
"total_price",
|
||||
"status",
|
||||
"stripe_session_id",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = ("total_price", "status", "stripe_session_id", "created_at", "updated_at")
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = [
|
||||
"id",
|
||||
"amount",
|
||||
"currency",
|
||||
"status",
|
||||
"stripe_session_id",
|
||||
"stripe_payment_intent",
|
||||
"created_at",
|
||||
]
|
||||
read_only_fields = ("created_at",)
|
||||
|
||||
3
backend/thirdparty/stripe/views.py
vendored
3
backend/thirdparty/stripe/views.py
vendored
@@ -8,9 +8,10 @@ from rest_framework.views import APIView
|
||||
|
||||
from .models import Order
|
||||
from .serializers import OrderSerializer
|
||||
import os
|
||||
|
||||
import stripe
|
||||
stripe.api_key = settings.STRIPE_SECRET_KEY # uložený v .env
|
||||
stripe.api_key = os.getenv("STRIPE_SECRET_KEY")
|
||||
|
||||
class CreateCheckoutSessionView(APIView):
|
||||
def post(self, request):
|
||||
|
||||
Reference in New Issue
Block a user