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 <string> GetOrCreatePayPalPlanIdAsync(CreatePlanParameter parameter) { var planId = await _paymentsUnitOfWork.PayPalPlanRepository.GetPlanIdAsync(parameter.ProductName); if (!string.IsNullOrEmpty(planId)) { return(planId); } var product = await _paymentsUnitOfWork.ProductRepository.GetAsync(parameter.ProductName); var payPalPlan = new PayPalPlan { Name = product.Title, Description = product.Description, Currency = product.Currency, Frequency = 1, PeriodType = ToPeriodType(product.Period), Total = product.Price, ReturnUrl = parameter.ReturnUrl, CancelUrl = parameter.CancelUrl }; await _payPalService.CreatePlanAsync(payPalPlan); await _payPalService.ActivatePlanAsync(payPalPlan); var plan = new Core.Models.PayPalPlan { Id = payPalPlan.Id, ProductName = parameter.ProductName, }; await _paymentsUnitOfWork.PayPalPlanRepository.CreateAsync(plan); await _paymentsUnitOfWork.SaveAsync(); return(payPalPlan.Id); }