2017-01-10 5 views
8

Я подписался на абонентский план через пакет Касса Ларавеля. Теперь я хочу отобразить дату, когда пользователь будет выставлен счет, однако это не похоже на доступность через свойство Billable.Получить следующую дату выставления счета от Laravel Cashier

Как получить следующую платежную дату? Спасибо!

ответ

6

Решение использовать asStripeCustomer метод:

// Retrieve the timestamp from Stripe 
$timestamp = $user -> asStripeCustomer()["subscriptions"] -> data[0]["current_period_end"]; 

// Cast to Carbon instance and return 
return \Carbon\Carbon::createFromTimeStamp($timestamp) -> toFormattedDateString(); 

Обратите внимание, что я только проверил это с пользователем, который имеет одну подписку - data[0].

Возможно, вам потребуется изменить этот код для нескольких подписчиков или если пользователь отменил и начал новую подписку.

+0

Это решение работает для меня. @ John1984, все в порядке, чтобы принять свой собственный ответ. –

0

Подписки также имеют метод ->asStripeSubscription(), который дает вам доступ к значениям только для этой подписки. Таким образом, вы можете сделать:

// Retrieve the timestamp from Stripe 
$timestamp = $subscription->current_period_end; 

// Cast to Carbon instance and return 
return \Carbon\Carbon::createFromTimeStamp($timestamp)->toFormattedDateString(); 
0

Опираясь на предыдущие ответы, вот то, что работает для меня:

private function getSubscriptionRenewDate($plan) 
{ 
    $sub = Auth::user()->subscription($plan)->asStripeSubscription(); 
    return Carbon::createFromTimeStamp($sub->current_period_end)->format('F jS, Y'); 
}