问题描述
我在我的一个电子商务网站中集成了一种付款方式
现在,当我在成功完成付款后进行付款时,它会重定向到请求中提到的 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'));