サブスクリプション対応決済サービス Stripe と Laravel からサブスクリプションを操作する Laravel Cashier についてのメモ書き

Stripe API の Subscription データから 「このSubscription課金が有効かどうか?」をチェックする

● Stripe API の Subscription データから 「このSubscription課金が有効かどうか?」をチェックする

Stripe API から Subscription を取得すると、 次のようなデータが取得できます。

Stripe\Subscription Object
(
    [id] => sub_FfXXXXXXXXXXXX
    [object] => subscription
    [application_fee_percent] => 
    [billing] => charge_automatically
    [billing_cycle_anchor] => 1566446348
    [billing_thresholds] => 
    [cancel_at] => 1569124748
    [cancel_at_period_end] => 
    [canceled_at] => 1566446348
    [collection_method] => charge_automatically
    [created] => 1566359949
    [current_period_end] => 1569124748
    [current_period_start] => 1566446348
    [customer] => cus_xxxxxxxxxxxxxx
    [days_until_due] => 
    [default_payment_method] => 
    [default_source] => 
    [default_tax_rates] => Array
        (
        )

    [discount] => 
    [ended_at] => 
    [items] => Stripe\Collection Object
        (

このSubscription課金が有効かどうかをチェックするにはこの項目

・( ended_at == null )

上記条件が成り立つとき、サブスクリプションは有効です。

PHPでは次のようなコードで記述します。

\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxx");
$subscription = \Stripe\Subscription::retrieve('sub_xxxxxxxxxxxxxx');
if( $StripeSubscription->ended_at == null ){
    // サブスクリプション有効
}

また

現在の支払期間の終了時に解約が予定されているか どうかをチェックするには

・( cancel_at_period_end == false )

上記条件が成り立つとき、現在の支払期間の終了時に解約されます。

またこちらの方法も有効です。

引用: http://bit.ly/2zdPxcj

初の支払いが成功したら、current_period_endに、有効期日を保存。月額課金だったら、課金日+1ヶ月(+α)を保存しておく。
ログイン時は、毎回current_period_endをチェックして、有効期日が過ぎていなければ、サービス利用可能とする。
定期的な支払いは、Webhookで、invoice.payment_succeededイベントを受け取る。これを受け取ったら、current_period_endを更新する。
No.1575
08/22 16:23

edit