用C#网页 做手机支付宝功能,用RSA签名
结果 支付宝接口 接入的时候出错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);有人知道为什么
结果 支付宝接口 接入的时候出错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);有人知道为什么
解决方案 »
- c#.net下,如何将 SQL查询到的数据,输出到EXCEL表格。
- 动态播放FLV的问题,Repeater怎么绑定获取路径.
- 在C的头文件中与void FAR PASCAL des(unsigned char *data,unsigned char *key,unsigned char *result,int option);对应的C#代码应当如何
- 有个反射的问题,求解
- asp.net 如何制作Chm格式的帮助?
- php的.inc文件如何在asp.net中引用??
- 关于在后台动态添加图像坐标链接的问题
- 如何获取iframe框架中页面的控件属性?
- .net 操作excel中的宏中的按钮
- 请问,如何在UserControl的按钮点击事件中,调用.aspx页面(包含此用户控件)中的Public void()?在线等待,马上给分
- IE9图片上传预览问题?
- 请问如何将数据库的内容统计并显示在网页中
或者
key = sparam.Substring(0, count); ==>key = sparam.Substring(0, count-1);
if(sd.ContainsKey("sign"))
{
string sign = sd["sign"];
}
/// 构造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>[email protected]</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;
}
}