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