从 Stripe checkout 传递金额以查看 Django 中的函数
Pass amount from Stripe checkout for to view function in Django
我有几个 classes 我们卖了,我正在设置 Stripe。如果我只有一个 class 在视图中有固定价格,一切都很好,但我有 6 个 class 需要能够收费。我能否将值从模板表单传递到视图,以便我可以使用相同的视图收取不同的金额?
这是我的代码,适用于单个 class:
查看
def charge(request):
if request.method != 'POST':
return redirect('training')
if 'stripeToken' not in request.POST:
messages.error(request, 'Uh oh, something went wrong, please try again!')
return redirect('training_classes')
customer = stripe.Customer.create(
email=request.POST['stripeEmail'],
source=request.POST['stripeToken'],
)
amount = 2000
stripe.Charge.create(
customer=customer.id,
currency='usd',
amount=amount,
description='Food Handlers Card'
)
messages.success(request, 'Success')
return redirect('training')
形式
<form action="{% url 'charge' %}" method="POST">
{% csrf_token %}
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ key }}"
data-image="/img/documentation/checkout/marketplace.png"
data-name="Food & beverage Association of San Diego County"
data-description="Food Handlers Card"
data-amount="2000"
data-allow-remember-me="false"
data-label="Pay As Member">
</script>
</form>
对于我们提供的 classes,我需要一些这样的表格,但它们的价格不同。任何帮助是极大的赞赏。谢谢。
您想在包含 Stripe Checkout 的表单中添加额外的输入,以将额外的值传回您的控制器:
<form action="{% url 'charge' %}" method="POST">
{% csrf_token %}
<input type="hidden" name="amount" value="2000"></input?
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ key }}"
data-image="/img/documentation/checkout/marketplace.png"
data-name="Food & beverage Association of San Diego County"
data-description="Food Handlers Card"
data-amount="2000"
data-allow-remember-me="false"
data-label="Pay As Member">
</script>
</form>
然而,这通常被认为是不安全的,因为客户可以修改金额。
你通常想要做的是传递一些关于客户购买的信息(如 SKU/产品代码)并将其作为隐藏输入传递,或者甚至更好地将这些信息保存在某种服务器端会话状态。
服务器端您可以通过 request.POST
字典访问任何这些值,例如 request.POST['amount']
我有几个 classes 我们卖了,我正在设置 Stripe。如果我只有一个 class 在视图中有固定价格,一切都很好,但我有 6 个 class 需要能够收费。我能否将值从模板表单传递到视图,以便我可以使用相同的视图收取不同的金额?
这是我的代码,适用于单个 class:
查看
def charge(request):
if request.method != 'POST':
return redirect('training')
if 'stripeToken' not in request.POST:
messages.error(request, 'Uh oh, something went wrong, please try again!')
return redirect('training_classes')
customer = stripe.Customer.create(
email=request.POST['stripeEmail'],
source=request.POST['stripeToken'],
)
amount = 2000
stripe.Charge.create(
customer=customer.id,
currency='usd',
amount=amount,
description='Food Handlers Card'
)
messages.success(request, 'Success')
return redirect('training')
形式
<form action="{% url 'charge' %}" method="POST">
{% csrf_token %}
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ key }}"
data-image="/img/documentation/checkout/marketplace.png"
data-name="Food & beverage Association of San Diego County"
data-description="Food Handlers Card"
data-amount="2000"
data-allow-remember-me="false"
data-label="Pay As Member">
</script>
</form>
对于我们提供的 classes,我需要一些这样的表格,但它们的价格不同。任何帮助是极大的赞赏。谢谢。
您想在包含 Stripe Checkout 的表单中添加额外的输入,以将额外的值传回您的控制器:
<form action="{% url 'charge' %}" method="POST">
{% csrf_token %}
<input type="hidden" name="amount" value="2000"></input?
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ key }}"
data-image="/img/documentation/checkout/marketplace.png"
data-name="Food & beverage Association of San Diego County"
data-description="Food Handlers Card"
data-amount="2000"
data-allow-remember-me="false"
data-label="Pay As Member">
</script>
</form>
然而,这通常被认为是不安全的,因为客户可以修改金额。
你通常想要做的是传递一些关于客户购买的信息(如 SKU/产品代码)并将其作为隐藏输入传递,或者甚至更好地将这些信息保存在某种服务器端会话状态。
服务器端您可以通过 request.POST
字典访问任何这些值,例如 request.POST['amount']