繁体   English   中英

如何在 django 项目中结帐 session 后检索条带订阅 ID?

[英]How to retrieve a stripe subscription id after a checkout session in a django project?

这是我的问题。 我为我的 django 项目进行了条带订阅,并使用了结帐 session 方法。 我想在付款后检索条带订阅ID,将其放在我的客户model上,这样我就可以为客户取消订阅方法,因为条带给出的方法需要有这个ID:

stripe.Subscription.modify(
  *sub_id*,
  cancel_at_period_end=True
)

或者

stripe.Subscription.delete(*sub_id*)

问题是,除了在我的条带帐户中,我在其他任何地方都找不到该 ID,在那里我拥有我需要的所有信息,但在付款完成后我找不到如何通过代码检索它。 我需要在我的客户 model 中填写“stripe_sub_id”字段,这样我才能使取消方法起作用。

这是创建结帐 session 的方法

@csrf_exempt
def create_checkout_session(request):
    if request.method == 'GET':
        domain_url = 'http://127.0.0.1:8000/'
        stripe.api_key = settings.STRIPE_SECRET_KEY
        try:
            checkout_session = stripe.checkout.Session.create(
                success_url=domain_url + 'projets/success?session_id={CHECKOUT_SESSION_ID}',
                cancel_url=domain_url + 'projets/cancelled/',
                payment_method_types=['card'],
                mode='subscription',
                line_items=[
                    {
                        'price': sub_price_id,
                        'quantity': 1,
                    }
                ]
            )

            return JsonResponse({'sessionId': checkout_session['id']})
        except Exception as e:
            return JsonResponse({'error': str(e)})

这是我激活 session 的脚本

//Get stripe publishable key
fetch("/projets/config/")
.then((result) => { return result.json(); })
.then((data) => {
  // Initialize Stripe.js
  const stripe = Stripe(data.publicKey);
  console.log('fetch 1 reached'); //console check
  //Event handler
  document.querySelector("#payBtn").addEventListener("click", () => {
      // Get Checkout Session ID
      fetch("/projets/create-checkout-session/")
      .then((result) => { return result.json(); })
      .then((data) => {
        console.log(data);
        // Redirect to Stripe Checkout
        return stripe.redirectToCheckout({sessionId: data.sessionId})
      })
      .then((res) => {
          console.log(res);
      });
  });
});

希望我提供了足够的信息,提前感谢您的帮助。

虽然您应该始终收听checkout.session.completed webhook以采取内部操作,但您也可以选择使用自定义查询参数success_url中接收 Checkout session ID。

使用此 ID,您可以从您的服务器检索 session并使用扩展来包含带有expand[]=subscriptionsubscription详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM