static string BuildMessage(PayoutErrorResponse errors) { PayoutResult payout = errors?.PayoutResult; if (payout != null) { return("declined payout '" + payout.Id + "' with status '" + payout.Status + "'"); } return("the Ingenico ePayments platform returned a declined refund response"); }
static string BuildMessage(PayoutErrorResponse errors) { PayoutResult payout = errors != null ? errors.PayoutResult : null; if (payout != null) { return("declined payout '" + payout.Id + "' with status '" + payout.Status + "'"); } return("the GlobalCollect platform returned a declined refund response"); }
public DeclinedPayoutException(System.Net.HttpStatusCode statusCode, string responseBody, PayoutErrorResponse errors) : base(BuildMessage(errors), statusCode, responseBody, errors?.ErrorId, errors?.Errors) { _errors = errors; }
protected Exception CreateException(System.Net.HttpStatusCode statusCode, string responseBody, object errorObject, CallContext context) { if (errorObject is PaymentErrorResponse && ((PaymentErrorResponse)errorObject).PaymentResult != null) { return(new DeclinedPaymentException(statusCode, responseBody, (PaymentErrorResponse)errorObject)); } if (errorObject is PayoutErrorResponse && ((PayoutErrorResponse)errorObject).PayoutResult != null) { return(new DeclinedPayoutException(statusCode, responseBody, (PayoutErrorResponse)errorObject)); } if (errorObject is RefundErrorResponse && ((RefundErrorResponse)errorObject).RefundResult != null) { return(new DeclinedRefundException(statusCode, responseBody, (RefundErrorResponse)errorObject)); } string errorId; IList <APIError> errors; if (errorObject is PaymentErrorResponse) { PaymentErrorResponse paymentErrorResponse = (PaymentErrorResponse)errorObject; errorId = paymentErrorResponse.ErrorId; errors = paymentErrorResponse.Errors; } else if (errorObject is PayoutErrorResponse) { PayoutErrorResponse payoutErrorResponse = (PayoutErrorResponse)errorObject; errorId = payoutErrorResponse.ErrorId; errors = payoutErrorResponse.Errors; } else if (errorObject is RefundErrorResponse) { RefundErrorResponse refundErrorResponse = (RefundErrorResponse)errorObject; errorId = refundErrorResponse.ErrorId; errors = refundErrorResponse.Errors; } else if (errorObject is ErrorResponse) { ErrorResponse errorResponse = (ErrorResponse)errorObject; errorId = errorResponse.ErrorId; errors = errorResponse.Errors; } else { throw new ArgumentException("unsupported error object type: " + errorObject.GetType().ToString()); } switch (statusCode) { case HttpStatusCode.BadRequest: return(new ValidationException(statusCode, responseBody, errorId, errors)); case HttpStatusCode.Forbidden: return(new AuthorizationException(statusCode, responseBody, errorId, errors)); case HttpStatusCode.NotFound: return(new ReferenceException(statusCode, responseBody, errorId, errors)); case HttpStatusCode.Conflict: if (IsIdempotenceError(errors, context)) { string idempotenceKey = context.IdempotenceKey; long? idempotenceRequestTimestamp = context.IdempotenceRequestTimestamp; return(new IdempotenceException(idempotenceKey, idempotenceRequestTimestamp, statusCode, responseBody, errorId, errors)); } return(new ReferenceException(statusCode, responseBody, errorId, errors)); case HttpStatusCode.Gone: return(new ReferenceException(statusCode, responseBody, errorId, errors)); case HttpStatusCode.InternalServerError: return(new GlobalCollectException(statusCode, responseBody, errorId, errors)); case HttpStatusCode.BadGateway: return(new GlobalCollectException(statusCode, responseBody, errorId, errors)); case HttpStatusCode.ServiceUnavailable: return(new GlobalCollectException(statusCode, responseBody, errorId, errors)); default: return(new ApiException(statusCode, responseBody, errorId, errors)); } }
public static EntityMock<PayoutErrorResponse> CreatePayoutErrorResponse() { var errorResponse = new PayoutErrorResponse() { TransactionType = TransactionTypes.Credit, Status = "error", ResponseCode = "57", UniqueId = "44177a21403427eb96664a6d7e5d5d48", TransactionId = "1196439228475036bc3a791", Code = ErrorCodes.InputDataInvalidError, TechnicalMessage = "’billing_address[zip_code]’ is invalid!", Message = "’billing_address[zip_code]’ is invalid!", Mode = "live", ProxyTime = "2007-11-30T16:13:50Z", Descriptor = "descriptor one", Amount = 90, Currency = Iso4217CurrencyCodes.USD, SentToAcquirer = false }; var errorResponseXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<payment_response>" + "<transaction_type>credit</transaction_type>" + "<status>error</status>" + "<response_code>57</response_code>" + "<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>" + "<transaction_id>1196439228475036bc3a791</transaction_id>" + "<code>340</code>" + "<technical_message>’billing_address[zip_code]’ is invalid!</technical_message>" + "<message>’billing_address[zip_code]’ is invalid!</message>" + "<mode>live</mode>" + "<timestamp>2007-11-30T16:13:50Z</timestamp>" + "<descriptor>descriptor one</descriptor>" + "<amount>9000</amount>" + "<currency>USD</currency>" + "<sent_to_acquirer>false</sent_to_acquirer>" + "</payment_response>"; return new EntityMock<PayoutErrorResponse>(errorResponse, errorResponseXml); }