繁体   English   中英

我如何在 react 中取消 stripe 中的订阅

[英]how do I cancel Subscription in stripe inside react

我正在使用反应。 当用户更改他的订阅计划时,我想删除旧订阅。

这是我的代码。

从 '@stripe/stripe-js' 导入 {loadStripe, useStripe}

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 不是 function。如果我删除此行,代码将工作,付款成功。 在 stripe API 文档中,它说要使用 .del() 但它在这里不起作用。

你的 React 代码使用 Stripe.js,它是一个客户端库。 它不能修改订阅,只有密钥 API 调用可以执行 Stripe.js 不使用的操作。

您需要发出更新/删除订阅的请求,您需要使用 stripe-node 库和您的 API 密钥在服务器端(在您的 Firebase 应用程序中)发出请求: https : //stripe.com/docs/ api/subscriptions/cancel?lang=node

您可以在 Stripe 中使用“客户门户”选项来避免后端编码。

它将生成一个指向您的客户可以取消订阅的页面的链接。

内部 Stripe:计费 -> 订阅 -> 设置客户门户

暂无
暂无

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

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