Senparc实现退费方法
var paramter = new Parameters(); Senparc.Weixin.TenPay.V3.RequestHandler packageReqHandler = new Senparc.Weixin.TenPay.V3.RequestHandler(null); var timeStamp = TenPayV3Util.GetTimestamp(); var nonceStr = TenPayV3Util.GetNoncestr(); //设置package订单参数 packageReqHandler.SetParameter("appid", paramter.appid); //公众账号ID packageReqHandler.SetParameter("mch_id", paramter.mchid); //商户号 packageReqHandler.SetParameter("out_trade_no", "AF0000000179"); //填入商家订单号 //packageReqHandler.SetParameter("transaction_id", "4200000568202004283369673010"); //填入微信订单号 packageReqHandler.SetParameter("out_refund_no", "224138540220170502163706139412");//填入退款订单号 packageReqHandler.SetParameter("total_fee", "1"); //填入总金额 packageReqHandler.SetParameter("refund_fee", "1"); //填入退款金额 packageReqHandler.SetParameter("op_user_id", paramter.mchid); //操作员Id,默认就是商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 string sign = packageReqHandler.CreateMd5Sign("key", paramter.key); packageReqHandler.SetParameter("sign", sign); //签名 //退款需要post的数据 string data = packageReqHandler.ParseXML(); //退款接口地址 string url = "https://api.mch.weixin.qq.com/secapi/pay/refund"; //本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中) string cert = @"E:\cert\apiclient_cert.p12"; //私钥(在安装证书时设置) string password = paramter.mchid; ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); //调用证书 X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet); #region 发起post请求 HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url); webrequest.ClientCertificates.Add(cer); webrequest.Method = "post"; byte[] postdatabyte = Encoding.UTF8.GetBytes(data); webrequest.ContentLength = postdatabyte.Length; Stream stream; stream = webrequest.GetRequestStream(); stream.Write(postdatabyte, 0, postdatabyte.Length); stream.Close(); HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse(); StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()); string responseContent = streamReader.ReadToEnd(); #endregion RefundResult result = new RefundResult(responseContent); // var res = XDocument.Parse(responseContent); //string openid = res.Element("xml").Element("out_refund_no").Value; return Content("申请成功:<br>" + HttpUtility.HtmlEncode(responseContent));