diff --git a/src/ARBUpdateSubscriptionRequest.php b/src/ARBUpdateSubscriptionRequest.php index 32c0054..e5bb726 100644 --- a/src/ARBUpdateSubscriptionRequest.php +++ b/src/ARBUpdateSubscriptionRequest.php @@ -16,14 +16,18 @@ class ARBUpdateSubscriptionRequest extends ARBCreateSubscriptionRequest public function __construct( Configuration $configuration, Client $client, - $subscriptionId + Subscription $subscription, + string $subscriptionId ) { - parent::__construct($configuration, $client); - $this->subscriptionId = $subscription; + $this->subscriptionId = $subscriptionId; + // Authnet does not allow an interval to be updated + $subscription->removeInterval(); + parent::__construct($configuration, $client, $subscription); } protected function attachData(RequestInterface $request) { $request->addData('subscriptionId', $this->subscriptionId); + parent::attachData($request); } } diff --git a/src/DataTypes/ArbTransaction.php b/src/DataTypes/ArbTransaction.php new file mode 100644 index 0000000..3196fce --- /dev/null +++ b/src/DataTypes/ArbTransaction.php @@ -0,0 +1,13 @@ +propertyMap['length'] = $length; + } + + public function addUnit(String $unit) + { + $this->propertyMap['unit'] = $unit; + } } diff --git a/src/DataTypes/PaymentSchedule.php b/src/DataTypes/PaymentSchedule.php index 9b33f66..d0f9baa 100644 --- a/src/DataTypes/PaymentSchedule.php +++ b/src/DataTypes/PaymentSchedule.php @@ -15,4 +15,13 @@ public function addInterval(Interval $interval) { $this->properties['interval'] = $interval->toArray(); } + + public function addTotalOccurrences(String $totalOccurrences) + { + $this->properties['totalOccurrences'] = $totalOccurrences; + } + + public function addStartDate(string $startDate) { + $this->properties['startDate'] = $startDate; + } } diff --git a/src/DataTypes/Subscription.php b/src/DataTypes/Subscription.php index 133263b..834a7ae 100644 --- a/src/DataTypes/Subscription.php +++ b/src/DataTypes/Subscription.php @@ -45,4 +45,70 @@ public function addProfile(CustomerProfileId $profile) { $this->properties['profile'] = $profile->toArray(); } + + public function addAmount(string $amount) + { + $this->properties['amount'] = $amount; + } + + public function getAmount() + { + return $this->properties['amount']; + } + + public function getInterval() { + if(is_array($this->properties['paymentSchedule'])) { + return $this->properties['paymentSchedule']['interval']; + } + return $this->properties['paymentSchedule']->interval; + } + + public function getPaymentSchedule() { + return $this->properties['paymentSchedule']; + } + + public function removeInterval() + { + unset($this->properties['paymentSchedule']['interval']); + } + + public function getStartDate() + { + if(is_array($this->properties['paymentSchedule'])) { + return $this->properties['paymentSchedule']['startDate']; + } + return $this->properties['paymentSchedule']->startDate; + } + + public function addStartDate(string $startDate) + { + if(is_object($this->properties['paymentSchedule'])) { + $this->properties['paymentSchedule']->startDate = $startDate; + } + $this->properties['paymentSchedule']['startDate'] = $startDate; + } + + public function removeStartDate() { + unset($this->properties['paymentSchedule']['startDate']); + } + + public function getArbTransactions() { + return $this->properties['arbTransactions']; + } + + public function addArbTransactions($arbTransactions) { + if( is_array($arbTransactions)) { + $arbTransactions = $arbTransactions['arbTransaction']; + } + else { + $arbTransactions = $arbTransactions->arbTransaction; + } + foreach( $arbTransactions as $arbTransaction ) { + $this->properties['arbTransactions']['arbTransaction'][] = (array) $arbTransaction; + } + } + + public function addArbTransaction(ArbTransaction $arbTransaction) { + $this->properties['arbTransactions']['arbTransaction'][] = $arbTransaction->toArray(); + } }