Example #1
0
 /**
  * Delete this customer credit card in the billing gateway.
  *
  * @return Creditcard
  */
 public function delete()
 {
     if (!$this->model->readyForBilling()) {
         return $this;
     }
     $this->card->delete();
     $cards = array();
     foreach ($this->model->billing_cards as $c) {
         if (Arr::get($c, 'id') != $this->id) {
             $cards[] = $c;
         }
     }
     $this->model->billing_cards = $cards;
     $this->model->save();
     // Refresh all subscription records that referenced this card.
     if ($subscriptions = $this->model->subscriptionModelsArray()) {
         foreach ($subscriptions as $subscription) {
             if ($subscription->billingIsActive() && $subscription->billing_card == $this->id) {
                 $subscription->subscription()->refresh();
             }
         }
     }
     $this->info = array('id' => $this->id);
     return $this;
 }
Example #2
0
 /**
  * Refund this charge in the billing gateway.
  *
  * @param array $properties
  * 
  * @return Charge
  */
 public function refund(array $properties = array())
 {
     if (!$this->model->readyForBilling()) {
         return $this;
     }
     $this->charge->refund($properties);
     $this->info = $this->charge->info();
     return $this;
 }
Example #3
0
 /**
  * Add a new credit card to this customer in the billing gateway.
  *
  * @param string $card_token
  * 
  * @return Creditcard
  */
 public function create($card_token)
 {
     if (!$this->model->readyForBilling()) {
         return;
     }
     $card = new Creditcard($this->model, $this->model->gatewayCustomer()->card()->create($card_token));
     $this->model->billing_cards = array_merge($this->model->billing_cards, array($card->toArray()));
     $this->model->save();
     return $card;
 }
Example #4
0
 /**
  * Delete this customer in the billing gateway.
  *
  * @param array $properties
  * 
  * @return Billing
  */
 public function delete(array $properties = array())
 {
     if (!$this->model->readyForBilling()) {
         return $this;
     }
     $this->customer->delete();
     $this->refresh();
     // Deactivate all customer subscriptions.
     if ($subscriptions = $this->model->subscriptionModelsArray()) {
         foreach ($subscriptions as $subscription) {
             $subscription->billing_subscription_ends_at = $subscription->billingIsActive() ? date('Y-m-d H:i:s') : null;
             $subscription->billing_active = 0;
             $subscription->billing_subscription = null;
             $subscription->billing_trial_ends_at = null;
             $subscription->save();
         }
     }
     return $this;
 }
Example #5
0
 /**
  * Create this charge in the billing gateway.
  *
  * @param int   $amount
  * @param array $properties
  * 
  * @return Charge
  */
 public function create($amount, array $properties = array())
 {
     if (!$this->model->readyForBilling()) {
         if ($this->card_token) {
             $this->model->billing()->withCardToken($this->card_token)->create($properties);
             if (!empty($this->model->billing_cards)) {
                 $this->card_token = null;
             }
         } else {
             $this->model->billing()->create($properties);
         }
     }
     if ($this->card_token) {
         $this->card = $this->model->creditcards()->create($this->card_token)->id;
         $this->card_token = null;
     }
     $gateway_charge = \LinkThrow\Billing\Facades\Billing::charge(null, $this->model->gatewayCustomer())->create($amount, array_merge($properties, array('card_token' => $this->card_token, 'card' => $this->card)));
     return new Charge($this->model, $gateway_charge);
 }