internal static RefundRequest refundRequest(string paymentScenario, string currency, string amount, string token, string cardNumber, string expiryDateMMYY, string cardVerificationCode, string customerReference, string paymentGuid) { RefundRequest refundRequest = new RefundRequest(); refundRequest.PaymentGuid = paymentGuid; refundRequest.PaymentScenario = paymentScenario; refundRequest.Currency = currency; refundRequest.Amount = amount; refundRequest.Token = token; refundRequest.CardNumber = cardNumber; refundRequest.ExpiryDateMMYY = expiryDateMMYY; refundRequest.CustomerReference = customerReference; string validationErrors = validateRefundRequest(refundRequest); if (validationErrors != null) { throw new HpECommerceException("Message failed validation \n" + validationErrors); } return refundRequest; }
internal HpEcommerce.messages.Refund sendRefundRequest(RefundRequest request) { HttpWebResponse response = client.sendPostRequest(UrlGenerator.getRefundUrl(CardAcceptor, Environment), HpXmlSerializer.getMessage(typeof(RefundRequest), request), SharedSecret); if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Forbidden) { return HpXmlSerializer.convertRefund(getResponsestring(response)); } else { throw new HpServerError("Refund declined.", HpXmlSerializer.convertErrorMessage(getResponsestring(response))); } }
private static string validateRefundRequest(RefundRequest request) { StringBuilder validationErrors = new StringBuilder(); ValidateCommonFields(request, validationErrors); if (!isValidRefundRequest(request)) { validationErrors.Append("Request has invalid card data. It must have either Card Number and Expiry date or Token"); } if (validationErrors.Length == 0) { return null; } else { return validationErrors.ToString(); } }
private static bool isValidRefundRequest(RefundRequest message) { return (message.CardNumber != null && message.ExpiryDateMMYY != null) || message.Token != null || message.PaymentGuid != null; }