/// <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); }
public override string RecurringBillingCancelSubscription(String RecurringSubscriptionID, int OriginalRecurringOrderNumber, IDictionary <string, string> TransactionContext) { string profileID = string.Empty; string result = string.Empty; profileID = PayPalController.GetPPECProfileID(OriginalRecurringOrderNumber); if (profileID != string.Empty) { ManageRecurringPaymentsProfileStatusRequestDetailsType recurringRequestDetails = new ManageRecurringPaymentsProfileStatusRequestDetailsType(); recurringRequestDetails.Action = StatusChangeActionType.Cancel; recurringRequestDetails.ProfileID = profileID; ManageRecurringPaymentsProfileStatusRequestType recurringRequest = new ManageRecurringPaymentsProfileStatusRequestType(); recurringRequest.ManageRecurringPaymentsProfileStatusRequestDetails = recurringRequestDetails; recurringRequest.Version = API_VER; ManageRecurringPaymentsProfileStatusReq profileStatusRequest = new ManageRecurringPaymentsProfileStatusReq(); profileStatusRequest.ManageRecurringPaymentsProfileStatusRequest = recurringRequest; ManageRecurringPaymentsProfileStatusResponseType recurringResponse = new ManageRecurringPaymentsProfileStatusResponseType(); recurringResponse = IPayPal.ManageRecurringPaymentsProfileStatus(profileStatusRequest); if (recurringResponse != null && recurringResponse.Ack.ToString().StartsWith("success", StringComparison.InvariantCultureIgnoreCase)) { result = AppLogic.ro_OK; } else { if (recurringResponse.Errors != null) { bool first = true; for (int ix = 0; ix < recurringResponse.Errors.Length; ix++) { if (!first) { result += ", "; } result += recurringResponse.Errors[ix].LongMessage; first = false; } } } } else { result = "No matching Profile ID found for that order number"; SysLog.LogMessage("An attempt was made to cancel a PayPal recurring order with no matching Profile ID", "Original order ID was: " + OriginalRecurringOrderNumber.ToString(), MessageTypeEnum.Informational, MessageSeverityEnum.Alert); } 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; 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); }