public async Task <ApiResponse> Refund([FromBody] ClientCancelPaymentRequest paymentRequest) { if (!ModelState.IsValid) { throw new ApiProblemDetailsException(ModelState); } var handler = _vendorHandlerManager.GetHandler(paymentRequest.PaymentType); return(await handler.Refund(paymentRequest).ConfigureAwait(false)); }
public async Task <ApiResponse> Refund(ClientCancelPaymentRequest paymentRequest) { var requestMap = _mapper.Map(paymentRequest, new CancelPaymentRequest()); requestMap.TransactionDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); 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 <CancelPaymentResponse>("/trade/v1/refund", requestMap.ToDictionary(), headers).ConfigureAwait(false); _logger.Log(LogLevel.Information, "Response from QFPayApi Cancel Payment", requestToQfPayResponse); ////temporary disable in order to see actual response from QFPay ////map result for client return //var responseToClient = _mapper.Map<PaymentResponseToClient>(requestToQfPayResponse); //_logger.Log(LogLevel.Information, "Return to Client Response", responseToClient); return(new ApiResponse(requestToQfPayResponse)); }