博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决微信支付中申请退款的基础连接已经关闭的错误
阅读量:6851 次
发布时间:2019-06-26

本文共 3330 字,大约阅读时间需要 11 分钟。

hot3.png

一、维信支付退款错误:基础连接已经关闭的错误

原因:退款操作接口是https 的地址。

解决方案:发起请求时开启tls/ssl 通道,添加安全证书。

推荐示例代码1:

///         /// 指定Post地址使用Get 方式获取全部字符串        ///         /// 请求后台地址        /// Post提交数据内容(utf-8编码的)        /// 
public static string PostSsl3(string url, string content) { string result = ""; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; //添加证书 X509Certificate2 certificate = new X509Certificate2(@"F:\Mvc_Site\zzy\QL.MiniMall.LA_SZ\cert\apiclient_cert.p12", "1530564111", X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet); req.ClientCertificates.Add(certificate); //设置安全模式 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3; #region 添加Post 参数 byte[] data = Encoding.UTF8.GetBytes(content); req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } #endregion HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; }

解决方案代码示例2:

public static string PostWebRequest(string postUrl, string paramData)        {            string ret = string.Empty;            try            {                X509Certificate2 certificate = new X509Certificate2(@"E:\工作项目\apiclient_cert.p12", "1519238551", X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);   //初始化证书                byte[] byteArray = Encoding.Default.GetBytes(paramData); //转化                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));                webReq.Method = "POST";                webReq.ContentType = "application/x-www-form-urlencoded";                webReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";                webReq.ClientCertificates.Add(certificate);     //添加证书                webReq.ContentLength = byteArray.Length;                                      Stream newStream = webReq.GetRequestStream();   //                newStream.Write(byteArray, 0, byteArray.Length);//写入参数                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();       //这里报错                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);                ret = sr.ReadToEnd();                newStream.Close();                sr.Close();                response.Close();                newStream.Close();            }            catch (Exception ex)            {                return ex.Message;            }            return ret;         }

 

 

 

 

 

转载于:https://my.oschina.net/tianma3798/blog/3034078

你可能感兴趣的文章
Dapper,大规模分布式系统的跟踪系统
查看>>
Spring源码之XMLBeanFactory
查看>>
PopupWindow 点击外部区域无法关闭的问题
查看>>
jQuery 遍历
查看>>
开源的丰富的flutter Icons库
查看>>
内存管理Release和Retain实现原理
查看>>
(JVM 笔记)Java虚拟机:Java 内存管理
查看>>
一分钟读懂兼容报告——行业对标数据助你定位产品状况
查看>>
Axure RP 7.0从入门到精通 Web+APP产品经理原型设计 彩色pdf扫描版
查看>>
点击H5页面的时候出现阴影
查看>>
js实现一个按照权重抽奖函数
查看>>
Java程序员必会的13种热门技能
查看>>
HTTP请求详解
查看>>
企业分布式微服务云SpringCloud SpringBoot mybatis (六)分布式配置中心(Spring Cloud Config)...
查看>>
java B2B2C springmvc mybatis多租户电子商城系统-(四)断路器(Hystrix)
查看>>
Spring Boot2.0 整合 Kafka
查看>>
Jackson异常情况处理
查看>>
Windows Server 2008R2 ADRMS 群集部署SOP
查看>>
squid+iptables实现透明代理
查看>>
phpMyWind本地伪静态设置方法_已迁移
查看>>