Javascript 如何在django项目中的签出会话之后检索条带订阅id?
这是我的问题。我对django项目进行了条带订阅,并使用了checkout会话方法。我想在付款后检索条带订阅id,将其放在我的客户模型上,以便我可以为客户创建取消订阅方法,因为条带提供的方法需要此id:Javascript 如何在django项目中的签出会话之后检索条带订阅id?,javascript,python,django,stripe-payments,stripe-subscriptions,Javascript,Python,Django,Stripe Payments,Stripe Subscriptions,这是我的问题。我对django项目进行了条带订阅,并使用了checkout会话方法。我想在付款后检索条带订阅id,将其放在我的客户模型上,以便我可以为客户创建取消订阅方法,因为条带提供的方法需要此id: stripe.Subscription.modify( *sub_id*, cancel_at_period_end=True ) 或 问题是除了我的stripe帐户之外,我在任何地方都找不到id,在那里我有我所需要的所有信息,但我找不到如何在付款完成后通过代码检索它。 我需要在我的客
stripe.Subscription.modify(
*sub_id*,
cancel_at_period_end=True
)
或
问题是除了我的stripe帐户之外,我在任何地方都找不到id,在那里我有我所需要的所有信息,但我找不到如何在付款完成后通过代码检索它。
我需要在我的客户模型中填写“stripe\u sub\u id”字段,以便使cancel方法能够工作
下面是创建签出会话的方法
@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)})
这是我激活会话的脚本
//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
要执行内部操作,您还可以使用
有了这个ID,您就可以从服务器上使用来包含订阅
的详细信息以及扩展[]=subscription
//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);
});
});
});