internal static CreatePlanRequest BuildCreatePlanRequest() { var request = new CreatePlanRequest() { BillingType = "prepaid", PaymentMethods = new List <string> { "credit_card", "boleto" }, Name = "Nome do plano", Items = new List <CreatePlanItemRequest>() { new CreatePlanItemRequest() { Description = "Plan Item Test SDK", Name = "Item", Quantity = 1, PricingScheme = new CreatePricingSchemeRequest() { Price = 100, SchemeType = "unit" } } } }; return(request); }
public void Should_Update_Plan() { string randomString = DateTime.Now.ToString("yyyyMMddHHmmssfff"); CreateProductRequest createProductRequest = new CreateProductRequest { Description = "product-description", Locale = Locale.TR.ToString(), Name = $"product-name-{randomString}", ConversationId = "123456789" }; ResponseData <ProductResource> createProductResponse = Product.Create(createProductRequest, _options); CreatePlanRequest createPlanRequest = new CreatePlanRequest() { Locale = Locale.TR.ToString(), Name = $"plan-name-{randomString}", ConversationId = "123456789", TrialPeriodDays = 3, Price = "5.23", CurrencyCode = Currency.TRY.ToString(), PaymentInterval = PaymentInterval.WEEKLY.ToString(), RecurrenceCount = 12, PaymentIntervalCount = 1, PlanPaymentType = PlanPaymentType.RECURRING.ToString(), ProductReferenceCode = createProductResponse.Data.ReferenceCode }; ResponseData <PlanResource> createPlanResponse = Plan.Create(createPlanRequest, _options); UpdatePlanRequest request = new UpdatePlanRequest() { Locale = Locale.TR.ToString(), Name = $"updated-plan-name-{randomString}", ConversationId = "123456789", TrialPeriodDays = 5, PricingPlanReferenceCode = createPlanResponse.Data.ReferenceCode }; ResponseData <PlanResource> response = Plan.Update(request, _options); PrintResponse(response); Assert.AreEqual(response.Status, Status.SUCCESS.ToString()); Assert.AreEqual($"updated-plan-name-{randomString}", response.Data.Name); Assert.AreEqual("5.23", response.Data.Price.RemoveTrailingZeros()); Assert.AreEqual(Currency.TRY.ToString(), response.Data.CurrencyCode); Assert.AreEqual(createProductResponse.Data.ReferenceCode, response.Data.ProductReferenceCode); Assert.AreEqual(PaymentInterval.WEEKLY.ToString(), response.Data.PaymentInterval); Assert.AreEqual(1, response.Data.PaymentIntervalCount); Assert.AreEqual(5, response.Data.TrialPeriodDays); Assert.AreEqual(PlanPaymentType.RECURRING.ToString(), response.Data.PlanPaymentType); Assert.AreEqual(12, response.Data.RecurrenceCount); Assert.AreEqual("ACTIVE", response.Data.Status); Assert.IsNotNull(response.Data.ReferenceCode); Assert.IsNotNull(response.Data.CreatedDate); Assert.IsNotNull(response.SystemTime); Assert.Null(response.ErrorMessage); }
public void Should_RetrieveAll_Plan() { string randomString = DateTime.Now.ToString("yyyyMMddHHmmssfff"); CreateProductRequest createProductRequest = new CreateProductRequest { Description = "product-description", Locale = Locale.TR.ToString(), Name = $"product-name-{randomString}", ConversationId = "123456789" }; ResponseData <ProductResource> createProductResponse = Product.Create(createProductRequest, _options); CreatePlanRequest createPlanRequest = new CreatePlanRequest() { Locale = Locale.TR.ToString(), Name = $"plan-name-{randomString}", ConversationId = "123456789", TrialPeriodDays = 3, Price = "5.23", CurrencyCode = Currency.TRY.ToString(), PaymentInterval = PaymentInterval.WEEKLY.ToString(), RecurrenceCount = 12, PaymentIntervalCount = 1, PlanPaymentType = PlanPaymentType.RECURRING.ToString(), ProductReferenceCode = createProductResponse.Data.ReferenceCode }; Plan.Create(createPlanRequest, _options); RetrieveAllPlanRequest request = new RetrieveAllPlanRequest { Locale = Locale.TR.ToString(), ConversationId = "123456789", ProductReferenceCode = createProductResponse.Data.ReferenceCode, Count = 1, Page = 1 }; ResponsePagingData <PlanResource> response = Plan.RetrieveAll(request, _options); PrintResponse(response); Assert.AreEqual(response.Status, Status.SUCCESS.ToString()); Assert.AreEqual(1, response.Data.Items.Count); Assert.AreEqual(1, response.Data.CurrentPage); Assert.IsNotNull(response.SystemTime); Assert.Null(response.ErrorMessage); }
public static GetPlanResponse InitializePlan(string type, int interval, bool trial) { try { var plans = Client.Plans.GetPlans(null, null, type); if (plans.Data.Count > 0) { return(plans.Data[0]); } var createPriceScheme = new CreatePricingSchemeRequest { SchemeType = "unit", Price = 0, }; var createPlan = new CreatePlanRequest { Name = type, Quantity = 1, Currency = "BRL", Interval = "month", IntervalCount = interval, TrialPeriodDays = (trial) ? (int?)7 : null, PricingScheme = createPriceScheme, }; var plan = Client.Plans.CreatePlan(createPlan); if (string.IsNullOrEmpty(plan?.Id)) { throw new MissingMemberException($"Falha ao criar o plano {type}"); } return(plan); } catch (APIException ex) { throw new InvalidOperationException($"Falha ao criar o plano {type}", ex); } }
public object Run() { var inputBlPlan = Mapper.Map <Plan>(PlanFormViewModel); var request = new CreatePlanRequest(PlanRepo.DoesPlanIdExist, PlanRepo.StoreNewPlan, inputBlPlan); var response = request.Handle(); if (!string.IsNullOrEmpty(response.ErrorMessage)) { return(new ErrorViewModel { ErrorMessage = response.ErrorMessage }); } return(new SuccessViewModel { Id = response.PlanId, Token = inputBlPlan.Token }); }
public static ResponseData <PlanResource> Create(CreatePlanRequest request, Options options) { string uri = $"{options.BaseUrl}/v2/subscription/products/{request.ProductReferenceCode}/pricing-plans"; return(RestHttpClientV2.Create().Post <ResponseData <PlanResource> >(uri, GetHttpHeadersWithRequestBody(request, uri, options), request)); }
public void Should_Initialize_Subscription() { string randomString = DateTime.Now.ToString("yyyyMMddHHmmssfff"); CreateProductRequest createProductRequest = new CreateProductRequest { Description = "product-description", Locale = Locale.TR.ToString(), Name = $"product-name-{randomString}", ConversationId = "123456789" }; ResponseData <ProductResource> createProductResponse = Product.Create(createProductRequest, _options); CreatePlanRequest createPlanRequest = new CreatePlanRequest() { Locale = Locale.TR.ToString(), Name = $"plan-name-{randomString}", ConversationId = "123456789", TrialPeriodDays = 3, Price = "5.23", CurrencyCode = Currency.TRY.ToString(), PaymentInterval = PaymentInterval.WEEKLY.ToString(), RecurrenceCount = 12, PaymentIntervalCount = 1, PlanPaymentType = PlanPaymentType.RECURRING.ToString(), ProductReferenceCode = createProductResponse.Data.ReferenceCode }; PlanResource planResource = Plan.Create(createPlanRequest, _options).Data; SubscriptionInitializeRequest request = new SubscriptionInitializeRequest { Locale = Locale.TR.ToString(), Customer = new CheckoutFormCustomer { Email = $"iyzico-{randomString}@iyzico.com", Name = "customer-name", Surname = "customer-surname", BillingAddress = new Address { City = "İstanbul", Country = "Türkiye", Description = "billing-address-description", ContactName = "billing-contact-name", ZipCode = "010101" }, ShippingAddress = new Address { City = "İstanbul", Country = "Türkiye", Description = "shipping-address-description", ContactName = "shipping-contact-name", ZipCode = "010102" }, GsmNumber = "+905350000000", IdentityNumber = "55555555555" }, PaymentCard = new CardInfo { CardNumber = "5528790000000008", CardHolderName = "iyzico", ExpireMonth = "12", ExpireYear = "2029", Cvc = "123", RegisterConsumerCard = true }, ConversationId = "123456789", PricingPlanReferenceCode = planResource.ReferenceCode }; ResponseData <SubscriptionCreatedResource> response = Subscription.Initialize(request, _options); PrintResponse(response); Assert.AreEqual(Status.SUCCESS.ToString(), response.Status); Assert.IsNotNull(response.SystemTime); Assert.Null(response.ErrorMessage); Assert.NotNull(response.Data.ReferenceCode); Assert.NotNull(response.Data.ParentReferenceCode); Assert.AreEqual(planResource.ReferenceCode, response.Data.PricingPlanReferenceCode); Assert.AreEqual(SubscriptionStatus.ACTIVE.ToString(), response.Data.SubscriptionStatus); Assert.AreEqual(3, response.Data.TrialDays); Assert.NotNull(response.Data.TrialStartDate); Assert.NotNull(response.Data.TrialEndDate); Assert.NotNull(response.Data.StartDate); }
public void Should_Initialize_CheckoutForm() { string randomString = DateTime.Now.ToString("yyyyMMddHHmmssfff"); CreateProductRequest createProductRequest = new CreateProductRequest { Description = "product-description", Locale = Locale.TR.ToString(), Name = $"product-name-{randomString}", ConversationId = "123456789" }; ResponseData <ProductResource> createProductResponse = Product.Create(createProductRequest, _options); CreatePlanRequest createPlanRequest = new CreatePlanRequest() { Locale = Locale.TR.ToString(), Name = $"plan-name-{randomString}", ConversationId = "123456789", TrialPeriodDays = 3, Price = "5.23", CurrencyCode = Currency.TRY.ToString(), PaymentInterval = PaymentInterval.WEEKLY.ToString(), RecurrenceCount = 12, PaymentIntervalCount = 1, PlanPaymentType = PlanPaymentType.RECURRING.ToString(), ProductReferenceCode = createProductResponse.Data.ReferenceCode }; PlanResource planResource = Plan.Create(createPlanRequest, _options).Data; InitializeCheckoutFormRequest request = new InitializeCheckoutFormRequest { Locale = Locale.TR.ToString(), Customer = new CheckoutFormCustomer { Email = $"iyzico-{randomString}@iyzico.com", Name = "customer-name", Surname = "customer-surname", BillingAddress = new Address { City = "İstanbul", Country = "Türkiye", Description = "billing-address-description", ContactName = "billing-contact-name", ZipCode = "010101" }, ShippingAddress = new Address { City = "İstanbul", Country = "Türkiye", Description = "shipping-address-description", ContactName = "shipping-contact-name", ZipCode = "010102" }, GsmNumber = "+905350000000", IdentityNumber = "55555555555", }, CallbackUrl = "https://www.google.com", ConversationId = "123456789", PricingPlanReferenceCode = planResource.ReferenceCode, SubscriptionInitialStatus = SubscriptionStatus.PENDING.ToString() }; CheckoutFormResource response = Subscription.InitializeCheckoutForm(request, _options); PrintResponse(response); Assert.AreEqual(Status.SUCCESS.ToString(), response.Status); Assert.IsNotNull(response.SystemTime); Assert.IsNotNull(response.CheckoutFormContent); Assert.IsNotNull(response.Token); Assert.IsNotNull(response.TokenExpireTime); Assert.Null(response.ErrorMessage); }