网页版支付宝沙箱开发支付成功同步回调session丢失问题与解决办法
唉,本人小白大学生,自己独自一人做了个网上商城项目
昨天刚刚用了半天时间解决支付宝异步回调session丢失问题,今天就继续为沙箱支付成功后同步回调session对象中的数据丢失问题发愁,真是忙活了一天,网上都翻烂了,就那些问题,没有什么实质性答案去解决这个问题,为此,浪费了一天的时间,慢慢发现,第一次做支付宝对接网页的项目,没想到我碰到的问题都是大多数人没有碰到的,真是够”幸运的“。好了废话不多说,回归正题:
问题:支付宝沙箱同步回调sessio对象中的数据丢失
解决问题:
首先,我问过支付宝官方客服了,客服说,官方没有提供任何参数,可以在提交付款的时,将session中的信息取出来,保存到官方给定参数中,于是乎,查看官方Api,试了感觉可能实现的的参数,都一一失败,所以我的经历帮各位踩了不少大家不必要踩的坑
最后在一个微信群中,请教了群内大佬,大佬帮我分析了一下,是我的地址出的问题,
首先我是用的本地地址去运行的该项目
这是我的本地项目地址,
http://localhost:8080/Phone/
运行上面这个链接到了首页,就进行一些列登录加购物车,付款、支付操作,一切都很顺利,但是到了付款成功过的页面的时候,自动跳回的两个页面后,就到了处理同步回调的页面、同步处理页面此时的地址是
http://306315j0l4.wicp.vip/Phone/pages/return_url.jsp?charset=utf-8&out_trade_no=5405115447&method=alipay.trade.page.pay.return&total_amount=1098.00&sign=n3caRH9XVPfkViw2ox7OVcJVnX83R%2FRgMjQSnRpu%2Bx4ZtLYzrfXNFM6XOKHDmd0K%2B6sSqjV54A4GpS8FcT0MwTUBOczb6g7WS1KAvuV2uY%2BXCwkt0Mrh6v%2F70qniVwDCBXfTCliEVuVwY2irpz9Ou631aAQFVQADtZNJ6%2Fce%2BpY%3D&trade_no=22001432651000135574&auth_app_id=102400750540&version=1.0&app_id=102400750540&sign_type=RSA&seller_id=2088102180872445×tamp=-04-05+23%3A55%3A15
支付宝规定同步回调需要用内网穿透,所以,同步回调回来的链接和刚刚运行的项目的链接不一样,而且在刚刚运行项目将用户信息保存到网址为http://localhost:8080/Phone/的session域中,同步回调回来的session域不包含用户信息,以至于,你会觉得原session信息丢失
原因分析完了,根据原因,我们要保证这个链接要保证全部在同一个链接下运行才可以,所以项目一上来运行就用该用内网穿透网址+项目名去登录用户信息,这样session域中会一直保存着用户信息
即字一开始就使用
http://306315j0l4.wicp.vip/Phone/
运行该项目,一直到支付完毕,同步回调回来的的网址也是内网穿透的网址,保证session不会丢失
,一定不要一边使用本地链接运行本地项目,一边同步回调拿到的链接是内网穿透的链接,两个链接根本不在同一频道上,session 能一样才怪
好了上面就是问题和解决办法,
多想,多问,多思考,相信办法总比困难多,
不求多少人看,只求看一个,能帮到大家解决问题
如果觉得《网页版支付宝沙箱开发支付成功同步回调session丢失问题与解决办法》对你有帮助,请点赞、收藏,并留下你的观点哦!