Я предполагаю, что вы уже используете Stripe webhooks
для перехвата ответов API?
Если это так, самый простой способ работы с веб-крючками Stripe - использовать библиотеку интеграции Django для Stripe, такую как пинакс-полоса или полоса .Требуется немного настройки, но оно того стоит.Эти библиотеки предоставляют модели Django, которые предоставляют сопоставления для объектов JSON API Stripe, таких как Customer
и Subscription
, и содержат строки идентификаторов, которые Stripe отправляет в своих ответах API.Эти модели выступают в качестве посредников, что упрощает связывание ответов JSON Stripe с моделями вашего собственного приложения, такими как Users
и Orders
(с дополнительным преимуществом, что вы можете иметь все данные о событиях Stripe в базе данных вашего проекта).
Затем вы можете написать представление, которое автоматически обновляет ваши экземпляры модели Django, когда ответ Stripe API попадает на ваш URL-адрес webhook:
# urls.py
...
path('webhooks/', myviews.webhooks, name='webhooks'),
# views.py
import json
from django.conf import settings
from pinax.stripe import Customer
def webhooks(request):
import stripe
stripe.api_key = settings.STRIPE_SECRET_KEY
event_json = json.loads(request.body.decode())
if event_json['type'] == 'order.created':
...
# parse the JSON to get the customer's Stripe ID,
# and check if it has the relevant order item, then...
Customer.objects.get(stripe_id='12345678')
user = Customer.user # Django user model
user.groups.add(act_group)
Возможно, есть более элегантные способы для анализа различных событий, но выполучить общее представление.Я также отмечаю, что ни одна из упомянутых мной библиотек не имеет конкретной модели для ответов Order
Stripe.Но, вероятно, вам это не понадобится, если вы можете получить необходимую информацию из Order
веб-сайта Stripe для поиска соответствующих заказов и пользователей в вашей базе данных.