最近在网站集成支付宝时,发现了两个比较容易出现的问题,网站找了一下也没有太多相关这方面的答案,我把我的解决方法贴出来。希望可以帮到需要的朋友:
第一种情况:无法解析远程主机www.alipay.com
第二种情况:MD5解密出错
第一种情况,主要出现在虚拟主机上的情况比较多。一开始以为是DNS有问题,但事实上DNS没有问题。后来发现造成这个原因是因为支付宝的类中,使用HttpWebRequest 会在服务端向支付宝网关发送请求数据,但一般服务器对浏览器的安全设置比较高。造成发送不成功,这个时候只需要把网址加入信任域就可以了。方法很简单:通过浏览器访问一下www.alipay.com 然后加入信任域就可以了。最好加*.aplipay.com。这个是解决办法之一,希望可以帮助到你。
第二种情况,MD5解密出错,解决这个问题找了好久都没有发现,实在没有办法只好写了个日志文件,通过对比才发现问题出在这儿。在支付宝的构造待md5摘要字符串时:
NameValueCollection coll = Request.QueryString;
String[] requestarr = coll.AllKeys;
for (i = 0; i < Sortedstr.Length; i++)
{
if (Request.Form[Sortedstr[i]] != "" && Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")
//支付宝只排除了自身参数,很有可能还有其他的参数,在集成到DISCUZ!NT中时就发现了还有一个有关模板的参数,也要排除掉。
{
if (i == Sortedstr.Length - 1)
{
prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]]);
}
else
{
prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]] + "&");
}
}
}
上面的问题你有没有碰到呢!我就碰到了!