Ejemplo n.º 1
0
        public async Task <ApiResponse> Inquiry(ClientInquiryRequest inquiryRequest)
        {
            var requestMap = _mapper.Map(inquiryRequest, new InquirePaymentRequest());

            requestMap.MerchantId = _qfPayConfiguration.MerchantId;

            //signature generation
            var toSign = $"{requestMap.ToDictionary().GetDataString()}{_qfPayConfiguration.ApiKey}";

            _logger.Log(LogLevel.Information, $"Hashing input: {toSign.HideKey(_qfPayConfiguration.ApiKey)}, key: {_qfPayConfiguration.ApiKey.HideKey(_qfPayConfiguration.ApiKey)}");
            var sha256Hash = toSign.ToSha256Hash();

            //header authentication
            var headers = new Dictionary <string, string>
            {
                { "X-QF-APPCODE", _qfPayConfiguration.AppCode },
                { "X-QF-SIGN", sha256Hash },
                { "X-QF-SIGNTYPE", "SHA256" }
            };

            //request to qfpay api
            var requestToQfPayResponse =
                await _qfPayApiConnect.PostFormDataAsync <InquirePaymentResponse>("/trade/v1/query",
                                                                                  requestMap.ToDictionary(), headers).ConfigureAwait(false);

            _logger.Log(LogLevel.Information, "Response from QFPayApi Inquire Payment", requestToQfPayResponse);


            ////temporary disable in order to see actual response from QFPay
            ////map result for client return
            //var responseToClient = _mapper.Map<InquirePaymentResponseToClient>(requestToQfPayResponse);
            //_logger.Log(LogLevel.Information, "Return to Client Response", responseToClient);

            return(new ApiResponse(requestToQfPayResponse));
        }