我能够通过Stripe成功完成测试订阅付款。但是,当我检查我的Postgresql用户数据库表时,我发现在签出和条带客户创建过程中,条带id和条带订阅id被保存到一个新用户。所需的行为是将这两条数据添加到当前登录用户的配置文件中。我正在使用一个自定义的AbstractUser模型,并怀疑问题就在那里。我很感激在正确的方向上解决这个问题
下面是我的相关代码片段:
# users/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
pass
# add additional fields in here
stripeid = models.CharField(max_length=255)
stripe_subscription_id = models.CharField(max_length=255)
# users/forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ('username', 'email')
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = UserChangeForm.Meta.fields
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
model = CustomUser
add_form = CustomUserCreationForm
form = CustomUserChangeForm
admin.site.register(CustomUser, CustomUserAdmin)
# pages/views.py
import os
from django.shortcuts import render, get_object_or_404, redirect
from django.urls import reverse_lazy
from django.views import generic
from django.views.generic import TemplateView
from django.http import HttpResponse
from django.contrib.auth.decorators import login_required, user_passes_test
from users.models import CustomUser
import stripe
stripe.api_key = os.environ.get('STRIPE_SECRET_KEY')
def checkout(request):
if request.method == 'POST':
stripe_customer = stripe.Customer.create(email=request.user.email, source=request.POST['stripeToken'])
plan = 'redacted' # MONTHLY plan ID from Stripe subscriptions
if request.POST['plan'] == 'yearly':
plan = 'redacted' # YEARLY plan ID from Stripe subscriptions
else:
subscription = stripe.Subscription.create(customer=stripe_customer.id,
items=[{'plan':plan}])
customer = CustomUser()
customer.user = request.user
customer.stripeid = stripe_customer.id
customer.membership = True
customer.cancel_at_period_end = False
customer.stripe_subscription_id = subscription.id
customer.save()
return redirect('home')
})
谢谢你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