public function testIn_multipleValues() { $creditCard = SubscriptionHelper::createCreditCard(); $triallessPlan = SubscriptionHelper::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(Test\Helper::includes($collection, $activeSubscription)); $this->assertTrue(Test\Helper::includes($collection, $canceledSubscription)); }
public function testFind_returnsSubscriptionsAssociatedWithAPaypalAccount() { $customer = Braintree\Customer::createNoValidate(); $paymentMethodToken = 'paypal-account-' . strval(rand()); $http = new HttpClientApi(Braintree\Configuration::$global); $nonce = $http->nonceForPayPalAccount(['paypal_account' => ['consent_code' => 'consent-code', 'token' => $paymentMethodToken]]); $result = Braintree\PaymentMethod::create(['paymentMethodNonce' => $nonce, 'customerId' => $customer->id]); $this->assertTrue($result->success); $token = $result->paymentMethod->token; $triallessPlan = SubscriptionHelper::triallessPlan(); $subscription1 = Braintree\Subscription::create(['paymentMethodToken' => $token, 'planId' => $triallessPlan['id']])->subscription; $subscription2 = Braintree\Subscription::create(['paymentMethodToken' => $token, 'planId' => $triallessPlan['id']])->subscription; $paypalAccount = Braintree\PayPalAccount::find($token); $getIds = function ($sub) { return $sub->id; }; $subIds = array_map($getIds, $paypalAccount->subscriptions); $this->assertTrue(in_array($subscription1->id, $subIds)); $this->assertTrue(in_array($subscription2->id, $subIds)); }
/** * @param string $customer_id * @param string $plan_id * @param array $addOns * @param array $discounts * @param array $removeAddOns * @param array $removeDiscounts * @return bool | int * @throws Exception */ public function createSubscription($customer_id, $plan_id, $addOns = [], $discounts = [], $removeAddOns = [], $removeDiscounts = []) { $customer = Braintree_Customer::find($customer_id); $the_token = null; if (!empty($customer)) { $the_token = $customer->paymentMethods[0]->token; } else { throw new Exception("Customer not found \n"); } $formattedAddOns = []; foreach ($addOns as $addOn) { $formattedAddOns[] = ['inheritedFromId' => $addOn]; } $formattedDiscounts = []; foreach ($discounts as $discount) { $formattedDiscounts[] = ['inheritedFromId' => $discount]; } $result = Braintree_Subscription::create(['paymentMethodToken' => $the_token, 'planId' => $plan_id, 'addOns' => ['add' => $formattedAddOns, 'remove' => $removeAddOns], 'discounts' => ['add' => $formattedDiscounts, 'remove' => $removeDiscounts]]); if ($result->success) { return $result->subscription->id; } else { foreach ($result->errors->deepAll() as $error) { throw new Exception($error->code . ": " . $error->message . "\n"); } } return false; }
public static function createSubscription() { $plan = self::triallessPlan(); $result = Braintree\Subscription::create(['paymentMethodToken' => self::createCreditCard()->token, 'price' => '54.99', 'planId' => $plan['id']]); return $result->subscription; }
public function testSearch_transactionId() { $creditCard = SubscriptionHelper::createCreditCard(); $triallessPlan = SubscriptionHelper::triallessPlan(); $matchingSubscription = Braintree\Subscription::create(['paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id']])->subscription; $nonMatchingSubscription = Braintree\Subscription::create(['paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id']])->subscription; $collection = Braintree\Subscription::search([Braintree\SubscriptionSearch::transactionId()->is($matchingSubscription->transactions[0]->id)]); $this->assertTrue(Test\Helper::includes($collection, $matchingSubscription)); $this->assertFalse(Test\Helper::includes($collection, $nonMatchingSubscription)); }
public function testFindReturnsAssociatedSubscriptions() { $customer = Braintree\Customer::createNoValidate(); $result = Braintree\CreditCard::create(array('customerId' => $customer->id, 'cardholderName' => 'Cardholder', 'number' => '5105105105105100', 'expirationDate' => '05/12', 'billingAddress' => array('firstName' => 'Drew', 'lastName' => 'Smith', 'company' => 'Smith Co.', 'streetAddress' => '1 E Main St', 'extendedAddress' => 'Suite 101', 'locality' => 'Chicago', 'region' => 'IL', 'postalCode' => '60622', 'countryName' => 'United States of America'))); $id = strval(rand()); Braintree\Subscription::create(array('id' => $id, 'paymentMethodToken' => $result->creditCard->token, 'planId' => 'integration_trialless_plan', 'price' => '1.00')); $creditCard = Braintree\CreditCard::find($result->creditCard->token); $this->assertEquals($id, $creditCard->subscriptions[0]->id); $this->assertEquals('integration_trialless_plan', $creditCard->subscriptions[0]->planId); $this->assertEquals('1.00', $creditCard->subscriptions[0]->price); }
public function testFind_returnsCreditCardsWithSubscriptions() { $customer = Braintree\Customer::createNoValidate(); $creditCardResult = Braintree\CreditCard::create(['customerId' => $customer->id, 'number' => '5105105105105100', 'expirationDate' => '05/2011']); $this->assertTrue($creditCardResult->success); $subscriptionId = strval(rand()); Braintree\Subscription::create(['id' => $subscriptionId, 'paymentMethodToken' => $creditCardResult->creditCard->token, 'planId' => 'integration_trialless_plan', 'price' => '1.00']); $foundCreditCard = Braintree\PaymentMethod::find($creditCardResult->creditCard->token); $this->assertEquals($subscriptionId, $foundCreditCard->subscriptions[0]->id); $this->assertEquals('integration_trialless_plan', $foundCreditCard->subscriptions[0]->planId); $this->assertEquals('1.00', $foundCreditCard->subscriptions[0]->price); }
public function testUpdate_withDescriptor() { $creditCard = SubscriptionHelper::createCreditCard(); $plan = SubscriptionHelper::triallessPlan(); $subscription = Braintree\Subscription::create(['paymentMethodToken' => $creditCard->token, 'planId' => $plan['id'], 'descriptor' => ['name' => '123*123456789012345678', 'phone' => '3334445555']])->subscription; $result = Braintree\Subscription::update($subscription->id, ['descriptor' => ['name' => '999*9999999', 'phone' => '8887776666']]); $updatedSubscription = $result->subscription; $this->assertEquals('999*9999999', $updatedSubscription->descriptor->name); $this->assertEquals('8887776666', $updatedSubscription->descriptor->phone); }
/** * Create a new Braintree subscription. * * @param string|null $nonce * @param array $customerOptions * @param array $subscriptionOptions * * @return \LimeDeck\CashierBraintree\Subscription * @throws \Exception */ public function create($nonce = null, array $customerOptions = [], array $subscriptionOptions = []) { $customer = $this->getBraintreeCustomer($nonce, $customerOptions); $plan = $this->findPlanById($this->plan); $planPriceWithTax = $this->planPriceWithTax($plan, $this->getTaxPercentageForPayload()); $subscriptionOptions = array_merge($subscriptionOptions, ['price' => $planPriceWithTax, 'paymentMethodToken' => $customer->paymentMethods[0]->token, 'planId' => $this->plan, 'trialDuration' => $this->trialDays ?: 0, 'trialDurationUnit' => 'day', 'trialPeriod' => $this->trialDays ? true : false]); if ($this->coupon) { $coupon = $this->findCouponById($this->coupon); $amount = $this->couponPercentage ? $coupon->amount / 100 * $planPriceWithTax : $coupon->amount; $subscriptionOptions['discounts'] = ['add' => [['inheritedFromId' => $this->coupon, 'amount' => $this->formatAmount($amount)]]]; } $result = BraintreeSubscription::create($subscriptionOptions); if (!$result->success) { throw new Exception('Subscription was not created'); } return $this->user->subscriptions()->create(['name' => $this->name, 'braintree_id' => $result->subscription->id, 'braintree_plan' => $this->plan, 'quantity' => 1, 'trial_ends_at' => $this->trialDays ? Carbon::now()->addDays($this->trialDays) : null, 'ends_at' => null]); }
/** * Create subscription. * @param array $params * @return \Braintree\Result\Error|\Braintree\Result\Successful */ public function createSubscription($params) { return Subscription::create($params); }
/** * Create a new Braintree subscription. * * @param string|null $token * @param array $customerOptions * @param array $subscriptionOptions * * @return SubscriptionModel * * @throws Exception */ public function create($token = null, array $customerOptions = [], array $subscriptionOptions = []) { $payload = $this->getSubscriptionPayload($this->getBraintreeCustomer($token, $customerOptions), $subscriptionOptions); if ($this->coupon) { $payload = $this->addCouponToPayload($payload); } $response = BraintreeSubscription::create($payload); if (!$response->success) { throw new Exception('Braintree failed to create subscription: ' . $response->message); } if ($this->skipTrial) { $trialEndsAt = null; } else { $trialEndsAt = $this->trialDays ? Carbon::now()->addDays($this->trialDays) : null; } $subscriptionModel = Yii::createObject(['class' => SubscriptionModel::className(), 'userId' => $this->user->id, 'name' => $this->name, 'braintreeId' => $response->subscription->id, 'braintreePlan' => $this->plan, 'trialEndAt' => $trialEndsAt, 'endAt' => null]); if ($subscriptionModel->save()) { return $subscriptionModel; } else { throw new Exception('Subscription was not saved.'); } }
/** * Create a new Braintree subscription. * * @param string|null $token * @param array $customerOptions * @param array $subscriptionOptions * @return \Laravel\Cashier\Subscription */ public function create($token = null, array $customerOptions = [], array $subscriptionOptions = []) { $payload = $this->getSubscriptionPayload($this->getBraintreeCustomer($token, $customerOptions), $subscriptionOptions); if ($this->coupon) { $payload = $this->addCouponToPayload($payload); } $response = BraintreeSubscription::create($payload); if (!$response->success) { throw new Exception('Braintree failed to create subscription: ' . $response->message); } if ($this->skipTrial) { $trialEndsAt = null; } else { $trialEndsAt = $this->trialDays ? Carbon::now()->addDays($this->trialDays) : null; } return $this->user->subscriptions()->create(['name' => $this->name, 'braintree_id' => $response->subscription->id, 'braintree_plan' => $this->plan, 'quantity' => 1, 'trial_ends_at' => $trialEndsAt, 'ends_at' => null]); }
public function testSnapshotPlanIdAddOnsAndDiscountsFromSubscription() { $creditCard = SubscriptionHelper::createCreditCard(); $plan = SubscriptionHelper::triallessPlan(); $result = Braintree\Subscription::create(['paymentMethodToken' => $creditCard->token, 'planId' => $plan['id'], 'addOns' => ['add' => [['amount' => '11.00', 'inheritedFromId' => 'increase_10', 'quantity' => 2, 'numberOfBillingCycles' => 5], ['amount' => '21.00', 'inheritedFromId' => 'increase_20', 'quantity' => 3, 'numberOfBillingCycles' => 6]]], 'discounts' => ['add' => [['amount' => '7.50', 'inheritedFromId' => 'discount_7', 'quantity' => 2, 'neverExpires' => true]]]]); $transaction = $result->subscription->transactions[0]; $this->assertEquals($transaction->planId, $plan['id']); $addOns = $transaction->addOns; SubscriptionHelper::sortModificationsById($addOns); $this->assertEquals($addOns[0]->amount, "11.00"); $this->assertEquals($addOns[0]->id, "increase_10"); $this->assertEquals($addOns[0]->quantity, 2); $this->assertEquals($addOns[0]->numberOfBillingCycles, 5); $this->assertFalse($addOns[0]->neverExpires); $this->assertEquals($addOns[1]->amount, "21.00"); $this->assertEquals($addOns[1]->id, "increase_20"); $this->assertEquals($addOns[1]->quantity, 3); $this->assertEquals($addOns[1]->numberOfBillingCycles, 6); $this->assertFalse($addOns[1]->neverExpires); $discounts = $transaction->discounts; $this->assertEquals($discounts[0]->amount, "7.50"); $this->assertEquals($discounts[0]->id, "discount_7"); $this->assertEquals($discounts[0]->quantity, 2); $this->assertEquals($discounts[0]->numberOfBillingCycles, null); $this->assertTrue($discounts[0]->neverExpires); }
public function testContains() { $creditCard = SubscriptionHelper::createCreditCard(); $triallessPlan = SubscriptionHelper::triallessPlan(); $trialPlan = SubscriptionHelper::trialPlan(); $trialSubscription = Braintree\Subscription::create(['paymentMethodToken' => $creditCard->token, 'planId' => $trialPlan['id'], 'price' => '9'])->subscription; $triallessSubscription = Braintree\Subscription::create(['paymentMethodToken' => $creditCard->token, 'planId' => $triallessPlan['id'], 'price' => '9'])->subscription; $collection = Braintree\Subscription::search([Braintree\SubscriptionSearch::planId()->contains("ration_trial_pl"), Braintree\SubscriptionSearch::price()->is("9")]); $this->assertTrue(Test\Helper::includes($collection, $trialSubscription)); $this->assertFalse(Test\Helper::includes($collection, $triallessSubscription)); }