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));

 

posted @ 2020-07-09 17:02  逍遥Phoenix  阅读(474)  评论(0编辑  收藏  举报