调试错误,请回到请求来源地,重新发起请求。错误代码 ILLEGAL_SIGN

【字号: 】【打印】【收藏
情况一:商户网站是SHOPEX、ECSHOP、PHPWIND、DISCUZ、HISHOP、乐度、360等网店后台拥有可设置填写合作身份者ID、安全校验码等信息的网店或论坛系统

第一步

建议:请到各个网店系统、论坛系统里找帮助

 

第二步:若第一步无法解决,则请重装支付宝接口插件,或去网店、论坛的官方论坛找寻升级补丁。
第三步:若第二步无法解决,请赶紧联系网店、论坛系统商的客服人员或到其官方网站论坛发帖求助。

情况二:商户网站自行开发或非以上提到的网店论坛系统:

第一步:检查安全校验码是否正确,是否没有空格。

安全校验码是由数字和字母组成的32位字符串。

登陆支付宝,点击链接https://b.alipay.com/order/serviceIndex.htm,页面显示如下界面, 

找到交易安全校验码(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/AlipayService.java 里Map params = new HashMap();包含的参数集合

排序需要遵循的是把所有参数要从字母a到z的顺序进行排序(不包括https://mapi.alipay.com/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://mapi.alipay.com/gateway.do后面跟着的所有用&字符连起来的参数信息即是要传递给支付宝的参数。

POST方式中form表单里所有这种的隐藏控件都是要传递给支付宝的参数(包括https://mapi.alipay.com/gateway.do,及参数sign、sign_type)。

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

第七步:检查编码格式是否一致。

开发语言ASP是GB2312的编码格式,则不会出现因为编码格式而造成的该调试错误。

开发语言ASP 是UTF-8的编码格式,则需重新下载ASP开发语言UTF-8编码格式的接口代码示例。

开发语言是PHP的网站需要检查页面编码格式是否与参数_input_charset的编码格式一致。支付宝的一部分PHP代码示例中,默认的编码格式是GBK,若要改成UTF-8,那么需要做如下更改:

$_input_charset = "utf-8";

alipay_service.php文件中“实现多种字符编码方式”的这个函数,要改成function charset_encode($input,$_output_charset ,$_input_charset ="utf-8" )

index.php的页面属性改成utf-8的编码格式

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

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

第八步:支付时使用的GET提交方式

检查最终计算得出的URL链接(以https://mapi.alipay.com/gateway.do开头,sign_type=MD5结尾)总共的字节长是否超过2M字节,若超过,请删减参数subject和body里的值的长度。

第九步:支付时使用的POST表单提交方式

分步一、检查form表单里所有这种的隐藏控件是否与参数组中的一致,且还有https://mapi.alipay.com/gateway.do、sign、sign_type这三个隐藏控件。

分步二、检查编码参数_input_charset。

不论是哪种编码格式,该参数呈现在程序代码里的方式是需要跟在网关地址的后面,如下所示:

UTF-8编码格式:

参数_input_charset,请不要在隐藏控件中出现。

如果您依照以上方法还无法解决,可以联系在线技术客服协助您解决问题。