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

牛X的程序员+ 发布于 2011/07/16 20:20
阅读 22K+
收藏 0

Serverless 架构就不要服务器了?>>>

加载中
0
支付宝技术
支付宝技术

情况一:商户网站是SHOPEXECSHOPPHPWINDDISCUZHISHOP、乐度、360等网店后台拥有可设置填写合作身份者ID、安全校验码等信息的网店或论坛系统

第一步

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

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

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

请找专业的网站程序开发技术人员帮忙解决,或提交集成申请,让支付宝技术支持人员协助

申请集成连接:https://b.alipay.com/support/helperApply.htm?action=supportHome

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

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

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

登陆支付宝,点击链接https://b.alipay.com/support/helperApply.htm?action=selfIntegration,页面显示如下界面, 

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

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

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

第四步:检查所有参数是否有自定义参数存在,若有,须全部去掉。

自定义参数在return_urlnotify_url两个参数中最容易被带上,一般表现的形式是:

return_url=http://www.xxx.com/alipay/return_url.asp?userid=1234

userid=1234即是自定义参数。

第五步:检查要加密的所有参数(即参数组里的所有参数)在加密之前的排序功能是否运行正常,即函数是否正确。

各开发语言对应的参数组所在位置如下:

ASPAlipay_Payto.aspmystr = Array括号中包含的参数集合

PHPindex.php$parameter = array括号中包含的参数集合

ASP.NETAlipay.csstring[] Oristr 数组里包含的参数集合

JAVAsrc/ com/ alipay/ util/AlipayService.java Map params = new HashMap();包含的参数集合

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

各开发语言对应的排序代码所属的文件位置如下:

ASPAlipay_Payto.asp

PHPalipay_service.php

ASP.NETAliPay.cs中函数BubbleSort(string[] r)

JAVAsrc/ com/ alipay/ util/ Payment.java

第六步:检查加密的所有参数(即参数组里的所有参数)与URL传递的参数是否一致。

URL传递的参数的含义是:

GET方式中https://www.alipay.com/cooperate/gateway.do?后面跟着的所有用&字符连起来的参数信息即是要传递给支付宝的参数。

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

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

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

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

开发语言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://www.alipay.com/cooperate/gateway.do?开头,sign_type=MD5结尾)总共的字节长是否超过2M字节,若超过,请删减参数subjectbody里的值的长度。

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

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

分步二、检查编码参数_input_charset

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

UTF-8编码格式: 

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

如果您依照以上方法还无法解决,可提交集成申请,我们的技术支持会及时与您联系,协助您解决。
申请地址:https://b.alipay.com/support/helperApply.htm?action=supportHome

返回顶部
顶部