php微信红包证书出错,微信红包CA证书出错

我们在对接微信商户平台的现金红包高级接口时向

https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack

接口地址post数据后 返回的xml文件中报 CA证书出错

详细返回XML包: 10017876100

原因是向微信服务器发送请求数据时没有带证书请求:

///

/// 发送请求

///

/// 发送拼接的参数

/// 要发送到的链接地址

/// 返回xml

public static string Send(string data, string url)

{

return Send(Encoding.GetEncoding("UTF-8").GetBytes(data), url);

}

public static string Send(byte[] data, string url)

{

string cert = ConfigurationManager.AppSettings["CertPath"].Trim();//证书存放的地址

string password = ConfigurationManager.AppSettings["MchId"].Trim();//证书密码 即商户号

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

X509Certificate cer = new X509Certificate(cert, password);

#region 该部分是关键,若没有该部分则在IIS下会报 CA证书出错

X509Certificate2 certificate = new X509Certificate2(cert, password);

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);

store.Open(OpenFlags.ReadWrite);

store.Remove(certificate);   //可省略

store.Add(certificate);

store.Close();

#endregion             Stream responseStream;             HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;             if (request == null)             {                 throw new ApplicationException(string.Format("Invalid url string: {0}", url));             }             request.UserAgent = sUserAgent;             request.ContentType = sContentType;             request.ClientCertificates.Add(cer);             request.Method = "POST";             request.ContentLength = data.Length;             Stream requestStream = request.GetRequestStream();             requestStream.Write(data, 0, data.Length);             requestStream.Close();             try             {                 responseStream = request.GetResponse().GetResponseStream();             }             catch (Exception exception)             {                 throw exception;             }             string str = string.Empty;             using (StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("UTF-8")))             {                 str = reader.ReadToEnd();             }             responseStream.Close();             return str;         }         private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)         {             if (errors == SslPolicyErrors.None)                 return true;             return false;         }     }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值