C# 数字证书微信API调用使用参考事例

时间:2021-06-11 14:39:30

X.509 v.3 证书的方法。一个比较完整的调用  微信  API的示例:

private stringGetResponseResult()
        {

string strResponseResult="";//返回结果

            try
            {
                string url = "https://api.mch.weixin.qq.com/secapi/pay/refund";
                string cert = @"";//证书文件(完整文件名称)
                string password = "123467890";//验证证书密码

//对服务端证书进行有效性校验(非第三方权威机构颁发的证书,如自己生成的,不进行验证,这里返回true)

                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                X509Certificate cer = new X509Certificate(cert, password);// X.509 v.3 证书的方法。
                HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);//模拟http请求
                webrequest.ClientCertificates.Add(cer);
                webrequest.Timeout = 30000;
                webrequest.Method = "post";
                HttpWebResponse webreponse = (HttpWebResponse)webrequest.GetResponse();//获取相应流信息
                Stream stream = webreponse.GetResponseStream();
                string resp = string.Empty;
                using (StreamReader reader = new StreamReader(stream))
                {
                    resp = reader.ReadToEnd();
                }
              strResponseResult = resp;
            }
            catch (Exception exp)
            {
                throw new Exception("Exception Information:"+exp.Message.ToString());
            }

return strResponseResult;

        }
        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            if (errors == SslPolicyErrors.None)
                return true;  
            return false; 
        }