django - 我如何知道用户使用 Stripe Checkout.js 选择什么计划?

标签 django stripe-payments checkout

我用订阅按钮列出了我们的所有计划,如下(django 模板语法):

  {% 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()

但那时我没有计划 ID 可以传回 Stripe。 :/。

我这样做是不是错了?

最佳答案

Stripe 结账脚本所做的就是将 token 插入表单中的隐藏字段,然后将整个表单提交到您的服务器。如果您需要任何其他信息(例如计划),也应该将其包含在表单中:

<form method="POST" action=".">
    {% csrf_token %}
    <input type="hidden" name="plan" value="{{ plan.id }}">
    <script....>
</form>

现在您可以通过 request.POST['plan'] 访问该计划。

关于django - 我如何知道用户使用 Stripe Checkout.js 选择什么计划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32715681/

相关文章:

php - 取消设置一些 WooCommerce 结账账单字段和一页结账插件

python - 本地化 Pandas 日期时间索引时出现 NonExistentTimeError

python - 将标签分配给Django ORM多对多关系中的对象

javascript - 如何避免在第二次调用后在 ajax 上追加重复项?

javascript - Stripe : How to set up recurring payments without plan?

php - 如何在结帐页面上显示 WooCommerce 购物车商品?

python - 一对多关系Django

php - Stripe curl 命令行 POST

javascript - 使用 Reactjs Stripe 自定义表单

在市集合并两个结帐