/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public override CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); result.AddError("Cancelling recurring orders not supported"); return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { CancelRecurringPaymentResult result = new CancelRecurringPaymentResult(); using (Subscription subscriptionservice = new Subscription()) { var merchant = Int32.Parse(ePayPaymentSettings.MerchantId); int epayresponse = -1; subscriptionservice.deletesubscription(merchant, Int32.Parse(cancelPaymentRequest.Order.SubscriptionTransactionId), ePayPaymentSettings.RemotePassword, ref epayresponse); if (epayresponse == -1) { // ok // "empty" result is sufficient } else { int epayresp = -1; string epayresponsetext = ""; subscriptionservice.getEpayError(merchant, 2, epayresponse, ePayPaymentSettings.RemotePassword, ref epayresponsetext, ref epayresp); result.AddError(String.Format("Cancel recurring failed, code {0} - {1}", epayresponse, epayresponsetext)); } } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); result.AddError("Recurring payment not supported"); return(result); }
/// <summary> /// 定期付款 /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); result.AddError("不支持定期付款"); return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public override CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); result.AddError(_localizationService.GetResource("Common.Payment.NoRecurringPaymentSupport")); return(result); }
public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { CancelRecurringPaymentResult c = new CancelRecurringPaymentResult(); c.AddError("Recurring payment not supported."); return(c); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public override CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest request) { var result = new CancelRecurringPaymentResult(); var order = request.Order; var settings = CommonServices.Settings.LoadSetting <TSetting>(order.StoreId); var req = new ManageRecurringPaymentsProfileStatusReq(); req.ManageRecurringPaymentsProfileStatusRequest = new ManageRecurringPaymentsProfileStatusRequestType(); req.ManageRecurringPaymentsProfileStatusRequest.Version = PayPalHelper.GetApiVersion(); var details = new ManageRecurringPaymentsProfileStatusRequestDetailsType(); req.ManageRecurringPaymentsProfileStatusRequest.ManageRecurringPaymentsProfileStatusRequestDetails = details; details.Action = StatusChangeActionType.Cancel; //Recurring payments profile ID returned in the CreateRecurringPaymentsProfile response details.ProfileID = order.SubscriptionTransactionId; using (var service = new PayPalAPIAASoapBinding()) { service.Url = PayPalHelper.GetPaypalServiceUrl(settings); service.RequesterCredentials = PayPalHelper.GetPaypalApiCredentials(settings); var response = service.ManageRecurringPaymentsProfileStatus(req); string error = ""; if (!PayPalHelper.CheckSuccess(_helper, response, out error)) { result.AddError(error); } } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); var authentication = PopulateMerchantAuthentication(); long subscriptionId = 0; long.TryParse(cancelPaymentRequest.Order.SubscriptionTransactionId, out subscriptionId); using (var webService = new net.authorize.api.Service()) { if (_authorizeNetPaymentSettings.UseSandbox) { webService.Url = "https://apitest.authorize.net/soap/v1/Service.asmx"; } else { webService.Url = "https://api.authorize.net/soap/v1/Service.asmx"; } var response = webService.ARBCancelSubscription(authentication, subscriptionId); if (response.resultCode == MessageTypeEnum.Ok) { //ok } else { result.AddError("Error cancelling subscription, please contact customer support. " + GetErrors(response)); } } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public Task <CancelRecurringPaymentResult> CancelRecurringPaymentAsync(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); result.AddError("Recurring payment not supported"); return(Task.FromResult(result)); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public override CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest request) { var result = new CancelRecurringPaymentResult(); var order = request.Order; var settings = Services.Settings.LoadSetting <TSetting>(order.StoreId); var req = new ManageRecurringPaymentsProfileStatusReq(); req.ManageRecurringPaymentsProfileStatusRequest = new ManageRecurringPaymentsProfileStatusRequestType(); req.ManageRecurringPaymentsProfileStatusRequest.Version = ApiVersion; var details = new ManageRecurringPaymentsProfileStatusRequestDetailsType(); req.ManageRecurringPaymentsProfileStatusRequest.ManageRecurringPaymentsProfileStatusRequestDetails = details; details.Action = StatusChangeActionType.Cancel; //Recurring payments profile ID returned in the CreateRecurringPaymentsProfile response details.ProfileID = order.SubscriptionTransactionId; using (var service = GetApiAaService(settings)) { var response = service.ManageRecurringPaymentsProfileStatus(req); string error = ""; if (!IsSuccess(response, out error)) { result.AddError(error); } } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); PrepareAuthorizeNet(); var request = new ARBCancelSubscriptionRequest { subscriptionId = cancelPaymentRequest.Order.SubscriptionTransactionId }; var controller = new ARBCancelSubscriptionController(request); controller.Execute(); var response = controller.GetApiResponse(); //validate if (response != null && response.messages.resultCode == messageTypeEnum.Ok) { return(result); } if (response != null) { foreach (var responseMessage in response.messages.message) { result.AddError(string.Format("Error processing recurring payment #{0}: {1}", responseMessage.code, responseMessage.text)); } } else { result.AddError("Authorize.NET unknown error"); } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); var order = cancelPaymentRequest.Order; var req = new ManageRecurringPaymentsProfileStatusReq(); req.ManageRecurringPaymentsProfileStatusRequest = new ManageRecurringPaymentsProfileStatusRequestType(); req.ManageRecurringPaymentsProfileStatusRequest.Version = GetApiVersion(); var details = new ManageRecurringPaymentsProfileStatusRequestDetailsType(); req.ManageRecurringPaymentsProfileStatusRequest.ManageRecurringPaymentsProfileStatusRequestDetails = details; details.Action = StatusChangeActionType.CANCEL; //Recurring payments profile ID returned in the CreateRecurringPaymentsProfile response details.ProfileID = order.SubscriptionTransactionId; var service = GetService(); var response = service.ManageRecurringPaymentsProfileStatus(req); string error; if (!PaypalHelper.CheckSuccess(response, out error)) { result.AddError(error); } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); return(result); }
/// <summary> /// Cancels a recurring payment. /// </summary> /// <param name="cancelPaymentRequest">Cancel recurring payment request.</param> /// <returns>Cancel recurring payment result.</returns> public virtual Task <CancelRecurringPaymentResult> CancelRecurringPaymentAsync(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); result.Errors.Add(T("Common.Payment.NoRecurringPaymentSupport")); return(Task.FromResult(result)); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { //always success var result = new CancelRecurringPaymentResult(); result.AddError("Recurring Payment method not supported"); return(result); }
public virtual async Task <IList <string> > CancelRecurringPaymentAsync(RecurringPayment recurringPayment) { Guard.NotNull(recurringPayment, nameof(recurringPayment)); var initialOrder = recurringPayment.InitialOrder; if (initialOrder == null) { return(new List <string> { T("Order.InitialOrderDoesNotExistForRecurringPayment") }); } CancelRecurringPaymentResult result = null; try { var request = new CancelRecurringPaymentRequest { Order = initialOrder }; result = await _paymentService.CancelRecurringPaymentAsync(request); if (result.Success) { recurringPayment.IsActive = false; initialOrder.AddOrderNote(T("Admin.OrderNotice.RecurringPaymentCancelled")); await _db.SaveChangesAsync(); await _messageFactory.SendRecurringPaymentCancelledStoreOwnerNotificationAsync(recurringPayment, _localizationSettings.DefaultAdminLanguageId); } } catch (Exception ex) { result ??= new(); result.Errors.Add(ex.ToAllMessages()); } if (result.Errors.Any()) { ProcessErrors(initialOrder, result.Errors, "Admin.OrderNotice.RecurringPaymentCancellationError"); await _db.SaveChangesAsync(); } return(result.Errors); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); var order = cancelPaymentRequest.Order; var req = new ManageRecurringPaymentsProfileStatusReq(); req.ManageRecurringPaymentsProfileStatusRequest = new ManageRecurringPaymentsProfileStatusRequestType(); req.ManageRecurringPaymentsProfileStatusRequest.Version = GetApiVersion(); var details = new ManageRecurringPaymentsProfileStatusRequestDetailsType(); req.ManageRecurringPaymentsProfileStatusRequest.ManageRecurringPaymentsProfileStatusRequestDetails = details; details.Action = StatusChangeActionType.Cancel; //Recurring payments profile ID returned in the CreateRecurringPaymentsProfile response details.ProfileID = order.SubscriptionTransactionId; using (var service2 = new PayPalAPIAASoapBinding()) { if (!_paypalDirectPaymentSettings.UseSandbox) { service2.Url = "https://api-3t.paypal.com/2.0/"; } else { service2.Url = "https://api-3t.sandbox.paypal.com/2.0/"; } service2.RequesterCredentials = new CustomSecurityHeaderType(); service2.RequesterCredentials.Credentials = new UserIdPasswordType(); service2.RequesterCredentials.Credentials.Username = _paypalDirectPaymentSettings.ApiAccountName; service2.RequesterCredentials.Credentials.Password = _paypalDirectPaymentSettings.ApiAccountPassword; service2.RequesterCredentials.Credentials.Signature = _paypalDirectPaymentSettings.Signature; service2.RequesterCredentials.Credentials.Subject = ""; var response = service2.ManageRecurringPaymentsProfileStatus(req); string error = ""; if (!PaypalHelper.CheckSuccess(response, out error)) { result.AddError(error); } } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); var bpManager = new BluePayManager { AccountId = _bluePayPaymentSettings.AccountId, UserId = _bluePayPaymentSettings.UserId, SecretKey = _bluePayPaymentSettings.SecretKey, MasterId = cancelPaymentRequest.Order.SubscriptionTransactionId }; bpManager.CancelRecurring(); if (!bpManager.IsSuccessfulCancelRecurring) { result.AddError(bpManager.Message); } return(result); }
/// <summary> /// Cancels a recurring payment /// </summary> /// <param name="cancelPaymentRequest">Request</param> /// <returns>Result</returns> public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); try { var apiContext = PaypalHelper.GetApiContext(_paypalDirectPaymentSettings); var subscription = Agreement.Get(apiContext, cancelPaymentRequest.Order.SubscriptionTransactionId); var reason = new AgreementStateDescriptor { note = string.Format("Cancel subscription {0}", cancelPaymentRequest.Order.OrderGuid) }; subscription.Cancel(apiContext, reason); } catch (PayPal.PayPalException exc) { if (exc is PayPal.ConnectionException) { var error = JsonFormatter.ConvertFromJson <Error>((exc as PayPal.ConnectionException).Response); if (error != null) { result.AddError(string.Format("PayPal error: {0} ({1})", error.message, error.name)); if (error.details != null) { error.details.ForEach(x => result.AddError(string.Format("{0} {1}", x.field, x.issue))); } } } //if there are not the specific errors add exception message if (result.Success) { result.AddError(exc.InnerException != null ? exc.InnerException.Message : exc.Message); } } return(result); }
public CancelRecurringPaymentResult CancelRecurringPayment(CancelRecurringPaymentRequest cancelPaymentRequest) { var result = new CancelRecurringPaymentResult(); var order = cancelPaymentRequest.Order; try { var stripeSubscriptionService = new StripeSubscriptionService(); var customerId = order.SubscriptionTransactionId; var customerSubscriptions = stripeSubscriptionService.List(customerId); foreach (var productId in order.OrderItems.Where(orderItem => orderItem.Product.IsRecurring) .Select(orderItem => orderItem.Product.Id.ToString())) { stripeSubscriptionService.Cancel(customerId, customerSubscriptions.FirstOrDefault(x => x.StripePlan.Id == productId).Id); } } catch (Exception exception) { result.AddError(exception.Message); } return(result); }
public async Task <IList <string> > Handle(CancelRecurringPaymentCommand request, CancellationToken cancellationToken) { if (request.RecurringPayment == null) { throw new ArgumentNullException("recurringPayment"); } var initialOrder = request.RecurringPayment.InitialOrder; if (initialOrder == null) { return new List <string> { "Initial order could not be loaded" } } ; var requestresult = new CancelRecurringPaymentRequest(); CancelRecurringPaymentResult result = null; try { requestresult.Order = initialOrder; result = await _paymentService.CancelRecurringPayment(requestresult); if (result.Success) { //update recurring payment request.RecurringPayment.IsActive = false; await _orderService.UpdateRecurringPayment(request.RecurringPayment); //add a note await _orderService.InsertOrderNote(new OrderNote { Note = "Recurring payment has been cancelled", DisplayToCustomer = false, CreatedOnUtc = DateTime.UtcNow, OrderId = initialOrder.Id, }); //notify a store owner await _workflowMessageService .SendRecurringPaymentCancelledStoreOwnerNotification(request.RecurringPayment, _localizationSettings.DefaultAdminLanguageId); } } catch (Exception exc) { if (result == null) { result = new CancelRecurringPaymentResult(); } result.AddError(string.Format("Error: {0}. Full exception: {1}", exc.Message, exc)); } //process errors string error = ""; for (int i = 0; i < result.Errors.Count; i++) { error += string.Format("Error {0}: {1}", i, result.Errors[i]); if (i != result.Errors.Count - 1) { error += ". "; } } if (!String.IsNullOrEmpty(error)) { //add a note await _orderService.InsertOrderNote(new OrderNote { Note = string.Format("Unable to cancel recurring payment. {0}", error), DisplayToCustomer = false, CreatedOnUtc = DateTime.UtcNow, OrderId = initialOrder.Id, }); //log it var logError = string.Format("Error cancelling recurring payment. Order #{0}. Error: {1}", initialOrder.OrderNumber, error); await _logger.InsertLog(LogLevel.Error, logError, logError); } return(result.Errors); } }