/** * updateSubscriptions * -------------------------------------------------- * Updating the BraintreeSubscriptions. * @return The stripe plans. * @throws BraintreeNotConnected * -------------------------------------------------- */ public function updateSubscriptions() { // Updating plans to be up to date. $this->updatePlans(); $subscriptions = array(); // Clollecting subscriptions. try { $braintreeSubscriptions = Braintree_Subscription::search(array(Braintree_SubscriptionSearch::status()->in(array(Braintree_Subscription::ACTIVE)))); } catch (Exception $e) { // Something went wrong. return; } foreach ($braintreeSubscriptions as $subscription) { $new_subscription = new BraintreeSubscription(array('start' => $subscription->firstBillingDate, 'status' => $subscription->status)); $plan = BraintreePlan::where('plan_id', $subscription->planId)->first(); if ($plan === null) { // Braintree integrity error, link to a non-existing plan. return array(); } $new_subscription->plan()->associate($plan); array_push($subscriptions, $new_subscription); } // Save new. foreach ($subscriptions as $subscription) { $subscription->save(); } return $subscriptions; }
function testSearch_statusIsExpired() { $found = false; $collection = Braintree_Subscription::search(array(Braintree_SubscriptionSearch::status()->in(array(Braintree_Subscription::EXPIRED)))); foreach ($collection as $item) { $found = true; $this->assertEquals(Braintree_Subscription::EXPIRED, $item->status); } $this->assertTrue($found); }
function testIn_multipleValues() { $creditCard = Braintree_SubscriptionTestHelper::createCreditCard(); $triallessPlan = Braintree_SubscriptionTestHelper::triallessPlan(); $activeSubscription = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id'], 'price' => '4'))->subscription; $canceledSubscription = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id'], 'price' => '4'))->subscription; Braintree_Subscription::cancel($canceledSubscription->id); $collection = Braintree_Subscription::search(array(Braintree_SubscriptionSearch::status()->in(array(Braintree_Subscription::ACTIVE, Braintree_Subscription::CANCELED)), Braintree_SubscriptionSearch::price()->is('4'))); $this->assertTrue(Braintree_TestHelper::includes($collection, $activeSubscription)); $this->assertTrue(Braintree_TestHelper::includes($collection, $canceledSubscription)); }
function testSearch_status_isMultipleValueNode() { $node = Braintree_SubscriptionSearch::status(); $this->assertType('Braintree_MultipleValueNode', $node); }
/** * wrapper for getting subscriptions from braintree * @param object - user * @param string - id of the subscription (default null) * * @return object - the searched subscriptions OR null if not found OR collection of subscriptions */ private static function getSubscriptions($user, $subscriptionId = null) { self::setBraintreeCredentials($user); $returnVariable = null; if ($subscriptionId) { try { $returnVariable = Braintree_Subscription::find($subscriptionId); } catch (Exception $e) { return null; } } else { $returnVariable = Braintree_Subscription::search(array(Braintree_SubscriptionSearch::status()->in(array(Braintree_Subscription::ACTIVE, Braintree_Subscription::PAST_DUE, Braintree_Subscription::PENDING)))); } return $returnVariable; }