酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)

 
最近手头在开发一个游戏官网,在支付模块采用神州付技术支持,神州付数据表单中要求提供服务器返回地址和页面返回地址,相信做过这类接口的朋友应该猜到

最近手头在开发一个游戏官网,在支付模块采用神州付技术支持,神州付数据表单中要求提供服务器返回地址和页面返回地址,相信做过这类接口的朋友应该猜到这两个地址的作用。小编解释下,我们在购买物品或者服务完成,通过支付工具(支付宝、财付通、神州付等等)付款成功之后,支付工具会将订单数据返回给服务器返回地址,同时将页面跳转到页面返回地址....

在服务器返回地址接受返回过来的订单数据时,会对支付过程进行判断,如果支付成功,则在网站数据库中添加订单信息。我们添加订单信息的时候往往会有个字段,用于存储用户姓名,而用户姓名则会存储在session("user_name")中。

好了,说到这里,问题出来了。session("user_name")中的数据只能在同一个网站下的网址中自动保存和传递,而服务器返回地址是由支付工具跳转过来,在支付页面是不存在session("user_name"),跳转到服务器返回地址后,自然也就接收不到session("user_name")的值,在做订单数据添加时,用户姓名字段就成了空字段。这就是session丢失或者说是失效。

最近在网上收罗了很多解决方案,整理之后,感觉有这么两种方法还不错...

第一:建立专门数据库,在支付之前,根据订单号对应存储session("user_name")值,在跳转回服务器返回地址时,再根据订单号,从数据库提取出session值来添加订单信息。

第二:有些支付工具可以使用,以神州付为例,在提交的订单信息栏目中,有特别一项可以用于存储用户的私有信息(privatefield),那就可以利用这一项来代替session("user_name") ,接受session("user_name")值并返回给服务器返回地址,弥补了session不能跨网站传值的缺陷。

可能也还有跟好的方法,欢迎大家一起分享交流...

最新文章

  1. java多线程通信 例子
  2. 触摸java常量池
  3. asp.net 获取当前项目的根目录路径
  4. ReferenceQueue的使用
  5. AVPlayer的使用本地视频
  6. SQL是关于集合的
  7. qt+2012+qtcreator 配置
  8. iOS开发之深入探讨runtime机制02-runtime的简单使用
  9. ANDROID_MARS学习笔记_S01原始版_016_Service
  10. .net 实现注册邮箱验证激活
  11. django笔记(二)
  12. Swift - 滑块(UISlider)的用法
  13. Rosenbrock function
  14. python基础学习之文件操作&函数
  15. shell脚本颜色输出(实例未编辑)
  16. APP如何进行通信的
  17. Linux之文档与目录结构 目录的相关操作 Linux的文件系统
  18. vue:vue-resource
  19. Java为什么不支持多继承
  20. [Selenium] Java代码获取屏幕分辨率

热门文章

  1. js小例子(标签页)
  2. ural 1072. Routing
  3. Codeforces Round #364 (Div. 2) B. Cells Not Under Attack
  4. js两个小技巧【看到了就记录一下】
  5. ubuntu 安装 OpenCv 及其Qt的开发环境配置
  6. SVN版本控制工具使用学习
  7. 【BZOJ2186】【SDoi2008】沙拉公主的困惑 数论
  8. 【BZOJ2038】【2009国家集训队】小Z的袜子(hose) 分块+莫队
  9. POJ 3320 尺取法,Hash,map标记
  10. RSA加密算法原理及RES签名算法简介