在 Django 中使用 Stripe API 创建产品
Creating Products with Stripe API in Django
创建我的第一个正式网站并尝试连接 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 从哪里来?找不到任何关于此的最新信息,所以我很抱歉问什么可能不是一个好问题但不知道该怎么做。谢谢!
使用 Stripe,每个 API 请求 returns 一个 JSON 响应,然后可以在相应的 API 资源中反序列化。这意味着当您调用创建产品 API you get a Product
back and when you call the Create Price 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 中设置所有这些。稍后,您自己的订单模型将在您创建结帐会话时引用这些价格和产品 ID。
如果您只想要一次性产品,那么您应该做的是在创建结帐会话时内联创建它们,方法是使用 price_data
作为 parameter。
最后,对于 URL 部分,这将是您网站的 URL,您希望客户在付款后返回该网站。这个想法是,在您的网站上付款后,您可以将您的客户直接重定向到 Stripe 上的 Checkout。一旦他们付款,Stripe 会将它们发回给您,发送给您在该电话中提供的特定 URL,以便您可以感谢他们的订单。这在文档 here 中有所介绍。类似地,URL 中的 {CHECKOUT_SESSION_ID}
部分只是一个神奇的值,当他们将客户发送回您的网站时,Stripe 将用真实的结帐会话 ID cs_test_1234567
替换它。
(如果您有后续问题,您可能想直接与 Stripe's support team 交谈)
创建我的第一个正式网站并尝试连接 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 从哪里来?找不到任何关于此的最新信息,所以我很抱歉问什么可能不是一个好问题但不知道该怎么做。谢谢!
使用 Stripe,每个 API 请求 returns 一个 JSON 响应,然后可以在相应的 API 资源中反序列化。这意味着当您调用创建产品 API you get a Product
back and when you call the Create Price 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 中设置所有这些。稍后,您自己的订单模型将在您创建结帐会话时引用这些价格和产品 ID。
如果您只想要一次性产品,那么您应该做的是在创建结帐会话时内联创建它们,方法是使用 price_data
作为 parameter。
最后,对于 URL 部分,这将是您网站的 URL,您希望客户在付款后返回该网站。这个想法是,在您的网站上付款后,您可以将您的客户直接重定向到 Stripe 上的 Checkout。一旦他们付款,Stripe 会将它们发回给您,发送给您在该电话中提供的特定 URL,以便您可以感谢他们的订单。这在文档 here 中有所介绍。类似地,URL 中的 {CHECKOUT_SESSION_ID}
部分只是一个神奇的值,当他们将客户发送回您的网站时,Stripe 将用真实的结帐会话 ID cs_test_1234567
替换它。
(如果您有后续问题,您可能想直接与 Stripe's support team 交谈)