public RefundResponse Refund(RefundRequest request) { // Validate Request RequestValidator.ValidateRefundRequest(request); // Map input request in the XML Request var requestXML = RequestMapper.MapRefundRequest(request, _shopId); //calculate MAC requestXML.Request.MAC = _encoder.GetMac(RequestHandler.GetMacDictionary(requestXML), _apiResultKey); // Do call to VPOS var xmlBody = XmlTool.Serialize(requestXML); var xmlResponse = _restClient.CallApi(_urlAPI, xmlBody); var objectResponse = XmlTool.Deserialize <BPWXmlResponse <DataManageOperation> >(xmlResponse); // Verify Mac Response VerifyMacResponse(objectResponse); VerifyOperation(objectResponse.Data.Operation); return(ResponseMapper.MapRefundResponse(objectResponse)); }