[英]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[]=subscription
的subscription
详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.