private static VCodePayResponsEntity PostData(string url, string postData, out string result)
{
string text = string.Empty;
result = "";
VCodePayResponsEntity wei = new VCodePayResponsEntity();
try
{
Uri requestUri = new Uri(url);
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
Encoding uTF = Encoding.UTF8;
byte[] bytes = uTF.GetBytes(postData);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "text/xml";
httpWebRequest.ContentLength = (long)postData.Length;
using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(postData);
}
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
{
using (Stream responseStream = httpWebResponse.GetResponseStream())
{
Encoding uTF2 = Encoding.UTF8;
StreamReader streamReader = new StreamReader(responseStream, uTF2);
text = streamReader.ReadToEnd();
XmlDocument xmlDocument = new XmlDocument();
try
{
xmlDocument.LoadXml(text);
}
catch (Exception ex)
{
text = string.Format("获取信息错误doc.load:{0}", ex.Message) + text;
}
try
{
if (xmlDocument == null)
{
result = text;
return null;
}
XmlNode xmlNode = xmlDocument.SelectSingleNode("xml/return_code");
if (xmlNode == null)
{
result = text;
return null;
}
if (!(xmlNode.InnerText == "SUCCESS"))
{
result = xmlNode.InnerText;
return null;
}
XmlNode xmlNode2 = xmlDocument.SelectSingleNode("xml/prepay_id");
if (xmlNode2 != null)
{
wei.prepay_id = xmlNode2.InnerText;
}
xmlNode2 = xmlDocument.SelectSingleNode("xml/appid");
if (xmlNode2 != null)
{
wei.appid = xmlNode2.InnerText;
}
xmlNode2 = xmlDocument.SelectSingleNode("xml/mch_id");
if (xmlNode2 != null)
{
wei.mch_id = xmlNode2.InnerText;
}
xmlNode2 = xmlDocument.SelectSingleNode("xml/device_info");
if (xmlNode2 != null)
{
wei.device_info = xmlNode2.InnerText;
}
xmlNode2 = xmlDocument.SelectSingleNode("xml/nonce_str");
if (xmlNode2 != null)
{
wei.Nonce_str = xmlNode2.InnerText;
}
xmlNode2 = xmlDocument.SelectSingleNode("xml/sign");
if (xmlNode2 != null)
{
wei.sign = xmlNode2.InnerText;
}
xmlNode2 = xmlDocument.SelectSingleNode("xml/trade_type");
if (xmlNode2 != null)
{
wei.trade_type = xmlNode2.InnerText;
}
xmlNode2 = xmlDocument.SelectSingleNode("xml/code_url");
if (xmlNode2 != null)
{
wei.code_url = xmlNode2.InnerText;
}
return wei;
}
catch (Exception ex)
{
text = string.Format("获取信息错误node.load:{0}", ex.Message) + text;
}
}
}
}
catch (Exception ex)
{
result = string.Format("获取信息错误post error:{0}", ex.Message) + text;
}
return null;
}
public static string RequestWeixin(VCodePayEntity wei)
{
Dictionary<string, string> dic = EntityToDic(wei);
string sign = GetResultSign(dic,null);
dic.Add("sign", sign);
string reqtest = BuildXml(dic, false);
string msg;
VCodePayResponsEntity post = null;
int loop = 0;
do
{
post = PostData(prepay_id_Url, reqtest, out msg);
if (post != null)
{
break;
}
loop++;
System.Threading.Thread.Sleep(500);
} while (loop < 5);
if (post == null)
{
return msg;
}
try
{
CreateQrcode(post);
return post.sign + ".jpg";
}
catch (Exception)
{
}
return "";
}