110,537
社区成员
发帖
与我相关
我的任务
分享
string strHtml = "";
HttpWebResponse webreponse;
try
{
//系统必须已经导入cert指向的证书
string url = "https://api.mch.weixin.qq.com/secapi/pay/refund";
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
System.Security.Cryptography.X509Certificates.X509Certificate2 cert =
store.Certificates.Find(X509FindType.FindBySubjectName, "证书名称就不写出来了", false)[0];
HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
webrequest.ClientCertificates.Add(cert);
webrequest.Method = "post";
webrequest.KeepAlive = true;
webreponse = (HttpWebResponse)webrequest.GetResponse();
Stream stream = webreponse.GetResponseStream();
string resp = string.Empty;
using (StreamReader reader = new StreamReader(stream))
{
resp = reader.ReadToEnd();
}
strHtml = resp;
}
catch (Exception exp)
{
strHtml = exp.ToString();
}
System.Security.Cryptography.X509Certificates.X509Certificate2 cert = store.Certificates.Find(X509FindType.FindBySubjectName, "证书名称就不写出来了", false)[0];
string _poststr = "";
string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
string certPath = Server.MapPath("/weixinApp/cert/apiclient_cert.p12"); //证书已上传到对应目录
string password = "1244531402";
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
X509Certificate cert = new X509Certificate(certPath, password);
byte[] buffer = Encoding.UTF8.GetBytes(sbxml.ToString());//红包相关的xml数据
StreamWriter myWriter = null;
//根据url创建HttpWebRequest对象
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Method = "POST";
objRequest.ContentLength = buffer.Length;
objRequest.ContentType = "text/xml";//提交xml
//是否和请求一起发送
//objRequest.UseDefaultCredentials = true;
objRequest.ClientCertificates.Add(cert);
try
{
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(sbxml.ToString());
}
catch (Exception e)
{
WriteFileLog(e.Message);
}
finally
{
myWriter.Close();
}
//读取服务器返回信息
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
//using作为语句,用于定义一个范围,在此范围的末尾将释放对象
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
//ReadToEnd适用于小文件的读取,一次性的返回整个文件
_poststr = sr.ReadToEnd();
sr.Close();
}
//是否使用证书
if (isUseCert)
{
string path = HttpContext.Current.Request.PhysicalApplicationPath;
X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);
request.ClientCertificates.Add(cert);
}