调试错误,请回到请求来源地,重新发起请求。错误代码 ILLEGAL_SIGN
第一步
建议:请到各个网店系统、论坛系统里找帮助
第二步:若第一步无法解决,则请重装支付宝接口插件,或去网店、论坛的官方论坛找寻升级补丁。
第三步:若第二步无法解决,请赶紧联系网店、论坛系统商的客服人员或到其官方网站论坛发帖求助。
情况二:商户网站自行开发或非以上提到的网店论坛系统:
第一步:检查安全校验码是否正确,是否没有空格。
安全校验码是由数字和字母组成的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,请不要在隐藏控件中出现。
如果您依照以上方法还无法解决,可以联系在线技术客服协助您解决问题。