【问题标题】:Creating Products with Stripe API in Django在 Django 中使用 Stripe API 创建产品
【发布时间】:2020-09-15 02:00:54
【问题描述】:

创建我的第一个合适的网站并尝试连接 Stripe 进行付款。他们的 API 似乎不是很动态(我可能读错了)。试图整合他们的checkout page

我对如何同时制作多个产品感到困惑。尝试遍历我的 OrderItems:

def checkout(request):
    customer = request.user.customer
    order = Order.objects.get(customer=customer)
    items = order.orderitem_set.all()
    for item in items:
        stripe.Product.create(
            name = item.name
            description= item.desc
        )
        stripe.Price.create(
            product= product.id,
            unit_amount=int(order.get_cart_total),
            currency='gbp',
        )

但被困在如何为 Price.create 声明产品 ID

对他们 API 的这一部分也感到困惑:

session = stripe.checkout.Session.create(
  payment_method_types=['card'],
  line_items=[{
    'price': '{{PRICE_ID}}',
    'quantity': 1,
  }],
  mode='payment',
  success_url='https://example.com/success?session_id={CHECKOUT_SESSION_ID}',
  cancel_url='https://example.com/cancel',

我还没有在任何东西上托管我的网站,那么我可以将 URL 设置为什么? Checkout_session 从何而来?找不到任何最新的信息,所以我很抱歉问什么可能不是一个好问题,但不知道该怎么做。谢谢!

【问题讨论】:

    标签: python django stripe-payments e-commerce


    【解决方案1】:

    使用 Stripe,每个 API 请求都会返回一个 JSON 响应,然后可以在相应的 API 资源中对其进行反序列化。这意味着,当您调用创建产品API 时,您会得到一个Product,而当您调用创建价格API 时,您会得到一个Price

    您与之交互的大多数 API 资源都有一个 ID。所以对于Product,它是prod_123456,对于Price,它是price_abcdefg

    在您的代码中,您需要将 Product 创建的结果存储在一个变量中,以便您可以在创建 Price 时引用它。

    def checkout(request):
        customer = request.user.customer
        order = Order.objects.get(customer=customer)
        items = order.orderitem_set.all()
        for item in items:
            product = stripe.Product.create(
                name = item.name
                description= item.desc
            )
            price = stripe.Price.create(
                product= product.id,
                unit_amount=int(order.get_cart_total),
                currency='gbp',
            )
    

    同样,当您尝试创建会话时,您需要确保将订单项列表设置为具有您刚刚创建的正确价格 ID。

    同样,在大多数情况下,您已经提前在 Stripe 中创建了产品和价格目录。这个想法是你已经知道你在销售哪些产品以及在哪个价格点,你在 Stripe 中设置了所有这些。稍后,您自己的订单模型将在您创建 Checkout Session 时引用这些价格和产品 ID。

    如果您只想要一次性产品,那么您应该做的是在创建结帐会话时使用price_data 作为parameter 内联创建它们。

    最后,对于 URL 部分,这将是您希望在付款后将客户送回的网站的 URL。这个想法是,在您的网站上付款后,您将您的客户直接重定向到 Stripe 上的 Checkout。一旦他们付款,Stripe 会将他们发回给您,发送到您在该电话中提供的特定 URL,以便您感谢他们的订单。这在文档here 中有介绍。同样,URL 中的 {CHECKOUT_SESSION_ID} 部分只是一个神奇的值,当 Stripe 将客户送回您的网站时,它将替换为真正的 Checkout Session id cs_test_1234567

    (如果您有后续问题,您可能想直接与 Stripe's support team 交谈)

    【讨论】:

      猜你喜欢
      • 2021-02-10
      • 2018-09-17
      • 2015-04-04
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      相关资源
      最近更新 更多