Платежи Stripe делают что-то при успешной оплате Django

У меня есть приложение о размещении рекламы и по умолчанию я сделал срок действия для

каждая реклама (30 дней) теперь я хочу использовать stripe для продления срока действия.

что у меня есть на данный момент, это оформление заказа, но я хочу, чтобы при успешной оплате я обновил базу данных.

представление моего кассового аппарата :


class StripeCheckoutView(APIView):
    def post(self, request, *args, **kwargs):
        adv_id = self.kwargs["pk"]
        adv = Advertise.objects.get(id = adv_id)
        try:
            adv = Advertise.objects.get(id = adv_id)
            checkout_session = stripe.checkout.Session.create(
                line_items=[
                    {
                        'price_data': {
                            'currency':'usd',
                             'unit_amount': 50 * 100,
                             'product_data':{
                                 'name':adv.description,

                             }
                        },
                        'quantity': 1,
                    },
                ],
                metadata={
                    "product_id":adv.id
                },
                mode='payment',
                success_url=settings.SITE_URL + '?success=true',
                cancel_url=settings.SITE_URL + '?canceled=true',
            )
            return redirect(checkout_session.url)
        except Exception as e:
            return Response({'msg':'something went wrong while creating stripe session','error':str(e)}, status=500)

Модели:


# Create your models here.
class Advertise(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="advertise")
    category = models.CharField(max_length= 200, choices = CATEGORY)
    location = models.CharField(max_length= 200, choices = LOCATIONS)
    description = models.TextField(max_length=600)
    price = models.FloatField(max_length=100)
    expiration_date  = models.DateField(default = Expire_date, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True, blank=True, null=True)
    updated_at = models.DateTimeField(auto_now=True, blank=True, null=True)
    #is_active

    class Meta:
        ordering = ['created_at']


    def __str__(self):
        return self.category

Итак, я хочу проверить, успешно ли прошел платеж, и если да, то продлить дату истечения срока действия этого Adv.

Заранее спасибо.

Для выполнения заказов с помощью Stripe Checkout вам необходимо настроить веб-крючки[1] и прослушивать событие checkout.session.completed[2], которое возникает, когда сессия оформления заказа успешно завершена. Более подробную информацию можно найти в этом руководстве[3].

Между тем, судя по вашему вопросу, похоже, что вы строите сценарий повторяющихся платежей для своих клиентов. Я могу предложить вам взглянуть на API Stripe Billing и Subscriptions[4]. Вы можете отслеживать активные подписки с помощью webhooks, следуя этому руководству[5].

[1] https://stripe.com/docs/webhooks

[2] https://stripe.com/docs/api/events/types#event_types-checkout.session.completed

[3] https://stripe.com/docs/payments/checkout/fulfill-orders

[4] https://stripe.com/docs/billing/subscriptions/build-subscriptions

[5] https://stripe.com/docs/billing/subscriptions/webhooks#active-subscriptions

Вернуться на верх