Пример #1
0
        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));
         }
     });
 }
Пример #4
0
 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
     });
 }
Пример #5
0
        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));
        }