/** * Gets info for a subscription. * * @return array|null */ public function info() { if (!$this->id || !$this->local_customer) { return null; } if (!$this->local_subscription) { $this->local_subscription = $this->local_customer->subscriptions()->where('id', $this->id)->first(); $this->gateway->apiDelay(); if ($this->local_subscription) { $this->local_subscription->process(); } } if (!$this->local_subscription) { return null; } if ($this->local_subscription->gracePeriodEnded()) { return $this->local_subscription = null; } $discounts = array(); if ($this->local_subscription->coupon) { $started_at = $this->local_subscription->subscription->created_at; $ends_at = null; if ($this->local_subscription->coupon->duration_in_months) { $ends_at = $started_at->copy()->addMonths($this->local_subscription->coupon->duration_in_months); } $discounts[] = array('coupon' => $this->local_subscription->coupon->code, 'amount_off' => $this->local_subscription->coupon->amount_off, 'percent_off' => $this->local_subscription->coupon->percent_off, 'started_at' => (string) $started_at, 'ends_at' => $ends_at ? (string) $ends_at : null); } return array('id' => $this->id, 'plan' => $this->local_subscription->plan->key, 'amount' => $this->local_subscription->plan->amount, 'interval' => $this->local_subscription->plan->interval, 'active' => $this->local_subscription->cancel_at ? false : true, 'quantity' => $this->local_subscription->quantity, 'started_at' => (string) $this->local_subscription->created_at, 'period_started_at' => (string) $this->local_subscription->period_started_at, 'period_ends_at' => (string) $this->local_subscription->period_ends_at, 'trial_ends_at' => $this->local_subscription->trial_ends_at ? (string) $this->local_subscription->trial_ends_at : null, 'card' => $this->local_subscription->card_id, 'discounts' => $discounts); }