如果顺利的话很快就可以弄好,总之按照文档要求来。
1. jsp页面可以改成action吗?
答案是可以。原来的页面基本不用改,直接拷贝到action中,开头加上一句
HttpServletRequest request = ServletActionContext.getRequest();
最后的 out.println("success"); 换成如下:
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
try {
response.getWriter().write("success");
} catch (IOException e) {
e.printStackTrace();
}
其他的不用变,只是要根据返回的状态写业务逻辑。
2. ILLEGAL_SIGN 错误码。
造成这个错误的原因比较多,其中两点是:
(1)传递了值为空的参数, 如果要为空的参数,那么该参数就不能传递给支付宝,即请求的URL链接里不能存在该参数的提交,
也就是说要传递的参数,必须保证有值。
(2)安全校验码(Key)写错了,我就是这个原因,当时上级给我资料时说随便用个12345在后面再改过来,结果忘了。
3. 本地测试(不用放到服务器上,只要电脑能上网就行):
可以测试整个流程包括下订单到支付成功以及获得支付宝返回的数据以及
自己业务逻辑的处理(对应return_url.jsp的内容)。notify_url.jsp对应的要在服务器上才可以测试。
return_url地址写成: http://192.168.1.xxx:8080/xxx/alipay_returnUrl.action; ip为本机的ip地址。
4.同步通知和异步通知
同步通知和异步通知的先后顺序不确定,所以必须对该次结果是否做过处理加个判断。
文档中有这样一句话:
当商户有传递参数notify_url(服务器异步通知页面路径)
或return_url(页面跳转同步通知页面路径)时,商户必须判断商户网站中是否已
经对该次的通知结果数据做过同样处理。如果不判断,存在潜在的风险,商户自行
承担因此而产生的所有损失。