public static async Task <Plan> CreateBillingPlan(string name, string description, string baseUrl) { var client = PayPalConfiguration.GetClient(); var returnUrl = baseUrl + "/Home/SubscribeSuccess"; var cancelUrl = baseUrl + "/Home/SubscribeCancel"; // Plan Details var plan = CreatePlanObject("Test Plan", "Plan for Tuts+", returnUrl, cancelUrl, PlanInterval.Month, 1, (decimal)19.90, trial: true, trialLength: 1, trialPrice: 0); PlanCreateRequest request = new PlanCreateRequest(); request.RequestBody(plan); try { HttpResponse response = await client.Execute(request); var statusCode = response.StatusCode; return(response.Result <Plan>()); } catch (HttpException httpException) { var statusCode = httpException.StatusCode; var debugId = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault(); throw httpException; } }
public async void CallsCreatePlan() { // Arrange var paypalRestApiClientMock = new Mock <IPaypalRestApiClient>(); var sut = new BillingPlanApi(paypalRestApiClientMock.Object); var planCreationRequest = new PlanCreateRequest(); string expectedUrl = $"{ExpectedApiUrl}"; // Act await sut.CreatePlanAsync(planCreationRequest); // Assert paypalRestApiClientMock.Verify(x => x.Post <PlanCreateResponse>(planCreationRequest, It.Is <string>(url => url.Equals(expectedUrl, StringComparison.InvariantCultureIgnoreCase)))); }
/// <summary> /// Create the default billing plans for this website /// </summary> private async Task CreatePayPalPlans() { var client = _clientFactory.GetClient(); foreach (var plan in BillingPlanSeed.PayPalPlans("https://www.andytipster.com/Subscription/Return", "https://www.andytipster.com/Subscription/Cancel")) //foreach (var plan in BillingPlanSeed.PayPalPlans("https://localhost:44376/Subscription/Return", "https://localhost:44376/Subscription/Cancel")) { // Create Plan var request = new PlanCreateRequest().RequestBody(plan); BraintreeHttp.HttpResponse result = await client.Execute(request); var obj = result.Result <Plan>(); // Activate Plan var activateRequest = new PlanUpdateRequest <Plan>(obj.Id) .RequestBody(GetActivatePlanBody()); await client.Execute(activateRequest); // Add to database record //var dbPlan = _dbContext.BillingPlans.FirstOrDefault(x => // x.Name == obj.Name); //if (dbPlan != null && string.IsNullOrEmpty(dbPlan.PayPalPlanId)) //{ // dbPlan.PayPalPlanId = obj.Id; // await _dbContext.SaveChangesAsync(); //} } //// Create plans //var justBrowsingPlanRequest = new PlanCreateRequest().RequestBody(justBrowsingPlan); //var justBrowsingPlanResult = await client.Execute(justBrowsingPlanRequest); //var justBrowsingPlanObject = justBrowsingPlanResult.Result<Plan>(); //var letsDoThisPlanRequest = new PlanCreateRequest().RequestBody(letsDoThisPlan); //var letsDoThisPlanResult = await client.Execute(letsDoThisPlanRequest); //var letsDoThisPlanObject = letsDoThisPlanResult.Result<Plan>(); //var beardIncludedPlanRequest = new PlanCreateRequest().RequestBody(beardIncludedPlan); //var beardIncludedPlanResult = await client.Execute(beardIncludedPlanRequest); //var beardIncludedPlanObject = beardIncludedPlanResult.Result<Plan>(); //var hookItToMyVeinsPlanRequest = new PlanCreateRequest().RequestBody(hookItToMyVeinsPlan); //var hookItToMyVeinsPlanResult = await client.Execute(hookItToMyVeinsPlanRequest); //var hookItToMyVeinsPlanObject = hookItToMyVeinsPlanResult.Result<Plan>(); //// Activate plans //var activateJustBrowsingPlanRequest = new PlanUpdateRequest<Plan>(justBrowsingPlanObject.Id) // .RequestBody(GetActivatePlanBody()); //await client.Execute(activateJustBrowsingPlanRequest); //var activateletsDoThisPlanRequest = new PlanUpdateRequest<Plan>(letsDoThisPlanObject.Id) // .RequestBody(GetActivatePlanBody()); //await client.Execute(activateletsDoThisPlanRequest); //var activateBeardIncludedPlanRequest = new PlanUpdateRequest<Plan>(beardIncludedPlanObject.Id) // .RequestBody(GetActivatePlanBody()); //await client.Execute(activateBeardIncludedPlanRequest); //var activateHookItToMyVeinsPlanRequest = new PlanUpdateRequest<Plan>(hookItToMyVeinsPlanObject.Id) // .RequestBody(GetActivatePlanBody()); //await client.Execute(activateHookItToMyVeinsPlanRequest); }
/// <summary> /// Creates a plan that defines pricing and billing cycle details for subscriptions. /// </summary> /// <param name="plan">Plan request object that contains desired configuration.</param> /// <returns>A task object representing plan creation response.</returns> public async Task <PlanCreateResponse> CreatePlanAsync(PlanCreateRequest plan) { return(await _paypalRestApiClient.Post <PlanCreateResponse>(plan, ApiUrl)); }