如何在React中取消Stripe的订阅

3
我使用React。当用户更改订阅计划时,我希望删除旧的订阅。这是我的代码。
导入{loadStripe,useStripe} from'@stripe/stripe-js'
const loadCheckout = async (priceId) =>{
    const docRef = await db
    .collection('customers')
    .doc(user.uid)
    .collection('checkout_sessions')
    .add({
        price:priceId,
        success_url:window.location.origin,
        cancel_url: window.location.origin,
    })
    docRef.onSnapshot(async (snap) =>{
        const {error, sessionId} = snap.data();
        if(error){
            alert(`an error occured ${error.message}`)
        }
        if(sessionId){
            const stripe = await loadStripe("pk_test_51JG0BKLXYmn2IpSgISeCDbsCNllISGA3PvEbSzBz5bpo8WTvmqI6UKCbzpxX92LKiN0hftRrobm1J6wJZPCOWSTs0081pmQFJE")
            const deleted = await stripe.subscriptions.del(
                subscription.id
              );
              console.log(deleted)
            stripe.redirectToCheckout({sessionId});
        }
    })
    
}

我的代码出现错误,提示stripe.subscriptions.del不是一个函数。如果我删除这行代码,付款就成功了。在stripe API文档中,建议使用.del(),但在这里却无法正常工作。


你如何处理更改订阅?我正在查看文档,似乎更新订阅并取消旧的订阅应该通过更新来完成? https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#changing根据这个链接: https://stripe.com/docs/billing/subscriptions/cancel 取消应立即生效,所以你不需要手动去取消旧的订阅。 - undefined
2个回答

2
您的 React 代码使用了 Stripe.js,它是一个客户端库。它无法修改订阅,只有使用秘密密钥 API 调用才能做到这一点,而 Stripe.js 并不使用该方法。
要更新/删除订阅,您需要在服务器端(在 Firebase 应用程序中)使用 stripe-node 库和您的秘密 API 密钥发出请求:https://stripe.com/docs/api/subscriptions/cancel?lang=node

0
您可以在Stripe内使用“客户门户”选项,避免后端编码。
它将生成一个链接到一个页面,在那里您的客户将能够取消订阅。
在Stripe内:计费->订阅->设置客户门户。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接