• 18743 阅读
  • 0 回复
主题: 调试错误,请回到请求来源地,重新发起请求。错误代码 ILLEGAL_SIGN

支付宝小二
级别: 大一
帖子:
3858
精华:
45
金币:
4547
其它:
徽章:
注册时间: 2007-12-29
调试错误,请回到请求来源地,重新发起请求。错误代码 ILLEGAL_SIGN
— 本帖被 来自远方 执行置顶操作(2010-12-21) —
调试错误,请回到请求来源地,重新发起请求。错误代码 ILLEGAL_SIGN

含义:签名验证出错

解决方法:

第一部分:商户网站是SHOPEX、ECSHOP、PHPWIND、DISCUZ、HISHOP、乐度、360等网店后台拥有可设置填写合作身份者ID、安全校验码等信息的网店或论坛系统

第一步:设置支付宝接口功能
  • SHOPEX网店支付宝设置教程
  • ECSHOP网店支付宝设置教程
  • DISCUZ网店支付宝设置教程
  • PHPWIND网店支付宝设置教程
  • HISHOP网店支付宝设置教程
  • V5SHOP网店支付宝设置教程
  • SHOPNC支付管理设置  

    如图:

    第二步若第一步无法解决,则请重装支付宝接口插件

    第三步若第二步无法解决,请赶紧联系网店、论坛系统商的客服人员或到其官方网站论坛发帖求助。

    第二部分:商户网站自行开发或非以上提到的网店论坛系统,且自己不会编程也没有相关程序开发人员。

    请找专业的网站程序开发技术人员帮忙解决。

    第三部分:商户网站自行开发或非以上提到的网店论坛系统,且自己是技术人员。

    第一步:检查安全校验码是否正确,是否没有空格。
    安全校验码是由数字和字母组成的32位字符串。
    登陆支付宝,点击导航栏中“商家服务”,找到“合作身份(Partner ID)查询”与“安全校验码(key)查询” 。,页面显示如下界面,


    找到交易安全校验码(key),核对页面文件中的参数key,是否一致,若有空格或其他特殊字符,则需去除。


    第二步:检查所有参数是否都有填写信息,即有值。

    第三步:检查所有参数是否有包含空格(空格的表示有:“ ”、“+”、“%40”),若有空格,需全部去掉。

    第四步:检查所有参数是否有自定义参数存在,若有,须全部去掉。
    自定义参数在return_url与notify_url两个参数中最容易被带上,一般表现的形式是:
    return_url=http://www.xxx.com/alipay/return_url.asp?userid=1234
    该userid=1234即是自定义参数。


    第五步:检查要加密的所有参数(即参数组里的所有参数)在加密之前的排序功能是否运行正常,即函数是否正确。
    各开发语言对应的参数组所在位置如下:
    ASP:Alipay_Payto.asp里mystr = Array括号中包含的参数集合
    PHP:index.php里$parameter = array括号中包含的参数集合
    ASP.NET:Alipay.cs里string[] Oristr 数组里包含的参数集合
    JAVA:src/ com/ alipay/ util/ Payment.java 里Map params = new HashMap();包含的参数集合

    排序需要遵循的是把所有参数要从字母a到z的顺序进行排序(不包括https://www.alipay.com/cooperate/gateway.do?,及参数sign、sign_type、key)。

    各开发语言对应的排序代码所属的文件位置如下:
    ASP:Alipay_Payto.asp
    PHP:alipay_service.php
    ASP.NET:AliPay.cs中函数BubbleSort(string[] r)
    JAVA:src/ com/ alipay/ util/ Payment.java

    第六步:检查加密的所有参数(即参数组里的所有参数)与URL传递的参数是否一致。
    URL传递的参数的含义是:
    GET方式https://www.alipay.com/cooperate/gateway.do?后面跟着的所有用&字符连起来的参数信息即是要传递给支付宝的参数。
    POST方式中form表单里所有<input type=”hidden”>这种的隐藏控件都是要传递给支付宝的参数(包括https://www.alipay.com/cooperate/gateway.do?,及参数sign、sign_type)。

    把这些参数与加密参数组的参数进行一一核对(不包括https://www.alipay.com/cooperate/gateway.do?,及参数sign、sign_type、key),检查是否有遗漏或不是支付宝列表中列出的参数掺杂在里面。

    第七步:检查编码格式是否一致。
    开发语言ASP是GB2312的编码格式则不会出现因为编码格式而造成的该调试错误。
    开发语言ASP 是UTF-8的编码格式,
    由于ASP不支持UTF-8编码的MD5加密,因此需要重新编写针对utf-8编码格式的MD5加密函数。

    开发语言是PHP的网站:
    需要检查页面编码格式是否与参数_input_charset的编码格式一致。支付宝的一部分PHP代码示例中,默认的编码格式是GBK,若要改成UTF-8,那么需要做如下更改:
    1、$_input_charset = "utf-8";
    2、alipay_service.php文件中“实现多种字符编码方式”的这个函数,要改成function charset_encode($input,$_output_charset ,$_input_charset ="utf-8" )
    3、index.php的页面属性改成utf-8的编码格式


    开发语言是ASP.NET的网站
    需要检查werb.config文件、参数_input_charset的编码格式、整站编码三者是否一致。

    开发语言是JAVA的网站
    需要检查服务器编码、页面文件编码以及参数_input_charset的编码格式三者是否一致。

    第八步:支付时使用的GET提交方式
    检查最终计算得出的URL链接(以https://www.alipay.com/cooperate/gateway.do?开头,sign_type=MD5结尾)总共的字节长是否超过2M字节,若超过,请删减参数subject和body里的值的长度。

    第九步:支付时使用的POST表单提交方式
    分步一、检查form表单里所有<input type=”hidden”>这种的隐藏控件是否与参数组中的一致,且还有https://www.alipay.com/cooperate/gateway.do?、 sign、sign_type这三个隐藏控件。
    分步二、检查编码参数_input_charset。
    不论是哪种编码格式,该参数呈现在程序代码里的方式是需要跟在网关地址的后面,如下所示:
    UTF-8编码格式: <form name=”alipaysubmit” method=”post” action=”https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8”>
    GB2312或GBK的编码格式:<form name=”alipaysubmit” method=”post” action=”https://www.alipay.com/cooperate/gateway.do?_input_charset=gb2312”>



    若还是解决不了,请按照发帖格式要求来发帖
    标题:错误代码 ILLEGAL_SIGN
    内容:
    出错网站地址:www.xxx.com
    签约网站地址:www.xxx.com
    出现该错误的页面链接地址:https://www.alipay.com/cooperate/gateway.do?agent=2088202815271415&body=以下金额(158.00元)已包含配送费用&logistics_fee=0&logistics_payment=SELLER_PAY&logistics_type=EXPRESS&notify_url=alipay/alipay/Alipay_Notify.asp&out_trade_no=2009127-21539652-10513&partner=2088202815271415&payment_type=1&price=158.00&quantity=1&service=create_partner_trade_by_buyer&subject=2009127-21539652-10513号订单在线支付&sign=7b630a4b47089d0ac96d86e013a7a659&sign_type=MD5

    提问处:请点击
[ 此帖被来自远方在2011-04-11 12:43重新编辑 ]
分享到: 分享到QQ空间 分享到网易微博