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");
        }
Exemplo n.º 2
0
        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;
 }
Exemplo n.º 4
0
        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);
        }