创建我的第一个适当的网站,然后尝试连接Stripe进行付款。他们的API似乎不太动态(可能读错了)。试图整合他们的结帐页面。
我对如何一次制造多个产品感到困惑。试图遍历我的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请求都返回一个JSON响应,然后可以在相应的API资源中反序列化该响应。这意味着,当您调用Create Product API时会得到Product
回报,而当您调用Create Price API时会得到Price
回报。
与您互动的大多数API资源都会有一个ID。因此对于Product
它的prod_123456
并为Price
它的price_abcdefg
。
在代码中,您需要将产品创建的结果存储在变量中,以便在创建价格时可以引用它。
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
作为一个参数。
最后,对于URL部分,这就是您要在付款后将客户发送回的网站URL。这个想法是,在您在网站上付款后,您可以将客户直接重定向到Stripe上的Checkout。付款后,Stripe会将其发送回给您,并发送到您在通话中提供的特定URL,以便您感谢他们的订单。在此处的文档中对此进行了介绍。同样,{CHECKOUT_SESSION_ID}
URL中的部分只是一个神奇的值,当Stripe将cs_test_1234567
客户送回您的网站时,Stripe将用实际的Checkout会话ID替换。
(但是,如果您有后续问题,您可能希望直接与Stripe的支持团队联系)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句