public ThreeDSAuthorization2Response ThreeDSAuthorize2(ThreeDSAuthorization2Request request) { // Validate request RequestValidator.ValidateThreeDSAuthorize2Request(request); // Map input request in the XML Request var requestXML = RequestMapper.MapThreeDSAuthorization2Request(request, _shopId); // Calculate and set MAC requestXML.Request.MAC = _encoder.GetMac(RequestHandler.GetMacDictionary(requestXML), _apiResultKey); var xmlBody = XmlTool.Serialize(requestXML); // Do call to VPOS var xmlResponse = _restClient.CallApi(_urlAPI, xmlBody); var objectResponse = XmlTool.Deserialize <BPWXmlResponse <Data3DSResponse> >(xmlResponse); // Verify Mac Response VerifyMacResponse(objectResponse); VerifyAuthorization(objectResponse.Data.Authorization); VerifyPanAliasData(objectResponse.Data.PanAliasData); return(ResponseMapper.MapThreeDSAuthorization2(objectResponse)); }