付款重定向成功后,NodeJS Express 会话变空
NodeJS Express Session gets empty after successful payment redirection
我在我的一个电子商务网站中集成了一种支付方式
现在,当我在付款成功完成后进行付款时,它会重定向到请求中提到的 URL,但是当涉及到我的 URL 时,平台上存储的所有会话都会被清除
这里是 node express 中会话的会话配置 SQL 会话 table
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: 'tt1@gmail.com',
name: 'Alex Stuart',
type: 'customer',
user:
{ customer_id: 2,
customer_first_name: 'Alex',
customer_last_name: 'Stuart',
customer_email: 'tt1@gmail.com',
customer_status: 1
},
orderSession:
{ cart_id: '348,',
customer_id: '2',
amount: '225',
pay_method: '1'
}
}
在成功完成支付后,支付网关将我重定向到成功页面,我想在该页面上执行捕获支付信息并将其存储在数据库中的代码
Session {
cookie:
{ path: '/',
_expires: false,
originalMaxAge: false,
httpOnly: true
}
}
请指导我哪里做错了!
尝试使用节点会话存储方法。您可以在付款请求之前和付款完成后设置所需的会话数据,您需要为您的会话获取会话存储并重新更新您的节点会话。
例如获取会话并将其保存在会话存储中
customer_id: 2,
email: 'tt1@gmail.com',
name: 'Alex Stuart',
type: 'customer',
user:
{ customer_id: 2,
customer_first_name: 'Alex',
customer_last_name: 'Stuart',
customer_email: 'tt1@gmail.com',
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'));
我在我的一个电子商务网站中集成了一种支付方式
现在,当我在付款成功完成后进行付款时,它会重定向到请求中提到的 URL,但是当涉及到我的 URL 时,平台上存储的所有会话都会被清除
这里是 node express 中会话的会话配置 SQL 会话 table
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: 'tt1@gmail.com',
name: 'Alex Stuart',
type: 'customer',
user:
{ customer_id: 2,
customer_first_name: 'Alex',
customer_last_name: 'Stuart',
customer_email: 'tt1@gmail.com',
customer_status: 1
},
orderSession:
{ cart_id: '348,',
customer_id: '2',
amount: '225',
pay_method: '1'
}
}
在成功完成支付后,支付网关将我重定向到成功页面,我想在该页面上执行捕获支付信息并将其存储在数据库中的代码
Session {
cookie:
{ path: '/',
_expires: false,
originalMaxAge: false,
httpOnly: true
}
}
请指导我哪里做错了!
尝试使用节点会话存储方法。您可以在付款请求之前和付款完成后设置所需的会话数据,您需要为您的会话获取会话存储并重新更新您的节点会话。
例如获取会话并将其保存在会话存储中
customer_id: 2,
email: 'tt1@gmail.com',
name: 'Alex Stuart',
type: 'customer',
user:
{ customer_id: 2,
customer_first_name: 'Alex',
customer_last_name: 'Stuart',
customer_email: 'tt1@gmail.com',
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'));