Beispiel #1
0
        public async Task CreateSubscription()
        {
            var plan = new PayPalPlan
            {
                Currency    = "RUB",
                Total       = 100m,
                Name        = "Basic annual subscription",
                PeriodType  = PeriodType.Month,
                Description = "Annual subscription plan (Russia 100r.)",
                Frequency   = 1,
                CancelUrl   = "http://localhost:1234",
                ReturnUrl   = "http://localhost:1234",
            };

            await _payPalService.CreatePlanAsync(plan);

            await _payPalService.ActivatePlanAsync(plan);


            var agreement = new PayPalAgreement
            {
                Name         = "Bandmap pro-account",
                Description  = "Annual subscription giving special features to the user on the Bandmap service",
                PayPalPlanId = plan.Id
            };
            var agreementResult = await _payPalService.CreateAgreementAsync(agreement);
        }
Beispiel #2
0
        public async Task ActivatePlanAsync(PayPalPlan plan)
        {
            var payPalPatchModel = new PayPalPatchModel
            {
                PayPalPatchValue = new PayPalPatchValue
                {
                    State = "ACTIVE"
                },
                Operation = "replace",
                Path      = "/"
            };

            var jsonContent    = JsonConvert.SerializeObject(new[] { payPalPatchModel });
            var requestContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            var request = new HttpRequestMessage(new HttpMethod("PATCH"), $"{PlanUrl}{plan.Id}");

            request.Content = requestContent;

            var response = await _http.SendAsync(request);

            var content = await response.Content.ReadAsStringAsync();

            if (response.StatusCode == HttpStatusCode.OK && String.IsNullOrEmpty(content))
            {
                return;
            }

            var createdPlan = JsonConvert.DeserializeObject <PayPalPlanCreateResponse>(content);

            if (!String.IsNullOrWhiteSpace(createdPlan.ErrorMessage))
            {
                throw new PaypalException(createdPlan.ErrorMessage, createdPlan.ErrorDetailes.ToModels(), createdPlan.InformationLink);
            }
        }
Beispiel #3
0
        public async Task CreatePlanAsync(PayPalPlan plan)
        {
            var createPlanRequest = new PayPalPlanCreateRequest
            {
                Name               = plan.Name,
                Description        = plan.Description,
                Type               = "fixed",
                PaymentDefinitions = new[]
                {
                    new PayPalPaymentDefinition
                    {
                        Frequency         = GetFrequency(plan.PeriodType),
                        FrequencyInterval = plan.Frequency.ToString(),
                        Amount            = new PayPalPlanAmount
                        {
                            Currency = plan.Currency,
                            Total    = plan.Total,
                        },
                        Name   = "Regular payment definition",
                        Type   = "REGULAR",
                        Cycles = "12",
                    }
                },
                MerchantPreferences = new PayPalMerchantPreferences
                {
                    ReturnUrl = plan.ReturnUrl,
                    CancelUrl = plan.CancelUrl,
                    InitialFailAmountAction = "CONTINUE",
                    MaxFailAttempts         = "3",
                    AutoBillAmount          = "YES",
                    SetupFee = new PayPalPlanAmount
                    {
                        Currency = plan.Currency,
                        Total    = 1,
                    }
                }
            };

            var jsonContent    = JsonConvert.SerializeObject(createPlanRequest);
            var requestContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            var request = new HttpRequestMessage(HttpMethod.Post, PlanUrl);

            request.Content = requestContent;

            var response = await _http.SendAsync(request);

            var content = await response.Content.ReadAsStringAsync();

            var createdPlan = JsonConvert.DeserializeObject <PayPalPlanCreateResponse>(content);

            if (!String.IsNullOrWhiteSpace(createdPlan.ErrorMessage))
            {
                throw new PaypalException(createdPlan.ErrorMessage, createdPlan.ErrorDetailes.ToModels(), createdPlan.InformationLink);
            }

            plan.Id = createdPlan.Id;
        }
Beispiel #4
0
        public async Task CreateAsync(PayPalPlan plan)
        {
            var localeId = await Context.Products.Include(x => x.ProductLocales)
                           .Where(x => x.Name == plan.ProductName)
                           .GetTranslatedProducts()
                           .Select(x => x.Locale.Id)
                           .SingleOrDefaultAsync();

            var entity = new PayPalPlanEntity()
            {
                Id = plan.Id,
                ProductLocaleId = localeId
            };
            await Context.PayPalPlans.AddAsync(entity);
        }