Exemple #1
0
        public async Task <IActionResult> Return(string token)
        {
            Subscription subscription = _dbContext.Subscriptions.FirstOrDefault(x => x.PayPalAgreementToken == token);

            var client = _clientFactory.GetClient();

            var request = new AgreementExecuteRequest(token);

            request.Body = "{}"; // Bug: Stupid hack workaround for a bug. Lost an hour to this.
            var result = await client.Execute(request);

            var executedAgreement = result.Result <Agreement>();

            // Save the PayPal agreement in our subscription so we can look it up later.
            subscription.PayPalAgreementId = executedAgreement.Id;

            await UpdateUserProfileForSubscriptions(executedAgreement, subscription.PayPalPlanId);

            _dbContext.SaveChanges();

            return(RedirectToAction("Thankyou"));
        }
        public static async Task <Agreement> ExecuteBillingAgreement(string token)
        {
            var client = PayPalConfiguration.GetClient();

            AgreementExecuteRequest request = new AgreementExecuteRequest(token);

            // NOTE: There is a known bug where this endpoint requires an empty JSON body.
            request.Body = "{}";

            try
            {
                HttpResponse response = await client.Execute(request);

                var statusCode = response.StatusCode;
                return(response.Result <Agreement>());
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();

                throw httpException;
            }
        }