【问题标题】:Need to create checkout session GraphQL + Django需要创建结帐会话 GraphQL + Django
【发布时间】:2021-01-29 08:19:29
【问题描述】:

我需要为 Stripe Checkout 创建一个会话。根据 Stripe Checkout Docs:

在您的服务器上添加一个端点以创建一个结帐会话。结帐会话控制您的客户在 Stripe 托管的付款页面中看到的内容,例如订单项、订单金额和货币以及可接受的付款方式。在响应中返回 Checkout Session 的 ID 以引用客户端上的 Session。

我正在努力在 Graphene(用于 Django 实现的 GraphQL 包装器)中创建此服务。

这是文档显示的示例(Flask):

21@app.route('/create-session', methods=['POST'])
22def create_checkout_session():
23    try:
24        checkout_session = stripe.checkout.Session.create(
25            payment_method_types=['card'],
26            line_items=[
27                {
28                    'price_data': {
29                        'currency': 'usd',
30                        'unit_amount': 2000,
31                        'product_data': {
32                            'name': 'Stubborn Attachments',
33                            'images': ['https://i.imgur.com/EHyR2nP.png'],
34                        },
35                    },
36                    'quantity': 1,
37                },
38            ],
39            mode='payment',
40            success_url=YOUR_DOMAIN + '?success=true',
41            cancel_url=YOUR_DOMAIN + '?canceled=true',
42        )
43        return jsonify({'id': checkout_session.id})
44    except Exception as e:
45        return jsonify(error=str(e)), 403

我知道如何让前端(反应)工作,并且知道如何在每次用户想要购买东西时请求这个创建会话 ID,但我被困在创建会话服务的 GraphQl 服务器实现上。本质上,我想将上面的代码转换为 GraphQL 等价物。我想知道我是否需要为此服务创建模型?任何能让我开始的事情都会有所帮助!

【问题讨论】:

  • 在这种特殊情况下,使用 GraphQL 可能不适合您。 GraphQL 是一种工具,可用于更新/改变 your 数据库中的对象。在这种情况下,您只需要一个创建 Checkout Session 的 API 端点,如您帖子中的示例所示。不会有任何查询或突变要做,因此 GraphQL 的真正目的/需求不存在。我个人的建议是维护一个 graphql 端点来管理您的应用程序特定对象/资源的状态,以及一个单独的 REST 端点来创建 Checkout Session。
  • 非常感谢您的解释!我确实尝试创建一个单独的 REST 端点,但它一直说“获取”不允许。我现在再试一次。快速提问,REST 端点可以在我创建 GraphQL 端点的同一个 Django 项目中吗?
  • 可以。您需要设置路由,以便用于两个端点的 URL 不同。

标签: django graphql stripe-payments graphene-python graphene-django


【解决方案1】:

会话需要 cookie。更好的方法是将 Auth Bearer 令牌与请求一起使用,以通过 GraphL POST 查询和突变在您的请求中模拟会话行为。

如果您想使用基于 cookie 的会话,请在 graphql 中创建会话。

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 2012-02-28
    • 2021-04-14
    • 2021-06-24
    • 1970-01-01
    • 2022-01-05
    • 2018-09-10
    • 1970-01-01
    相关资源
    最近更新 更多