Esempio n. 1
0
        /// <summary>
        /// Gets the Refund.
        /// </summary>
        /// <param name="refundParameter">The Refund parameter request.</param>
        /// <returns></returns>
        //public async Task<APIResponse> GetAllRefund(RefundParameter refundParameter)
        //{
        //    try
        //    {
        //        string serializedRefund;

        //        List<RefundResponse> refund;

        //        var encodedRefund = await distributedCache.GetAsync(WalletServiceOperation.GetWalletCacheName);

        //        if (encodedRefund != null)
        //        {
        //            serializedRefund = Encoding.UTF8.GetString(encodedRefund);
        //            refund = JsonConvert.DeserializeObject<List<RefundResponse>>(serializedRefund);
        //        }
        //        else
        //        {
        //            var client = httpClientFactory.CreateClient(WalletServiceOperation.serviceName);

        //            UriBuilder url = new UriBuilder(servicesConfig.Wallet + WalletServiceOperation.GetAllRefund());
        //            url.Query = QueryStringHelper.ConvertToQueryString(refundParameter);

        //            var response = await client.GetAsync(url.ToString());
        //            refund = JsonConvert.DeserializeObject<List<RefundResponse>>(await response.Content.ReadAsStringAsync());

        //            serializedRefund = JsonConvert.SerializeObject(refund);
        //            encodedRefund = Encoding.UTF8.GetBytes(serializedRefund);
        //            var options = new DistributedCacheEntryOptions()
        //                            .SetSlidingExpiration(TimeSpan.FromMinutes(1))
        //                            .SetAbsoluteExpiration(DateTime.Now.AddHours(1));

        //            await distributedCache.SetAsync(WalletServiceOperation.GetWalletCacheName, encodedRefund, options);
        //        }

        //        return new APIResponse(refund, HttpStatusCode.OK);
        //    }
        //    catch (Exception ex)
        //    {
        //        logger.Error(ex, "Exception in method 'GetAllRefund()'");
        //        var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
        //        return new APIResponse(exMessage, HttpStatusCode.InternalServerError);
        //    }
        //}
        public async Task <APIResponse> GetAllRefund(RefundParameter refundParameter)
        {
            try
            {
                var client = httpClientFactory.CreateClient(WalletServiceOperation.serviceName);

                UriBuilder url = new UriBuilder(servicesConfig.Wallet + WalletServiceOperation.GetAllRefund());
                url.Query = QueryStringHelper.ConvertToQueryString(refundParameter);
                var response = await client.GetAsync(url.ToString());

                if (response.IsSuccessStatusCode)
                {
                    var refund = JsonConvert.DeserializeObject <List <RefundResponse> >(await response.Content.ReadAsStringAsync());
                    return(new APIResponse(refund, HttpStatusCode.OK));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetAllRefund()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> GetAllRefund([FromQuery] RefundParameter refundParameter)
        {
            var getAllRefundQuery = new GetAllRefundQuery(refundParameter);

            var result = await mediator.Send(getAllRefundQuery);

            return(StatusCode((int)result.Code, result.Value));
        }
        /// <summary>
        /// Gets all Refund.
        /// </summary>
        /// <param name="refundParameter">The Refund parameters.</param>
        /// <returns></returns>
        //public async Task<List<Refund>> GetAllRefund(RefundParameter refundParameter)
        //{
        //    {
        //        var getRefundParameter = new object[]
        //        {
        //            new MySqlParameter("@p_Value", refundParameter.Value),
        //            new MySqlParameter("@p_IsforSingleRefund", refundParameter.IsforSingleRefund),
        //            new MySqlParameter("@p_IsforRaisedBy", refundParameter.IsforRaisedBy)
        //        };

        //        var refund = await FindAll("CALL SpSelectActiveRefund(@p_Value,@p_IsforSingleRefund,@p_IsforRaisedBy)", getRefundParameter).ToListAsync();

        //        return refund;
        //    }
        //}
        public async Task <List <RefundResponse> > GetAllRefund(RefundParameter refundParameter)
        {
            var refunds = FindByCondition(x => x.Id > 0).OrderBy(x => x.Id)
                          .ProjectTo <RefundResponse>(mapper.ConfigurationProvider);

            SearchByRefundByParameters(ref refunds, refundParameter);
            var result = await refunds.ToListAsync();

            return(result);
        }
Esempio n. 4
0
        public override RefundResult Refund(RefundParameter parameter)
        {
            var config = new Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayBarcode, parameter.TradeID));
            SortedDictionary <string, string> postDict = new SortedDictionary <string, string>();

            postDict["app_id"]    = config.appid;
            postDict["method"]    = "alipay.trade.refund";
            postDict["charset"]   = "utf-8";
            postDict["sign_type"] = "RSA";
            postDict["timestamp"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            postDict["version"]   = "1.0";

            var bizParameters = new SortedDictionary <string, string>
            {
                { "out_trade_no", parameter.TradeID },
                { "refund_amount", parameter.Amount.ToString("0.00") },
            };

            postDict["biz_content"] = Newtonsoft.Json.JsonConvert.SerializeObject(bizParameters);

            //获取签名的内容
            var signContent = Helper.GetUrlString(postDict);

            var rsa = Way.Lib.RSA.CreateRsaFromPrivateKey(config.merchantPrivateKey, Way.Lib.RSAKeyType.PKCS1);

            rsa.KeySize = 1024;

            var signatureBytes = rsa.SignData(Encoding.UTF8.GetBytes(signContent), HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);

            // 把密文加入提交的参数列表中
            postDict["sign"] = Convert.ToBase64String(signatureBytes);

            var result = Helper.PostQueryString(ServerUrl, Helper.BuildQuery(postDict), 15);
            // 把json结果转为对象
            var refundResult = Newtonsoft.Json.JsonConvert.DeserializeObject <AlipayTradeRefundResult>(result);

            CheckSign(result, "alipay_trade_refund_response", refundResult.sign, config);

            if (refundResult.alipay_trade_refund_response.code == "10000")
            {
                return(new RefundResult()
                {
                    Result = RefundResult.ResultEnum.SUCCESS,
                    ServerMessage = result,
                });
            }
            return(new RefundResult()
            {
                Result = RefundResult.ResultEnum.FAIL,
                ServerMessage = result,
            });
        }
Esempio n. 5
0
        public override RefundResult Refund(RefundParameter parameter)
        {
            var config = PayFactory.GetConfig <Config>(this.GetType(), parameter.TradeID);

            var head = new Dictionary <string, object>();

            head["service"] = "front.refund";

            var body = new Dictionary <string, object>();

            body["merchant_no"]      = config.merchant_id;
            body["out_trade_no"]     = parameter.TradeID;
            body["out_refund_no"]    = Guid.NewGuid().ToString("N");
            body["refund_fee"]       = parameter.Amount;
            body["refund_reason"]    = parameter.Reason;
            body["spbill_create_ip"] = "8.8.8.8";

            var strResult = LianTuo_Helper.PostJsonReturnString(config, URL, head, body, 8);

            var responseObj = Newtonsoft.Json.JsonConvert.DeserializeObject <ResponseObject>(strResult);

            string serverSign = responseObj.head["sign"].ToString();

            if (LianTuo_Helper.Sign(config.key, responseObj.head, responseObj.body) != serverSign)
            {
                throw new Exception("服务器返回信息签名检验失败");
            }

            if ((string)responseObj.body["is_success"] == "S")
            {
                return(new RefundResult {
                    Result = RefundResult.ResultEnum.SUCCESS,
                    ServerMessage = strResult
                });
            }
            else if ((string)responseObj.body["is_success"] == "F")
            {
                return(new RefundResult
                {
                    Error = (string)responseObj.body["message"],
                    Result = RefundResult.ResultEnum.FAIL,
                    ServerMessage = strResult
                });
            }
            return(CheckRefundStateInLoop(parameter.TradeID, (string)body["out_refund_no"]));
        }
Esempio n. 6
0
        public override RefundResult Refund(RefundParameter parameter)
        {
            var config = new Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.WeiXinScanQRCode, parameter.TradeID));
            SortedDictionary <string, string> postDict = new SortedDictionary <string, string>();

            postDict["appid"]         = config.AppID;
            postDict["mch_id"]        = config.MchID;
            postDict["nonce_str"]     = Guid.NewGuid().ToString().Replace("-", "");   //随机字符串
            postDict["out_trade_no"]  = parameter.TradeID;
            postDict["out_refund_no"] = Guid.NewGuid().ToString("N");                 //商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。

            postDict["total_fee"]  = ((int)(parameter.TotalAmount * 100)).ToString(); //单位:分
            postDict["refund_fee"] = ((int)(parameter.Amount * 100)).ToString();      //单位:分
            postDict["sign_type"]  = "MD5";
            postDict["sign"]       = Helper.GetMd5Hash(postDict, config.Key);

            var xml = ToXml(postDict);

            var result = Helper.PostXml(RefundUrl, xml, 15, config.SSLCERT_PATH, config.SSLCERT_PASSWORD);

            XDocument xmldoc = XDocument.Parse(result);

            CheckSign(xmldoc, config);

            var return_code = xmldoc.Root.XPathSelectElement("return_code").Value;
            var return_msg  = xmldoc.Root.XPathSelectElement("return_msg").Value;

            if (return_code == "SUCCESS" && return_msg == "OK")
            {
                return(new RefundResult()
                {
                    Result = RefundResult.ResultEnum.SUCCESS,
                    ServerMessage = result,
                });
            }
            return(new RefundResult()
            {
                Result = RefundResult.ResultEnum.FAIL,
                ServerMessage = result,
            });
        }
