2015-11-30 2 views
2

В настоящее время я пытаюсь реализовать метод, который заменяет людей на новый план. Проблема, с которой я сталкиваюсь, заключается в том, что купон из старого плана переносится и пользователь не взимает плату. Каждый раз, когда я пытаюсь удалить старый купон, он, похоже, не позволяет этого.Как удалить купон из плана Stripe w/Laravel Cashier 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!'; 
} 

Мысли оценили. Приветствия.

ответ

1

Вот что в конечном итоге работает:

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 еще раз, чтобы не хватать многословия и примеров. В нем говорилось, что он может иметь дело с купонами, и он показал, как добавить один, но не как его удалить, так что это заставляет меня думать, что это невозможно, поэтому может быть и другие библиотеки. Но это все предположения.