public void Should_Upgrade_Subscription()
        {
            UpgradeSubscriptionRequest request = new UpgradeSubscriptionRequest
            {
                Locale                      = Locale.TR.ToString(),
                ConversationId              = "123456789",
                SubscriptionReferenceCode   = "subscriptionReferenceCode",
                NewPricingPlanReferenceCode = "newPricingPlanReferenceCode",
                UseTrial                    = true,
                ResetRecurrenceCount        = true,
                UpgradePeriod               = SubscriptionUpgradePeriod.NOW.ToString()
            };

            IyzipayResourceV2 response = Subscription.Upgrade(request, options);

            PrintResponse(response);

            Assert.AreEqual(Status.SUCCESS.ToString(), response.Status);
            Assert.IsNotNull(response.SystemTime);
            Assert.Null(response.ErrorMessage);
        }
예제 #2
0
        public void Should_Upgrade_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 subscriptionInitializeRequest = 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,
                SubscriptionInitialStatus = SubscriptionStatus.ACTIVE.ToString()
            };

            ResponseData <SubscriptionCreatedResource> initializeResponse = Subscription.Initialize(subscriptionInitializeRequest, _options);

            CreatePlanRequest newPlanRequest = new CreatePlanRequest()
            {
                Locale               = Locale.TR.ToString(),
                Name                 = $"new-plan-name-{randomString}",
                ConversationId       = "123456789",
                TrialPeriodDays      = 2,
                Price                = "3.23",
                CurrencyCode         = Currency.TRY.ToString(),
                PaymentInterval      = PaymentInterval.WEEKLY.ToString(),
                RecurrenceCount      = 2,
                PaymentIntervalCount = 1,
                PlanPaymentType      = PlanPaymentType.RECURRING.ToString(),
                ProductReferenceCode = createProductResponse.Data.ReferenceCode
            };

            PlanResource newPlanResource = Plan.Create(newPlanRequest, _options).Data;

            UpgradeSubscriptionRequest request = new UpgradeSubscriptionRequest
            {
                Locale                      = Locale.TR.ToString(),
                ConversationId              = "123456789",
                SubscriptionReferenceCode   = initializeResponse.Data.ReferenceCode,
                NewPricingPlanReferenceCode = newPlanResource.ReferenceCode,
                UseTrial                    = true,
                ResetRecurrenceCount        = true,
                UpgradePeriod               = SubscriptionUpgradePeriod.NOW.ToString()
            };

            IyzipayResourceV2 response = Subscription.Upgrade(request, _options);

            PrintResponse(response);

            Assert.AreEqual(Status.SUCCESS.ToString(), response.Status);
            Assert.IsNotNull(response.SystemTime);
            Assert.Null(response.ErrorMessage);
        }
예제 #3
0
        public static IyzipayResourceV2 Upgrade(UpgradeSubscriptionRequest request, Options options)
        {
            string uri = $"{options.BaseUrl}/v2/subscription/subscriptions/{request.SubscriptionReferenceCode}/upgrade";

            return(RestHttpClientV2.Create().Post <IyzipayResourceV2>(uri, GetHttpHeadersWithRequestBody(request, uri, options), request));
        }