using System.Net.Http; using System.Text; using System.Threading.Tasks; using Hncore.Infrastructure.Common; using Hncore.Infrastructure.Serializer; using Hncore.Pass.PaymentCenter.WeiFuTong.Refund; namespace Hncore.Pass.PaymentCenter.WeiFuTong.ClientExtension { public static class RefundExt { /// /// 退款请求 /// /// /// /// public static async Task RefundAsync(this WeiFuTongClient weiFuTongClient, WeiFuTongRefundRequest request) { StringBuilder log = new StringBuilder(); var body = request.ToXml(); log.Append("请求:\r\n" + body); var response = await weiFuTongClient.CreateHttpClient() .PostAsync(request.PaymentChannel.GetUrl(), new StringContent(body)); var resText = await response.Content.ReadAsStringAsync(); log.Append("\r\n响应:" + resText); LogHelper.Trace($"威富通发起退款", log.ToString()); Util.CheckSignFromXml(resText, request.MchInfo); var res = XML.XmlDeserialize(resText); res.HandleError(); return res; } /// /// 退款查询 /// /// /// /// public static async Task QueryRefundAsync(this WeiFuTongClient weiFuTongClient, WeiFuTongRefundQueryRequest request) { StringBuilder log = new StringBuilder(); var body = request.ToXml(); log.Append("请求:\r\n" + body); var response = await weiFuTongClient.CreateHttpClient() .PostAsync(request.PaymentChannel.GetUrl(), new StringContent(body)); var resText = await response.Content.ReadAsStringAsync(); log.Append("\r\n响应:" + resText); //LogHelper.Trace($"威富通-退款查询", log.ToString()); Util.CheckSignFromXml(resText, request.MchInfo); var res = XML.XmlDeserialize(resText).ParseItemsFromXml(resText); if (!(res.IsCancel() || res.IsNotExists()) && res.HasError()) { res.HandleError(); } return res; } } }