/** * Pause a subscription or cancel a scheduled pause on a subscription. * <p> * * For an active subscription without a pause scheduled already, this will * schedule a pause period to begin at the next renewal date for the specified * number of billing cycles (remaining_pause_cycles). * * When a scheduled pause already exists, this will update the remaining pause * cycles with the new value sent. When zero (0) remaining_pause_cycles is sent * for a subscription with a scheduled pause, the pause will be canceled. * * For a paused subscription, the remaining_pause_cycles will adjust the * length of the current pause period. Sending zero (0) in the remaining_pause_cycles * field will cause the subscription to be resumed at the next renewal date. * * @param subscriptionUuid The uuid for the subscription you wish to pause. * @param remainingPauseCycles The number of billing cycles that the subscription will be paused. * @return Subscription */ public Subscription pauseSubscription(final String subscriptionUuid, final int remainingPauseCycles) { Subscription request = new Subscription(); request.setRemainingPauseCycles(remainingPauseCycles); return doPUT(Subscription.SUBSCRIPTION_RESOURCE + "/" + subscriptionUuid + "/pause", request, Subscription.class); }
/** * Postpone a subscription * <p> * postpone a subscription, setting a new renewal date. * * @param subscription Subscription object * @return Subscription */ public Subscription postponeSubscription(final Subscription subscription, final DateTime renewaldate) { return doPUT(Subscription.SUBSCRIPTION_RESOURCE + "/" + subscription.getUuid() + "/postpone?next_renewal_date=" + renewaldate, subscription, Subscription.class); }
private Subscription verifySubscription(final String subscriptionData) throws IOException { final Subscription subscription = xmlMapper.readValue(subscriptionData, Subscription.class); Assert.assertEquals(subscription.getUuid(), "44f83d7cba354d5b84812419f923ea96"); Assert.assertEquals(subscription.getState(), "active"); Assert.assertEquals(subscription.getUnitAmountInCents(), (Integer) 800); Assert.assertEquals(subscription.getCurrency(), "EUR"); Assert.assertEquals(subscription.getQuantity(), (Integer) 1); Assert.assertEquals(subscription.getActivatedAt(), new DateTime("2011-05-27T07:00:00Z")); Assert.assertEquals(subscription.getUpdatedAt(), new DateTime("2011-05-27T07:00:00Z")); Assert.assertNull(subscription.getCanceledAt(), ""); Assert.assertNull(subscription.getExpiresAt(), ""); Assert.assertEquals(subscription.getCurrentPeriodStartedAt(), new DateTime("2011-06-27T07:00:00Z")); Assert.assertEquals(subscription.getCurrentPeriodEndsAt(), new DateTime("2010-07-27T07:00:00Z")); Assert.assertNull(subscription.getTrialStartedAt(), ""); Assert.assertNull(subscription.getTrialEndsAt(), ""); Assert.assertEquals(subscription.getStartsAt(), new DateTime("2010-07-28T07:00:00Z")); Assert.assertEquals(subscription.getCollectionMethod(), "manual"); Assert.assertEquals(subscription.getNetTerms(), (Integer) 10); Assert.assertEquals(subscription.getPoNumber(), "PO19384"); Assert.assertEquals(subscription.getFirstRenewalDate(), new DateTime("2011-07-01T07:00:00Z")); Assert.assertEquals(subscription.getRevenueScheduleType(), RevenueScheduleType.EVENLY); Assert.assertEquals((int) subscription.getTaxInCents(), 394); Assert.assertEquals(subscription.getTaxType(), "usst"); Assert.assertEquals(subscription.getTaxRegion(), "CA"); Assert.assertEquals(subscription.getTaxRate(), new BigDecimal("0.0875")); Assert.assertEquals(subscription.getConvertedAt(), new DateTime("2017-06-27T00:00:00Z")); Assert.assertTrue(subscription.getStartedWithGift()); Assert.assertEquals(subscription.getNoBillingInfoReason(), "plan_free_trial"); Assert.assertTrue(subscription.getImportedTrial());
final Subscription subscriptionData = new Subscription(); subscriptionData.setPlanCode(plan.getPlanCode()); subscriptionData.setAccount(accountData); subscriptionData.setCurrency(CURRENCY); subscriptionData.setUnitAmountInCents(1242); subscriptionData.setRemainingBillingCycles(2); subscriptionData.setCouponCode(couponData.getCouponCode()); subscriptionData.setCustomerNotes("Customer Notes"); subscriptionData.setTermsAndConditions("Terms and Conditions"); final DateTime creationDateTime = new DateTime(DateTimeZone.UTC); Assert.assertEquals(subscriptionPreview.getCurrency(), subscriptionData.getCurrency()); if (null == subscriptionData.getQuantity()) { Assert.assertEquals(subscriptionPreview.getQuantity(), new Integer(1)); } else { Assert.assertEquals(subscriptionPreview.getQuantity(), subscriptionData.getQuantity()); Assert.assertNotNull(subscription.getInvoice()); Assert.assertEquals(subscription.getCurrency(), subscriptionData.getCurrency()); if (null == subscriptionData.getQuantity()) { Assert.assertEquals(subscription.getQuantity(), new Integer(1)); } else { Assert.assertEquals(subscription.getQuantity(), subscriptionData.getQuantity()); final Subscription sub1 = recurlyClient.getSubscription(subscription.getUuid()); Assert.assertNotNull(sub1); Assert.assertEquals(sub1, subscription);
@Test(groups = "integration") public void testGetSiteSubscriptions() throws Exception { final Account accountData = TestUtils.createRandomAccount(); final BillingInfo billingInfoData = TestUtils.createRandomBillingInfo(); final Plan planData = TestUtils.createRandomPlan(); try { final Account account = recurlyClient.createAccount(accountData); billingInfoData.setAccount(account); final BillingInfo billingInfo = recurlyClient.createOrUpdateBillingInfo(billingInfoData); final Plan plan = recurlyClient.createPlan(planData); final Subscription subscriptionData = new Subscription(); subscriptionData.setPlanCode(plan.getPlanCode()); subscriptionData.setAccount(accountData); subscriptionData.setCurrency(CURRENCY); subscriptionData.setUnitAmountInCents(1242); subscriptionData.setRemainingBillingCycles(1); // makes sure we have at least one subscription recurlyClient.createSubscription(subscriptionData); // make sure we return more than one subscription Assert.assertTrue(recurlyClient.getSubscriptions().size() > 0); } finally { // Close the account recurlyClient.closeAccount(accountData.getAccountCode()); } }
/** * Creates a random {@link com.ning.billing.recurly.model.Subscription} object for use in tests * * @param currencyCode The currency code for which the subscription will be charged in * @param plan The associated plan * @param account The associated account * @param planAddOns AddOns for that subscription * @return The {@link com.ning.billing.recurly.model.Subscription} object */ public static Subscription createRandomSubscription(final String currencyCode, final Plan plan, final Account account, final Iterable<AddOn> planAddOns) { final Subscription sub = new Subscription(); // Make sure the quantity is > 0 sub.setQuantity(randomInteger(10) + 1); sub.setCurrency(randomCurrency()); sub.setPlanCode(plan.getPlanCode()); sub.setAccount(account); sub.setUnitAmountInCents(randomInteger(10)); sub.setCurrency(currencyCode); final SubscriptionAddOns addOns = new SubscriptionAddOns(); for (final AddOn addOn : planAddOns) { addOns.add(createRandomSubscriptionAddOn(addOn.getAddOnCode())); } sub.setAddOns(addOns); return sub; }
final Subscription subscriptionData = new Subscription(); subscriptionData.setPlanCode(plan.getPlanCode()); subscriptionData.setAccount(accountData); subscriptionData.setCurrency(CURRENCY); subscriptionData.setUnitAmountInCents(1242); subscriptionData.setRemainingBillingCycles(2); final Subscription scheduledPauseSub = recurlyClient.pauseSubscription(subscription.getUuid(), 1); Assert.assertEquals(scheduledPauseSub.getRemainingPauseCycles(), new Integer(1)); Assert.assertEquals(scheduledPauseSub.getPausedAt().getClass(), DateTime.class); final Subscription canceledPauseSub = recurlyClient.pauseSubscription(subscription.getUuid(), 0); Assert.assertEquals(canceledPauseSub.getPausedAt(), null); Assert.assertEquals(canceledPauseSub.getRemainingPauseCycles(), null); } finally {
final Subscription subscriptionData = new Subscription(); subscriptionData.setPlanCode(plan.getPlanCode()); final Account accountCodeData = new Account(); accountCodeData.setAccountCode(account.getAccountCode()); subscriptionData.setAccount(accountCodeData); subscriptionData.setCurrency(CURRENCY); subscriptionData.setUnitAmountInCents(1242); subscriptionData.setShippingAddressId(originalShippingAddress.getId()); final DateTime creationDateTime = new DateTime(DateTimeZone.UTC); final Subscription subscription = recurlyClient.createSubscription(subscriptionData); final Subscription subscriptionUpdatedPreview = recurlyClient.updateSubscriptionPreview(subscription.getUuid(), subscriptionUpdateData); Assert.assertNotNull(subscriptionUpdatedPreview.getInvoiceCollection().getChargeInvoice()); Assert.assertEquals(subscription.getUuid(), subscriptionUpdatedPreview.getUuid()); Assert.assertNotEquals(subscription.getPlan(), subscriptionUpdatedPreview.getPlan()); Assert.assertEquals(plan2.getPlanCode(), subscriptionUpdatedPreview.getPlan().getPlanCode()); final Subscription subscriptionUpdated = recurlyClient.updateSubscription(subscription.getUuid(), subscriptionUpdateData); Assert.assertEquals(subscription.getUuid(), subscriptionUpdated.getUuid()); Assert.assertNotEquals(subscription.getPlan(), subscriptionUpdated.getPlan()); Assert.assertEquals(plan2.getPlanCode(), subscriptionUpdated.getPlan().getPlanCode()); } finally {
@Test(groups = "integration") public void testShippingAddressesOnSubscription() throws Exception { final Account accountData = TestUtils.createRandomAccount(); final Plan planData = TestUtils.createRandomPlan(CURRENCY); final ShippingAddress shippingAddressData = TestUtils.createRandomShippingAddress(); final BillingInfo billingInfoData = TestUtils.createRandomBillingInfo(); billingInfoData.setAccount(null); // null out random account fixture accountData.setBillingInfo(billingInfoData); // add the billing info to account data try { final Account account = recurlyClient.createAccount(accountData); final Plan plan = recurlyClient.createPlan(planData); // Subscribe the user to the plan final Subscription subscriptionData = new Subscription(); // set our shipping address subscriptionData.setShippingAddress(shippingAddressData); // set our sub data subscriptionData.setPlanCode(plan.getPlanCode()); subscriptionData.setCurrency(CURRENCY); subscriptionData.setUnitAmountInCents(1242); // attach the account final Account existingAccount = new Account(); existingAccount.setAccountCode(account.getAccountCode()); subscriptionData.setAccount(existingAccount); final Subscription subscription = recurlyClient.createSubscription(subscriptionData); Assert.assertNotNull(subscription.getHref()); } finally { recurlyClient.closeAccount(accountData.getAccountCode()); recurlyClient.deletePlan(planData.getPlanCode()); } }
final Subscription subscriptionData = new Subscription(); subscriptionData.setCouponCode(coupon.getCouponCode()); subscriptionData.setPlanCode(plan.getPlanCode()); subscriptionData.setAccount(accountData); subscriptionData.setCurrency(CURRENCY); subscriptionData.setUnitAmountInCents(1242); Assert.assertEquals(subscription.getTrialEndsAt().getMonthOfYear(), expectedMonth); } finally { recurlyClient.closeAccount(accountData.getAccountCode());
private void verifySubscriptions(final Subscriptions subscriptions) { Assert.assertEquals(subscriptions.size(), 1); final Subscription subscription = subscriptions.get(0); Assert.assertEquals(subscription.getUuid(), "44f83d7cba354d5b84812419f923ea96"); Assert.assertEquals(subscription.getCurrency(), "EUR"); Assert.assertNull(subscription.getPlanCode()); Assert.assertEquals(subscription.getPlan().getPlanCode(), "gold"); List<String> coupons = new ArrayList<String>(Arrays.asList("abc", "123")); Assert.assertEquals(subscription.getCouponCodes(), coupons); } }
redemptionData.setRedemptionCode(purchasedGiftCard.getRedemptionCode()); final ArrayList<String> couponCodes = new ArrayList<String>(Arrays.asList("ascu2wprjk", "vttx1luuwz")); final Subscription subscriptionData = new Subscription(); subscriptionData.setPlanCode(plan.getPlanCode()); final Subscriptions subscriptions = new Subscriptions(); subscriptions.add(subscriptionData); Assert.assertEquals(sub.getUuid(), subscriptionId); } finally { recurlyClient.closeAccount(accountData.getAccountCode());
Assert.assertEquals(subscriptionWithAddons.getAddOns().size(), nbAddOns); for (int i = 0; i < nbAddOns; i++) { Assert.assertEquals(subscriptionWithAddons.getAddOns().get(i).getAddOnCode(), addons.get(i).getAddOnCode()); final Invoice subInvoice = subscriptionWithAddons.getInvoice(); Assert.assertNotNull(subInvoice); final Subscription subscriptionWithAddons1 = recurlyClient.updateSubscription(subscriptionWithAddons.getUuid(), subscriptionUpdate); Assert.assertTrue(subscriptionWithAddons1.getAddOns().isEmpty()); newAddons.addAll(subscriptionDataWithAddons.getAddOns()); subscriptionUpdate1.setAddOns(newAddons); final Subscription subscriptionWithAddons2 = recurlyClient.updateSubscription(subscriptionWithAddons.getUuid(), subscriptionUpdate1); Assert.assertEquals(subscriptionWithAddons2.getAddOns().size(), nbAddOns); for (int i = 0; i < nbAddOns; i++) { Assert.assertEquals(subscriptionWithAddons2.getAddOns().get(i).getAddOnCode(), addons.get(i).getAddOnCode());
redemptionData.setRedemptionCode(purchasedGiftCard.getRedemptionCode()); final ArrayList<String> couponCodes = new ArrayList<String>(Arrays.asList("ascu2wprjk", "vttx1luuwz")); final Subscription subscriptionData = new Subscription(); subscriptionData.setPlanCode(plan.getPlanCode()); final Subscriptions subscriptions = new Subscriptions(); subscriptions.add(subscriptionData);
public void setActivatedAt(final Object activatedAt) { this.activatedAt = dateTimeOrNull(activatedAt); }
public void setBulk(final Object bulk) { this.bulk = booleanOrNull(bulk); }
private void verifyPaginationData(final Subscription subscription) { // Verify nested attributes Assert.assertEquals(subscription.getAccount().getHref(), "https://api.recurly.com/v2/accounts/1"); Assert.assertEquals(subscription.getAccount().getAccountCode(), "1"); }
public Account getAccount() { if (account != null && account.getHref() != null && !account.getHref().isEmpty()) { account = fetch(account, Account.class); } return account; }
@Override public boolean equals(final Object o) { if (this == o) { return true; } if (!(o instanceof PushSubscription)) { return false; } if (!super.equals(o)) { return false; } final PushSubscription that = (PushSubscription) o; if (totalAmountInCents != null ? !totalAmountInCents.equals(that.totalAmountInCents) : that.totalAmountInCents != null) { return false; } if (resumeAt != null ? !resumeAt.equals(that.resumeAt) : that.resumeAt != null) { return false; } return true; }