—
本帖被 来自远方 执行置顶操作(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¬ify_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重新编辑 ]