Stangray
SAP THQ Apple Nintendo Google Reynolds Amazon Yahoo

最近在网站集成支付宝时,发现了两个比较容易出现的问题,网站找了一下也没有太多相关这方面的答案,我把我的解决方法贴出来。希望可以帮到需要的朋友:

    第一种情况:无法解析远程主机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]] + "&");

                    }
                }
            }

上面的问题你有没有碰到呢!我就碰到了!

posted on 2010-03-17 16:49  Stangray  阅读(798)  评论(0编辑  收藏  举报