123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- namespace Braintree;
- /**
- * Braintree Subscription module
- *
- * <b>== More information ==</b>
- *
- * For more detailed information on Subscriptions, see {@link https://developers.braintreepayments.com/reference/response/subscription/php https://developers.braintreepayments.com/reference/response/subscription/php}
- *
- * PHP Version 5
- *
- * @package Braintree
- */
- class Subscription extends Base
- {
- const ACTIVE = 'Active';
- const CANCELED = 'Canceled';
- const EXPIRED = 'Expired';
- const PAST_DUE = 'Past Due';
- const PENDING = 'Pending';
- // Subscription Sources
- const API = 'api';
- const CONTROL_PANEL = 'control_panel';
- const RECURRING = 'recurring';
- /**
- * @ignore
- */
- public static function factory($attributes)
- {
- $instance = new self();
- $instance->_initialize($attributes);
- return $instance;
- }
- /**
- * @ignore
- */
- protected function _initialize($attributes)
- {
- $this->_attributes = $attributes;
- $addOnArray = [];
- if (isset($attributes['addOns'])) {
- foreach ($attributes['addOns'] AS $addOn) {
- $addOnArray[] = AddOn::factory($addOn);
- }
- }
- $this->_attributes['addOns'] = $addOnArray;
- $discountArray = [];
- if (isset($attributes['discounts'])) {
- foreach ($attributes['discounts'] AS $discount) {
- $discountArray[] = Discount::factory($discount);
- }
- }
- $this->_attributes['discounts'] = $discountArray;
- if (isset($attributes['descriptor'])) {
- $this->_set('descriptor', new Descriptor($attributes['descriptor']));
- }
- if (isset($attributes['description'])) {
- $this->_set('description', $attributes['description']);
- }
- $statusHistory = [];
- if (isset($attributes['statusHistory'])) {
- foreach ($attributes['statusHistory'] AS $history) {
- $statusHistory[] = new Subscription\StatusDetails($history);
- }
- }
- $this->_attributes['statusHistory'] = $statusHistory;
- $transactionArray = [];
- if (isset($attributes['transactions'])) {
- foreach ($attributes['transactions'] AS $transaction) {
- $transactionArray[] = Transaction::factory($transaction);
- }
- }
- $this->_attributes['transactions'] = $transactionArray;
- }
- /**
- * returns a string representation of the customer
- * @return string
- */
- public function __toString()
- {
- $excludedAttributes = ['statusHistory'];
- $displayAttributes = [];
- foreach($this->_attributes as $key => $val) {
- if (!in_array($key, $excludedAttributes)) {
- $displayAttributes[$key] = $val;
- }
- }
- return __CLASS__ . '[' .
- Util::attributesToString($displayAttributes) .']';
- }
- // static methods redirecting to gateway
- public static function create($attributes)
- {
- return Configuration::gateway()->subscription()->create($attributes);
- }
- public static function find($id)
- {
- return Configuration::gateway()->subscription()->find($id);
- }
- public static function search($query)
- {
- return Configuration::gateway()->subscription()->search($query);
- }
- public static function fetch($query, $ids)
- {
- return Configuration::gateway()->subscription()->fetch($query, $ids);
- }
- public static function update($subscriptionId, $attributes)
- {
- return Configuration::gateway()->subscription()->update($subscriptionId, $attributes);
- }
- public static function retryCharge($subscriptionId, $amount = null, $submitForSettlement = false)
- {
- return Configuration::gateway()->subscription()->retryCharge($subscriptionId, $amount, $submitForSettlement);
- }
- public static function cancel($subscriptionId)
- {
- return Configuration::gateway()->subscription()->cancel($subscriptionId);
- }
- }
- class_alias('Braintree\Subscription', 'Braintree_Subscription');
|