成功付款重定向后,NodeJS Express 会话变空

问题描述

我在我的一个电子商务网站中集成了一种付款方式

现在,当我在成功完成付款后进行付款时,它会重定向到请求中提到的 URL,但是当涉及到我的 URL 时,所有存储在平台上的会话都被清除

这里是会话的会话配置在节点表达与sql会话表

let session = require('express-session');
let MysqLStore = require('express-MysqL-session')(session);

let db = require('./knexfile.js');
let options = db[environment]['connection'];
let sessionStore = new MysqLStore(options);

app.use(session({
    secret: 'ecommerceSiteSecrets',cookie: {
        maxAge: 365 * 24 * 60 * 60 * 1000,expires: false
    },store: sessionStore,saveUninitialized: true,resave: true,}));

现在在我付款之前我的会话如下

Session {
  cookie:
   { path: '/',_expires: false,originalMaxAge: false,httpOnly: true },flash: {},customer_id: 2,email: '[email protected]',name: 'Alex Stuart',type: 'customer',user:
   { customer_id: 2,customer_first_name: 'Alex',customer_last_name: 'Stuart',customer_email: '[email protected]',customer_status: 1 
   },orderSession:
   { cart_id: '348,',customer_id: '2',amount: '225',pay_method: '1' 
   } 
}

在成功完成支付后,支付网关将我重定向到成功页面,我想在那里执行捕获支付信息并将其存储在数据库中的代码

Session {
  cookie:
   { path: '/',httpOnly: true 
   } 
}

请指导我哪里做错了!

解决方法

尝试使用 node-sessionstorage 方法。您可以在发出付款请求之前和付款完成后设置所需会话数据的位置,您需要为您的会话获取会话存储并重新更新您的节点会话。

例如获取会话并将其保存在会话存储中

  customer_id: 2,email: '[email protected]',name: 'Alex Stuart',type: 'customer',user:
   { customer_id: 2,customer_first_name: 'Alex',customer_last_name: 'Stuart',customer_email: '[email protected]',customer_status: 1 
   },orderSession:
   { cart_id: '348,',customer_id: '2',amount: '225',pay_method: '1' 
   } 

您可以参考以下方法-

const storage = require('node-sessionstorage');
storage.setItem('userSession','YourSessionArray');
console.log('item set:',storage.getItem('userSession'));