public static async Task <Agreement> CancelBillingAgreement(string agreementId)
        {
            var client = PayPalConfiguration.GetClient();

            AgreementCancelRequest request = new AgreementCancelRequest(agreementId);

            request.RequestBody(new AgreementStateDescriptor
            {
                Note = "Cancelling the agreement"
            });

            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;
            }
        }
Example #2
0
        private async Task TellPayPalToCancelSubscription(string payPalAgreement)
        {
            try
            {
                var client = _clientFactory.GetClient();

                var requestForPayPalAgreement = new AgreementGetRequest(payPalAgreement);
                var result = await client.Execute(requestForPayPalAgreement);

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

                var request = new AgreementCancelRequest(payPalAgreement).RequestBody(new AgreementStateDescriptor()
                {
                    Note = "Cancelled"
                });

                await client.Execute(request);
            }
            catch (Exception ex)
            {
                // save error in the database.
                PaypalErrors payPalReturnedError = new PaypalErrors()
                {
                    Exception = ex.Message,
                    DateTime  = DateTime.Now
                };

                this._dbContext.PaypalErrors.Add(payPalReturnedError);
                await this._dbContext.SaveChangesAsync();
            }
        }
        public async Task <IActionResult> Cancel(string id)
        {
            var client = _clientFactory.GetClient();

            var request = new AgreementCancelRequest(id).RequestBody(new AgreementStateDescriptor()
            {
                Note = "Cancelled"
            });
            await client.Execute(request);

            return(RedirectToAction("Details", new { id = id }));
        }
        private async Task TellPayPalToCancelSubscription(string payPalAgreement)
        {
            try
            {
                var client = _clientFactory.GetClient();

                var requestForPayPalAgreement = new AgreementGetRequest(payPalAgreement);
                var result = await client.Execute(requestForPayPalAgreement);

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

                var request = new AgreementCancelRequest(payPalAgreement).RequestBody(new AgreementStateDescriptor()
                {
                    Note = "Cancelled"
                });

                await client.Execute(request);

                var message = $"PayPal has been notified to cancel Subscription :{agreement.Id} for the package : {agreement.Description} under {agreement.Name}.";
                var subject = $"PayPal has been notified to Cancel Subscription :{agreement.Id}";
                await EmailAdmin(message, subject);

                //await EmailSuperAdmin("Notify PayPal to Cancel Subscription SUCCESS", "Notify PayPal to Cancel Subscription SUCCESS");
            }
            catch (Exception ex)
            {
                // save error in the database.
                PaypalErrors payPalReturnedError = new PaypalErrors()
                {
                    Exception = ex.Message,
                    DateTime  = DateTime.Now
                };

                _dbcontext.PaypalErrors.Add(payPalReturnedError);
                await _dbcontext.SaveChangesAsync();

                await EmailSuperAdmin($"Notify PayPal ({payPalAgreement}) to Cancel Subscription Failed", "Notify PayPal to Cancel Subscription Failed");
            }
        }