/** * 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; }
public function afterFind($results, $primary = false) { if ($primary) { $results = Hash::insert($results, "{n}.BraintreeSubscription", array()); $results = Hash::insert($results, "{n}.BraintreePlan", array()); $braintreeSubscriptions = Braintree_Subscription::search([Braintree_SubscriptionSearch::ids()->in(Hash::extract($results, "{n}.BillingSubscription.remote_subscription_id"))]); $braintreePlans = Braintree_Plan::all(); foreach ($results as $key => $result) { foreach ($braintreeSubscriptions as $braintreeSubscription) { if ($braintreeSubscription->id == $result['BillingSubscription']['remote_subscription_id']) { $result['BraintreeSubscription'] = $braintreeSubscription; break; } //$results = Hash::insert($results, "{n}.BillingSubscription[remote_subscription_id=".$braintreeSubscription->id."]", array('BraintreeSubscription' => $braintreeSubscription)); } foreach ($braintreePlans as $braintreePlan) { if ($braintreePlan->id == $result['BillingSubscription']['remote_plan_id']) { $result['BraintreePlan'] = $braintreePlan; break; } } $results[$key] = $result; } } return $results; }
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 testContains() { $creditCard = Braintree_SubscriptionTestHelper::createCreditCard(); $triallessPlan = Braintree_SubscriptionTestHelper::triallessPlan(); $trialPlan = Braintree_SubscriptionTestHelper::trialPlan(); $trialSubscription = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $trialPlan['id'], 'price' => '9'))->subscription; $triallessSubscription = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id'], 'price' => '9'))->subscription; $collection = Braintree_Subscription::search(array(Braintree_SubscriptionSearch::planId()->contains("ration_trial_pl"), Braintree_SubscriptionSearch::price()->is("9"))); $this->assertTrue(Braintree_TestHelper::includes($collection, $trialSubscription)); $this->assertFalse(Braintree_TestHelper::includes($collection, $triallessSubscription)); }
function testSearch_price() { $creditCard = Braintree_SubscriptionTestHelper::createCreditCard(); $triallessPlan = Braintree_SubscriptionTestHelper::triallessPlan(); $subscription_850 = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id'], 'price' => '8.50'))->subscription; $subscription_851 = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id'], 'price' => '8.51'))->subscription; $subscription_852 = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id'], 'price' => '8.52'))->subscription; $collection = Braintree_Subscription::search(array(Braintree_SubscriptionSearch::price()->between('8.51', '8.52'))); $this->assertTrue(Braintree_TestHelper::includes($collection, $subscription_851)); $this->assertTrue(Braintree_TestHelper::includes($collection, $subscription_852)); $this->assertFalse(Braintree_TestHelper::includes($collection, $subscription_850)); }
function testSearch_transactionId() { $creditCard = Braintree_SubscriptionTestHelper::createCreditCard(); $triallessPlan = Braintree_SubscriptionTestHelper::triallessPlan(); $matchingSubscription = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id']))->subscription; $nonMatchingSubscription = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id']))->subscription; $collection = Braintree_Subscription::search(array(Braintree_SubscriptionSearch::transactionId()->is($matchingSubscription->transactions[0]->id))); $this->assertTrue(Braintree_TestHelper::includes($collection, $matchingSubscription)); $this->assertFalse(Braintree_TestHelper::includes($collection, $nonMatchingSubscription)); }
/** * 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; }