Esempio n. 7
0
        public void LianTuo_Refund()
        {
            var pay = PayFactory.CreatePay(PayInterfaceType.LianTuoAlipayBarcode);

            var parameter = new RefundParameter()
            {
                Amount  = 0.01,
                TradeID = "6f4066943146464eb7a8720d139bbfee",
                Reason  = "买错了",
            };

            try
            {
                var result = pay.Refund(parameter);
            }
            catch (PayServerReportException)
            {
            }
            catch
            {
                throw;
            }
        }
Esempio n. 8
0
 public RefundResult Refund(RefundParameter parameter)
 {
     throw new NotImplementedException();
 }
Esempio n. 9
0
 public abstract RefundResult Refund(RefundParameter parameter);
Esempio n. 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GetAllRefundQuery"/> class.
 /// </summary>
 /// <param name="refundParameter">The Refund parameters.</param>
 public GetAllRefundQuery(RefundParameter refundParameter)
 {
     RefundParameter = refundParameter;
 }
        private void SearchByRefundByParameters(ref IQueryable <RefundResponse> refunds, RefundParameter refundParameter)
        {
            if (refundParameter.IsforSingleRefund == true)
            {
                refunds = refunds.Where(x => x.Id == refundParameter.Value).OrderBy(x => x.Id);
            }

            if (refundParameter.IsforRaisedBy == true)
            {
                refunds = refunds.Where(x => x.RaisedBy.Equals(refundParameter.Value)).OrderBy(x => x.Id);
            }
        }
Esempio n. 12
0
        public async Task <IActionResult> GetAllRefund([FromQuery] RefundParameter refundParameter)
        {
            var result = await refundService.GetAllRefund(refundParameter);

            return(StatusCode((int)result.Code, result.Value));
        }