1、确定请求的支付宝网关
大部分支付宝接口的网关是https://mapi.alipay.com/gateway.do,部分接口的网关是其他,需根据接口技术文档来设置。
注意:如果网关后面没有跟“?_input_charset=编码格式”,那么支付宝默认请求来的编码格式是gbk。因此建议不论是表单提交还是模拟远程http协议提交,请求地址必须是:https://mapi.alipay.com/gateway.do?_input_charset=编码格式
2、组装请求内容
**遵守一个原则:有哪些参数参与了签名,那么请求时的参数就是哪些,并且加上sign、sign_type。
**
3、请求传输
如果是表单提交,则使用页面重定向功能,对当前页面做自动跳转;如果是远程模拟提交则需要使用各开发语言对应的函数功能运行加载。
注意:
1、页面重定向函数,不要使用window.open这类弹出窗口的JS语句、response.redrect等,因为支付宝系统会无法识别请求来源是哪个地址。2、表单提交时需注意以下事项:发送给支付宝的请求,如果使用 form 表单传输,需要按照以下要求编写:
action的值必须为“https://mapi.alipay.com/gateway.do?_input_charset=该值”,如:https://mapi.alipay.com/gateway.do?_input_charset=utf-8
不允许写成完整的请求链接地址,即禁止https://mapi.alipay.com/gateway.do?后带有所有要请求给支付宝的请求参数数据;
<form>与</form>之间需包含所有要请求给支付宝的参数,且每个参数的格式为<input type=“hidden” name=“参数名” value=“参数值” />;
在众多请求参数中,请求参数_input_charset(编码格式)必须存在于 form 表单中,即 form 表单中必须含有<input type=“hidden” name="_input_charset“ value=”参数值">;
<form>与</form>之间包含的数据只允许是要请求给支付宝的参数,禁止出现商户自行命名,不在接口技术文档请求参数列表中的其他数据;
form 表单的 method 属性,可自行选择 get、post两种。
不按照规范的后果:
请求支付宝时报错,错误码为 ILLEGAL_SIGN;
在 win7 系统下,如果浏览器是 IE8 以上,有可能出现发送请求链接时会无法跳转到支付宝,当前页面为空白页的情况。