/// <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)); } }
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); }
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, }); }
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"])); }
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, }); }
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; } }
public RefundResult Refund(RefundParameter parameter) { throw new NotImplementedException(); }
public abstract RefundResult Refund(RefundParameter parameter);
/// <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); } }
public async Task <IActionResult> GetAllRefund([FromQuery] RefundParameter refundParameter) { var result = await refundService.GetAllRefund(refundParameter); return(StatusCode((int)result.Code, result.Value)); }