public async Task <ApiResponse> Post([FromBody] ClientPaymentRequest paymentRequest) { if (!ModelState.IsValid) { throw new ApiProblemDetailsException(ModelState); } var handler = _vendorHandlerManager.GetHandler(paymentRequest.PaymentType); return(await handler.Payment(paymentRequest).ConfigureAwait(false)); }
private void Add() { ClientPaymentRequest.Raise(new ClientPaymentConfirmation(Client.ID), x => { if (x.Confirmed) { _clientPaymentService.Add(x.ClientPayment); Items.Add(x.ClientPayment); SelectedItem = x.ClientPayment; Total = Items.Sum(y => y.Money); } }); }
private void Update() { ClientPaymentRequest.Raise(new ClientPaymentConfirmation(SelectedItem), x => { if (x.Confirmed) { _clientPaymentService.Update(x.ClientPayment); Total = Items.Sum(y => y.Money); } else { DataUtils.Copy(SelectedItem, _clientPaymentService.Find(SelectedItem.ID)); } }); }
public static PaymentRequest GetPaymentType(this ClientPaymentRequest request, string returnUrl = null) { if (!request.PaymentType.Contains("alipay")) { return(new WechatOnlinePayPaymentRequest()); } if (string.IsNullOrEmpty(returnUrl)) { return(new AlipayOnlinePayPaymentRequest()); } return(new AlipayOnlinePayPaymentRequest { ReturnUrl = returnUrl }); }
public async Task <ApiResponse> Payment(ClientPaymentRequest paymentRequest) { //NOTE: start of transactionNumber = TEST1001 , need to revert in the future var requestMap = _mapper.Map(paymentRequest, paymentRequest.GetPaymentType("http://localhost:44321/callback")); 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" } }; ////temporary disable in order to see actual response from QFPay //request to qfpay api var requestToQfPayResponse = await _qfPayApiConnect.PostFormDataAsync <PaymentResponse>("/trade/v1/payment", requestMap.ToDictionary(), headers).ConfigureAwait(false); _logger.Log(LogLevel.Information, "Response from QFPayApi Request Payment", requestToQfPayResponse); ////map result for client return //var responseToClient = _mapper.Map<PaymentResponseToClient>(requestToQfPayResponse); //_logger.Log(LogLevel.Information,"Return to Client Response",responseToClient); return(new ApiResponse(requestToQfPayResponse)); }