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); }
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); } }
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; }
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); }