在条纹结帐会话中传递产品ID

时间:2020-07-17 04:25:51

标签: python stripe-payments stripe-checkout

我创建了如下所示的结帐会话:

checkout_session = stripe.checkout.Session.create(
            success_url=domain_url + 'success?session_id={CHECKOUT_SESSION_ID}',
            cancel_url=request.session['latestURL'],
            payment_method_types=['card'],
            mode='payment',
            line_items=[
                {
                    'name': 'Awesome Product',
                    'quantity': 1,
                    'currency': 'usd',
                    'amount': price,
                }
            ]
        )
        return JsonResponse({'sessionId': checkout_session['id']})
    except Exception as e:
        return JsonResponse({'error': str(e)})

我还使用条纹仪表板创建了一个产品,并具有产品ID。现在,如何在上述结帐会话中传递该产品ID,这样我的产品图片和价格信息就会显示在结帐页面中。在上面,我已经手动传递产品名称价格。我想直接将其与从条纹仪表板创建的产品链接。我该怎么办?

2 个答案:

答案 0 :(得分:0)

他们有一个名为“ product”的字段=> prod_ifxgshHhhhhlrt,当您调用Session :: create时,这是line_items字段的一部分。

因此从仪表板中获取产品ID,然后插入字段值。

答案 1 :(得分:0)

当您为产品设置价格时,它会创建一个“价格 ID”,您可以传递与特定产品相关联的价格 ID,当 checkout.session.completed 事件触发时,它将有一个 ID您可以使用它来检索 lineItems,然后这些 lineItems 将包含所购买的关联产品的列表(通过它们的价格 ID 链接)。

https://stripe.com/docs/payments/accept-a-payment#create-product-prices-upfront

示例:

line_items=[{'price': 'price_abcdefghi123456789', 'quantity': 1}]

您可以像这样使用产品 ID:

line_items=[{'price_data': {'currency': 'USD', 'product': 'prod_abcdef123456', 'unit_amount': 500}, 'quantity': 1}]

但这似乎毫无意义(并且可能不安全),因为您必须在 unit_amount 字段中提供价格。

您可以将产品添加到计划中,并以某种方式使用 plan_id,但这似乎比仅使用价格 ID(这可能是最好的解决方案)更复杂。

结帐会话中使用的订单项的 API 参考如下: https://stripe.com/docs/api/checkout/sessions/create

相关问题