Я пытаюсь установить службу подписки на моем веб -сайте, используя django.from django.db import models
from django.contrib.auth.models import User
from django.utils.timezone import now
class Subscription(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
customer_id= models.CharField(max_length=255)
subscription_id = models.CharField(max_length=225, unique=True)
product_name = models.CharField(max_length=255)
price = models.IntegerField()
interval = models.CharField(max_length=50, default="month")
start_date = models.DateTimeField(null=True, blank=True)
end_date = models.DateTimeField(null=True, blank=True)
canceled_at = models.DateTimeField(null=True, blank=True)
@property
def is_active(self):
if self.end_date:
if now() < self.enddate:
return True
else:
return False
else:
return True
@property
def tier(self):
tier_mapping = {
'Basic Membership': 1,
'Premium Membership':2,
'Pro Membership':3,
}
tier = tier_mapping.get(self.product_name, None)
return tier
def __str__(self):
return f"{self.user.username} - {self.product_name} Active: {self.is_active}"
< /code>
views.py
from django.shortcuts import render, redirect, reverse
import stripe
from django.conf import settings
stripe.api_key = settings.STRIPE_SECRET_KEY
def subscription_view(request):
subscription = {
'Basic Membership' :'price_1RNgLNIoFyCdZSrgu83irObA',
'premium' :'price_1RNgLvIoFyCdZSrg9j87OiP7',
'pro' :'price_1RNgMUIoFyCdZSrgEIxgO9HP',
}
if request.method == 'POST':
if not request.user.is_authenticated:
return redirect(f"{reverse('account_login')}?next={request.get_full_path()}")
price_id = request.POST.get('price_id')
checkout_session = stripe.checkout.Session.create(
line_items=[
{
'price':price_id,
'quantity':1,
},
],
payment_method_types=['card'],
mode='subscription',
success_url = request.build_absolute_uri(reverse("create_subscription")) + f'?session_id={{CHECKOUT_SESSION_ID}}',
cancel_url=request.build_absolute_uri(f'{reverse("subscription")}'),
customer_email=request.user.email,
metadata={
'user_id': request.user.id,
}
)
return redirect(checkout_session.url, code=303)
return render(request, 'a_subscription/subscription.html', {'subscription' : subscription})
def create_subscription(request):
#create subscription object in database
return redirect('my_sub')
def my_sub_view(request):
return render(request, 'a_subscription/my-sub.html')
< /code>
Сообщение об ошибке: < /p>
Invalidrequesterror At /Подписка /запрос req_f6pvtyttfdxnif: вы
передали пустую строку для 'line_items [0] [цена]'. Мы предполагаем, что пустые значения
являются попыткой освободить параметр; однако
'line_items [0] [цена]' не может быть незаметно. Вы должны удалить
'line_items [0] [Price]' из вашего запроса или предоставить непустому значению.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... if-you-pas
Stripe InvalIdrequestError AT / Подписка / запрос REQ_F6PVTYTTFDXNIF: вы передали пустую строку для 'LINE_ITEMS [0] [PRO ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение