2017-02-14 3 views
0

У меня возникли проблемы с обновлением подписки с новым планом. Что я пытаюсь сделать, это следующее:Subscription API

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

  1. Если пробной версии еще не произошло. Создайте новый план. Подписывайте клиента на новый план. Ничего не делайте. Перенесите пробную версию для нового плана. (Другими словами, не заряжайте клиента до окончания пробного периода.)

  2. Если пробная версия уже прошла, создайте новый план Sub-клиента для нового плана. Проповедуйте новый план. Перенесите следующую дату выставления счета. (Значение, опять-таки, не взимают клиента прямо сейчас, но добавить пропорциональную сумму на следующий счет)

Вот код, который я до сих пор:

//CREATE NEW PLAN 
$plan = \Stripe\Plan::create(array(
     "id" => $usremail.'_'.time(), 
     "name" => $usremail.'-'.time(), 
     "currency" => "usd", 
     "amount" => $totalamount, 
     "interval" => "month", 
    )); 

$planid = $plan->id; 
$proration_date = time(); 

//UPDATE SUBSCRIPTION 
$subscription = \Stripe\Subscription::retrieve($subid); 
$subscription->plan = $planid; 
$subscription->proration_date = $proration_date; 
$subscription->save(); 

Когда я это делаю это Если клиент находится в пробной подписке и подписывается на новый план, подписка становится активной, и клиент сразу же взимает плату за новый план.

Я уверен, что это легко, просто не могу понять. Любая помощь очень ценится.

T

ответ

0

Вы хотите провести через trial_end дату от предыдущей подписки, и включают в себя, что в обновлении называют вы делаете.

+0

thx @floatingLomas У меня есть эта часть, работающая сейчас. что, если пробный период закончился? мне нужно также переносить дату выставления счета? или полоса позаботится об этом с обновлением, которое я разместил выше? Кроме того, будут ли они добавлены к следующей платежной дате? – cnapsys

+0

Если испытание закончилось, вы можете игнорировать значение 'trial_end'. Если вы прорезируете, это закончится тем же расчетным датом, что и тот, который вы обновляете/понижаете. – floatingLomas

+0

это то, что у меня есть до сих пор: '$ planid = $ plan-> id; \t \t $ proration_date = time(); \t \t \t $ subscription = \ Stripe \ Subscription :: retrieve ($ subid); \t \t $ trial_end = $ subscription-> trial_end; \t \t $ subscription-> plan = $ planid; \t \t \t \t, если ($ trial_end <время()) { \t \t \t $ Подписка-> proration_date = $ proration_date; \t \t} else { \t \t \t $ subscription-> trial_end = $ trial_end; \t \t} \t \t \t \t // $ Подписка-> proration_date = $ proration_date; \t \t $ subscription-> trial_end = $ trial_end; \t \t $ subscription-> save(); ' – cnapsys