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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        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
            });
        }
예제 #6
0
        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));
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }