/** * @param SubscriptionInterface $subscription * @param array $options * @return SubscriptionInterface */ public function deleteSubscription(SubscriptionInterface $subscription, $options = array()) { try { if ($subscription->getAdapterName() !== $this->getAdapterName()) { throw new Braintree_Exception('Adapter mismatch'); } $result = Braintree_Subscription::cancel($subscription->getSubscriptionId()); if ($result->success) { $subscription->setSubscriptionSynced(false)->setStatus($result->subscription->status); $this->getLogger()->info('[Braintree][updateSubscription] Sucess', array_merge(array('subscription id' => $subscription->getId()), $this->serializeSubscription($subscription, $options))); } else { $this->getLogger()->error('[Braintree][updateSubscription] Error', array_merge(array('subscription id' => $subscription->getId()), Util::braintreeErrorsToArray($result->errors->deepAll()))); $subscription->setErrors($result->errors->deepAll()); } } catch (Braintree_Exception $e) { $this->getLogger()->error('[Braintree exception][cancelSubscription] ' . $e->getMessage()); } return $subscription; }