支付宝支持的传输方式为:http协议,get 或 post 传输,提供给商户代码 demo 中常用的两种传输方式: form表单提交、模拟远程 http 协议提交。
http://blog.chinaunix.net/uid-20479991-id-216269.html
http://www.cnblogs.com/fengwenit/p/4581241.html
注意:
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 以上,有可能出现发送请求链接时会无法跳转到支付宝,当前页面为空白页的情况
- 错误代码 ILLEGAL_PARTNER ,原因要么是partner等pid错误,要么是页面 Refund.cshtml、notify_url.cshtml、return_url.cshtml、Index.cshtml、FlowCarList.cshtml、FlowRefund.cshtml未齐全。