收藏
回答

微信退款接口调用失败

微信退款接口调用失败,报基础连接已经关闭: 连接被意外关闭的错误。请问怎么解决

我们使用的是C#语言


回答关注问题邀请回答
收藏

1 个回答

  • 微信支付技术助手7
    微信支付技术助手7
    2019-03-11

    您好,在post请求中添加证书就能解决这个问题

    最重要的是两行代码:初始化证书和添加证书。


    2019-03-11
    有用
    回复 5
    • Z · Sir
      Z · Sir
      2019-03-11


      已经添加证书了,还是在报这个错

      2019-03-11
      回复
    • Z · Sir
      Z · Sir
      2019-03-11


      2019-03-11
      回复
    • 微信支付技术助手7
      微信支付技术助手7
      2019-03-12回复Z · Sir

      您好,请参考:

      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;

                      Util.SetCertificatePolicy();

                      

                      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;

              }


      2019-03-12
      回复
    • Z · Sir
      Z · Sir
      2019-03-12

      已解决,谢谢

      2019-03-12
      1
      回复
    • 52HZ
      52HZ
      2019-07-07回复Z · Sir

      楼主  如何解决得? 重新编写上面给的代码吗?  最近我这里微信退费也提示同样错误。能不能给点建议

      2019-07-07
      回复
登录 后发表内容