之前一直使用旧版的网站实现支付宝订购功能,最近因为使用了新版的网站,发现支付宝的订购功能有错误,其提示为:
调试错误,请回到请求来源地,重新发起请求。
支付宝错误代码 ILLEGAL_SIGN
一开始的时候我是逐一进行排查的。对网页的控件排查未发现问题,对网站的代码进行排查亦无问题,因为控件及代码并没有修改过任何地方。
在无奈之下,忽然想起了网页的编码问题,正是编码问题导致的错误,修改好了编码问题,就好了,下面给你介绍。
一般来说,中文网站,不是gb2312编码就是utf-8编码。
关于编码问题,有三个地方是需要修改的,需要修改他们为一至的编码。
第一个地方:就是配置文件:Web.config
其中有一句是这样的:<globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 注意编码哦。
第二个地方:就是网页头部的编码方式:
其中有一句:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 注意编码哦。
第三个地方:就是支付宝文件,由于我的网站是asp.net的,因此,支付宝的这个文件名称为:alipaydefault.aspx.cs 你把它打开,其中有一部分参数是可以修改的。
string gateway = "https://www.alipay.com/cooperate/gateway.do?"; //支付接口
string service = "create_partner_trade_by_buyer"; //服务名称
string seller_email = "***"; //支付宝帐号
string sign_type = "MD5"; //加密类型,签名方式“不用改”
string key = "***"; //安全校验码
string partner = "***"; //商户ID,合作ID
string _input_charset = "utf-8"; //编码类型
上面的,注意看最后一行 string _input_charset = "utf-8"; 涉及到的就是编码问题。