コード例 #1
0
 /**
  * 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);
 }