Session丢失问题与Cookie的添加
# Session丢失问题与Cookie的添加方式
# 一、网页版支付宝沙箱开发支付成功同步回调session丢失问题与解决办法
用了半天时间解决支付宝异步回调session丢失问题,今天就继续为沙箱支付成功后同步回调session对象中的数据丢失问题发愁,真是忙活了一天,网上都翻烂了,就那些问题,没有什么实质性答案去解决这个问题,为此,浪费了一天的时间,慢慢发现,第一次做支付宝对接网页的项目,没想到我碰到的问题都是大多数人没有碰到的,真是够”幸运的“。好了废话不多说,回归正题:
# 问题:支付宝沙箱同步回调sessio对象中的数据丢失
# 解决问题:
首先我是用的本地地址去运行的该项目 这是我的本地项目地址,http://localhost:8080/front
运行上面这个链接到了首页,就进行一些操作,一切都很顺利,但是到了付款成功过的页面的时候,自动跳回的两个页面后,就到了处理同步回调的页面、同步处理页面此时的地址是:
1:===>https://excashier.alipaydev.com/standard/auth.htm?payOrderId=84ff625ca7e04d3e8af2029d0c74f220.00
2:===>https://cashier.alipaydev.com/standard/lightpay/lightPayCashier.htm?orderId=0910aa02f7f76f1dee0000-2-2NN9210&bizIdentity=trade20001&outBizNo=2021091022001479210501505049&timeStamp=1631204747701&country=CN
3:===>https://unitradeprod.alipaydev.com/acq/cashierReturn.htm?sign=K1iSL19gsMALQHhxuH4L0zpksY22zJSWW2UuVBF3e2mUcslzs4XVXInBdRqm0EoajO4KXLuppJ0VUr2BDt7eTmOUv%252BL8Rw%253D%253D&outTradeNo=JFH_913e2092ab144d77bcf2cd38a74ba04a&pid=2088621956261714&type=1
4:===>http://127.0.0.1:8080/alipay/success.html
支付宝规定同步回调需要用内网穿透,所以,同步回调回来的链接和刚刚运行的项目的链接不一样,而且在刚刚运行项目将用户信息保存到网址为http://localhost:8080/front/的session
域中,同步回调回来的session
域不包含用户信息,以至于,会觉得原session
信息丢失,不知道去了哪里。
原因分析完了,根据原因,我们要保证这个链接要保证全部在同一个链接下运行才可以,所以项目一上来运行就用该用内网穿透网址+项目名去登录用户信息,这样session
域中会一直保存着用户信息,则一开始就使用如下地址访问项目工程:
http://127.0.0.1:8080/front
运行该项目,一直到支付完毕,同步回调回来的的网址也是内网穿透的网址,保证session不会丢失,一定不要一边使用本地链接运行本地项目,一边同步回调拿到的链接是内网穿透的链接,两个链接根本不在同一频道上,session 能一样才怪,好了上面就是问题和解决办法。
# 二、Cookie的添加方式
request.getSession().setAttribute("phonenumber", phonenumber);
request.getSession().setAttribute("password", MD5Util.getMd5(password));
Cookie phonenumberCookie = new Cookie("phonenumber", phonenumber);
Cookie passwordCookie = new Cookie("password", MD5Util.getMd5(password));
phonenumberCookie.setMaxAge(60 * 60 * 24);
passwordCookie.setMaxAge(60 * 60 * 24 * 7);
// 设置路径,很重要,这次就是在这里吃了亏。
phonenumberCookie.setPath("/");
passwordCookie.setPath("/");
response.addCookie(phonenumberCookie);
response.addCookie(passwordCookie);
2
3
4
5
6
7
8
9
10
11
12
13