如何从Stripe计划中删除优惠券w/Laravel收银台4



我目前正在尝试实现一种方法,将人员转换为新计划。我遇到的问题是,旧计划中的优惠券会继续使用,并且不会向用户收费。每次我试图删除旧优惠券,它似乎不允许它。

protected function swapToYearlyPlan(){
    $user = Auth::user();
    // Tried this, doesn't work
    // $user->subscription()->retrieve($user->stripe_subscription)->deleteDiscount();
    // This works fine
    $user->subscription('Gold Annual Plan')->swap();
    // Tried this, doesn't work
    //$user->subscription()->applyCoupon(NULL);
    return 'Upgraded plan!';
}

思想是值得赞赏的。干杯

以下是最终起作用的内容:

protected function swapToYearlyPlan(){
    $company = Auth::user()->company;
    $customer = $company->subscription()->getStripeCustomer();
    if($customer->subscription->discount instanceof Stripe_Object){
        $customer->subscription->deleteDiscount();
    }
    $company->subscription("Gold Annual Plan")->swapAndInvoice();
    // Dealing with GST is a whole other issue
    return 'Upgraded Gold Annual plan!';
}

我在这里处理的是遗留代码,所以有很多细节还不清楚。例如,deleteDiscount方法甚至不是Laravel Cashier的一个功能,或者至少不是我正在使用的版本。该方法包含在我的项目中的另一组代码中:vendor/stripe/stripe-php/lib/Stripe,而Laravel Cashier位于vendor/laravel/cashier/src/Laravel/Cashier

总的来说,我再次发现Laravel文档缺乏冗长和示例。它说它可以处理优惠券,它展示了如何添加优惠券,但没有展示如何删除优惠券,这让我觉得它不能,这可能就是为什么必须包括其他图书馆的原因。但这都是猜测。

最新更新