62,055
社区成员
发帖
与我相关
我的任务
分享
SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
int count = 0;
string sparam = "";
string key = "";
string value = "";
for (int i = 0; i < result.Length; i++)
{
sparam = result[i];
count = sparam.IndexOf('=');
key = sparam.Substring(0, count);
value = sparam.Substring(count + 1, sparam.Length - (count + 1));
sd.Add(key, value);
}
// 出错 给定关键字不在字典中?
string sign = sd["sign"];
//配置待签名数据
Dictionary<string, string> dicData = MobileFunction.FilterPara(sd);
string req_Data = MobileFunction.CreateLinkString(dicData);
/// <summary>
/// 构造HTTP的POST请求
/// </summary>
/// <param name="sParaTemp">请求参数数组</param>
/// <param name="gateway">网关地址</param>
/// <param name="sellprivatekey">商户私钥</param>
/// <param name="input_charset">编码格式</param>
/// <returns>支付宝返回结果</returns>
public static string SendPostInfo(SortedDictionary<string, string> sParaTemp, string gateway, string key, string input_charset, string signType)
{
string strRequestData = "";
strRequestData = BuildRequestParaToString(sParaTemp, key, input_charset);
//format=xml&partner=2088901722289620&req_data=<direct_trade_create_req><subject></subject><out_trade_no>1305311728069918</out_trade_no><total_fee>0.01</total_fee><seller_account_name>zhifubao@topbs.co</seller_account_name><notify_url>MNotifyUrl.aspx</notify_url><out_user></out_user><merchant_url>MMerchantUrl.aspx</merchant_url><call_back_url>MReturnUrl.aspx</call_back_url></direct_trade_create_req>&req_id=2013/5/31 16:43:03&sec_id=0001&service=alipay.wap.trade.create.direct&v=2.0&sign=UTtYagNY6B4vnub0D3%2bjIo7xC5bEIcVrMaZf2wF5fdowoeRQXsgg6W6Njnajh74VA8u4IF6vcTC%2fIg%2b6aKk4EKwcN14ia8w08wr62tPpIdm%2bbkcCDfX%2bg%2fFjYpDOMkGysWy3WyHI7gt4DhHwAqrnxBnTddjS3%2b3xzq148xfGfEQ%3d
//strRequestData 里面是有 sign的 我调试过了 这里有sign属性
if (signType == "&sign_type=0001")
{
strRequestData += signType;
}
Encoding code = Encoding.GetEncoding(input_charset);
byte[] bytesRequestData = code.GetBytes(strRequestData);
string strUrl = gateway;
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl);
myReq.Method = "post";
myReq.ContentType = "application/x-www-form-urlencoded";
myReq.ContentLength = bytesRequestData.Length;
using (Stream reqStream = myReq.GetRequestStream())
{
reqStream.Write(bytesRequestData, 0, bytesRequestData.Length);
}
using (WebResponse wr = myReq.GetResponse())
{
Stream myStream = wr.GetResponseStream();
StreamReader sr = new StreamReader(myStream, code);
string strResult = sr.ReadToEnd();
// 到这里 没有sign属性了 突然消失了 不知道为什么
// 不知道为什么少了一个 sign 属性
return strResult;
}
}
if(sd.ContainsKey("sign"))
{
string sign = sd["sign"];
}