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;
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
 /// <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));
 }