You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在立即取消Stripe订阅时按比例计算未使用费用?

Stripe立即取消订阅时按比例计算未使用金额的Java实现

要在立即取消Stripe订阅时按比例核算未使用金额,核心是通过Java SDK调用取消订阅API时,正确配置按比例计算相关参数,以下是具体实现步骤和代码示例:

关键参数说明

  • cancel_at_period_end: 设置为false,表示立即取消订阅(而非等待计费周期结束)
  • proration_behavior: 设置为CREATE_PRORATIONS,触发Stripe计算订阅剩余周期的未使用金额并生成对应费用项
  • invoice_now: 设置为true,立即生成包含按比例调整项的最终发票
  • refund: 可选参数,若需直接退款未使用部分,可设置为FULL(全额退款)或根据需求自定义退款逻辑

Java代码示例

import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.Subscription;
import com.stripe.param.SubscriptionCancelParams;

public class StripeSubscriptionService {
    public static void main(String[] args) throws StripeException {
        // 初始化Stripe API密钥
        Stripe.apiKey = "sk_test_your_secret_key";
        
        String subscriptionId = "sub_your_subscription_id";
        cancelSubscriptionWithProratedRefund(subscriptionId);
    }

    public static void cancelSubscriptionWithProratedRefund(String subscriptionId) throws StripeException {
        // 构建取消订阅参数
        SubscriptionCancelParams params = SubscriptionCancelParams.builder()
                // 立即取消订阅
                .setCancelAtPeriodEnd(false)
                // 生成按比例计算的费用项
                .setProrationBehavior(SubscriptionCancelParams.ProrationBehavior.CREATE_PRORATIONS)
                // 立即生成最终发票
                .setInvoiceNow(true)
                // 全额退款未使用的订阅金额
                .setRefund(SubscriptionCancelParams.Refund.FULL)
                .build();

        // 执行取消操作
        Subscription subscription = Subscription.retrieve(subscriptionId);
        subscription.cancel(params);
    }
}

补充说明

  • 若不需要自动退款,仅需记录按比例金额,可移除setRefund参数,后续通过返回的Subscription或关联的Invoice对象获取按比例调整的金额,再手动处理退款、抵扣等逻辑
  • 按比例金额的计算逻辑由Stripe自动完成,基于订阅剩余天数、原订阅价格等因素核算

内容的提问来源于stack exchange,提问作者user3747396

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:37:30