Я перечисляю все наши планы с кнопкой подписки следующим образом (Джанго шаблон синтаксис):Как узнать, какой план пользователь выбрал с помощью Checkout.js Stripe?
{% for plan in plans %}
<tr>
<td>{{ plan.name }}</td>
<td>£{{ plan.price_human }}</td>
<td>
<form method="POST" action=".">
{% csrf_token %}
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ public_key }}"
data-image="/static/images/logo-n.png"
data-name="Product Name"
data-description="{{ plan.name }}"
data-currency="{{ plan.currency }}"
data-amount="{{ plan.price }}"
data-locale="{{ request.LANGUAGE_CODE }}"
data-email="{{ user.email }}"
data-label="{% trans 'Subscribe' %}"
data-panel-label="{% trans 'Subscribe' %}"
data-allow-remember-me="false"
>
</script>
</form>
</td>
</tr>
{% endfor %}
Затем я создаю клиента/подписки в ответ на эту форму быть вывешенным:
class SubscribePageView(generic.TemplateView):
def post(self, request, *args, **kwargs):
stripe.api_key = settings.STRIPE_SECRET_KEY
user = self.request.user
token = request.POST.get('stripeToken')
customer = stripe.Customer.create(
source=token,
plan=[[WHERE DOES THIS COME FROM??]],
email=user.email,
)
user.customer_id = customer.id
user.save()
Но в этот момент у меня нет идентификатора плана, чтобы вернуться к Stripe. : /.
Я делаю это все виды не так?
Но тогда кто-то может обмануть запрос и сказать, что они купили другой план, чем тот, который они купили? –
Но проверка Stripe ничего не делает, чтобы «купить» план или зарядить пользователя, все, что он делает, это создать токен пользователя, связанный с их кредитной картой. Вы по-прежнему выполняете фактическую покупку плана со своего серверного кода, и это тот момент, когда вы заряжаете пользователя. Поэтому, если они изменили сообщение, они все равно будут взиматься в соответствии с тем, что вы получили. –
Из [docs] (https://stripe.com/docs/checkout): «Стоит отметить, что Checkout фактически не создает сборов - он только создает токены. Вы можете использовать эти токены для создания фактического заряда на вашем сервер «. –