2015-09-04 3 views
1

Я установил ежемесячную подписку без даты действия. Если кто-то отказывается от подписки, которая вызывает следующую функцию за кулисамиКак получить окончание подписки после ее отмены с помощью Paymill

$subscription->setId('sub_dea86e5c65b2087202e3'); 
      ->setRemove(false); 

я не получаю никакой информации о текущем периоде, который был заказан. Если кто-то подписывается 1 сентября и отменяет 2 сентября, у меня нет способа узнать, будет ли его подписка оставаться действительной.

ответ

1

Поскольку нет встроенного способа для запроса Paymill-API я сделал следующее:

$subscription = $this->getClientSubscriptions(); //Get subscriptions for the client 

if ($subscription) 
{ 
    if (! $subscription['is_canceled']) 
    { 
     $this->client->end_of_period = date('Y-m-d H:i:s', $subscription['next_capture_at']); 
     /* Set end of period within the database if 
      subscription is not canceled */ 
    } elseif ($this->client->end_of_period < date('Y-m-d H:i:s')) 
    { 
     /* If the subscription has been canceled we can 
      compare the end of period to the current date 
      and set the subscription to false since it expired */ 
     $this->client->end_of_period = null; 
     $subscription = false; 
    } 

    $this->client->save(); 
    $this->cache->put($subscription_cache, $subscription, 1440); 
    /* Save and put it to cache to prevent excessive calls to the paymill-api */ 
} 

Если есть какие-либо вопросы для этого решения я буду рад ответить на них.