如何取消一批Stripe订阅?

问题描述 投票:0回答:3

生意失败了,我该怎么办?仪表板不允许我使用简单的命令一次性取消批量的所有订阅和计划。

stripe-payments stripes
3个回答
3
投票

当您需要取消所有客户的订阅或至少取消其中相当数量的订阅时,我必须创建我所说的“世界末日”脚本。

步骤:

  1. 前往 https://dashboard.stripe.com/subscriptions
  2. 点击导出(如果您幸运地保留了一些客户,则可以根据您的需求进行过滤)
  3. 将订阅 ID 复制并粘贴到此脚本中,或将 csv 文件中的 ID 解析到变量中
  4. 运行它。
  5. 再次检查https://dashboard.stripe.com/subscriptions以确保它全部消失
  6. 检查 https://dashboard.stripe.com/subscription_schedules 如果您有时间表
  7. 检查 https://dashboard.stripe.com/invoices?close=false&status=open,以防您需要停止收取任何发票

fml.js

const stripe = require('stripe')('your api key goes here');

const subscriptions = [
    // paste all subscriptions ids here or parse the array from the first column of the CSV file
];

async function cancelSubscription(s) {
    try {
        const deleted = await stripe.subscriptions.del(s);
        console.log(deleted.id);
    } catch (e) {
        console.log(e)
    }
}

function delay(t, val) {
    return new Promise(function(resolve) {
        setTimeout(function() {
            resolve(val);
        }, t);
    });
}

(async () => {
    for (const sub of subscriptions) {
        await cancelSubscription(sub)
        await delay(1000) // this delay prevents going over the API limit, you can decrease it
        // but you'll miss the opportunity to say goodbye to the ids rolling through your screen
    }
})()

祝您一切顺利,并且您永远不需要使用这段代码。


0
投票

没有内置方法可以取消所有订阅。但你可以这样做:

  1. 使用此端点
  2. 列出所有订阅
  3. 然后使用此端点
  4. 取消每个订阅

在 Node.js 中,它看起来像这样:

const subscriptions = await stripe.subscriptions.list();
subscriptions.autoPagingEach(subscription => {
  await stripe.subscriptions.del(subscription.id);
});

0
投票

如果您有订阅 ID 列表,也可以使用 Stripe CLI 取消它们,如下所示:

stripe subscriptions cancel <subscription-ID> --live

更新它们以在当前期间结束时取消:

stripe subscriptions update <subscription-ID> -d cancel_at_period_end=true --live

您可能需要先更新 CLI 使用的 API 密钥,以将“所有计费资源”资源类型更新为“写入”。

© www.soinside.com 2019 - 2024. All rights reserved.