Python 从Django视图返回Stripe Session.id

Python 从Django视图返回Stripe Session.id,python,django,stripe-payments,Python,Django,Stripe Payments,我试图在我的django网站上实现条带支付API。 在my cart.html页面中,我有一个按钮,可以转到我的签出视图,并从购物车中创建产品和价格: def checkout(request): customer = request.user.customer order = Order.objects.get(customer=customer) items = order.orderitem_set.all() prices =[] for item

我试图在我的django网站上实现条带支付API。 在my cart.html页面中,我有一个按钮,可以转到我的签出视图,并从购物车中创建产品和价格:

def checkout(request):
    customer = request.user.customer
    order = Order.objects.get(customer=customer)
    items = order.orderitem_set.all()
    prices =[]
    for item in items:
        product =stripe.Product.create(
            name = item.product.name,
            description= item.product.description
        )
        price = stripe.Price.create(
            product= product.id,
            unit_amount=int(item.product.price.amount)*100,
            currency='gbp',
        )
        prices.append(price.id)

    line_items=[]
    for item, price in zip(items,prices):
            line_items.append({'price':price,'quantity':item.quantity}),
    session = stripe.checkout.Session.create(
    payment_method_types=['card'],
    line_items=line_items,

    mode='payment',
    success_url='http://127.0.0.1:8000/SUCCESS/?session_id={CHECKOUT_SESSION_ID}',
    cancel_url='http://127.0.0.1:8000/'
    )
然后我必须重定向到Stripes checkout,我想从购物车上的按钮调用它,但我不确定如何将SessionId从视图返回到模板并调用它


非常感谢您的帮助。

通常您会将会话ID传递到视图中,或者使用异步请求从后端创建会话。例如:

从django.exe导入渲染
def构建签出会话(客户):
#使用现有代码创建产品、价格等。。。
session=stripe.checkout.session.create(…)
返回会话
def签出_视图(请求):
会话=构建\签出\会话(客户=请求.用户.客户)
返回呈现(请求'checkout.html',{'session_id':session.id})
然后,在checkout.html中:


const sessionID=“{{session_id}}”;
常量条带=条带(“pk_测试_12345”)//把你的钥匙放在这里
document.getElementById('checkExputton')。addEventListener('click'(evt)=>{
evt.preventDefault();
stripe.redirectToCheckout({sessionId:sessionId});
});

我还想指出的是,与每次创建产品和价格不同,您可以将特定数据传递到结帐会话中,如图所示:

刚刚解决了问题,但这更干净,非常感谢!工作是一种享受