javascript - Wix 网站路由器页面代码执行两次。在准备好的页面上,我正在执行 Wix Velo 的 OrderPlan 功能。创建 2 个具有相同计划的订阅
问题描述
这是我正在谈论的 wix 页面https://hotbodypal.wixsite.com/website/create-order?email=newuser4@ex.com&slug=premium-monthly-gp
这是 routes.js 中处理路由的代码
export function create_order_Router(request) {
return wixUsersBackend.generateSessionToken(request.query.email)
.then((sessionToken) => {
console.log("session token", sessionToken);
return ok("create-order-page", {sessionToken, query: request.query});
});
}
在此代码中,我在查询参数中传递电子邮件,然后在 routes.js 文件中,我正在执行 generateSessionToken 方法以获取登录会话令牌。然后将路由器数据中的这个令牌传递给页面“create-order-page”
在 Ready 的前端代码中:
import wixPaidPlans from 'wix-paid-plans';
import wixWindow from 'wix-window';
import wixData from 'wix-data';
import wixUsers from 'wix-users'
import wixLocation from 'wix-location';
$w.onReady(async function () {
$w("#group17").hide();
$w("#socialBar7").hide();
var routerData = wixWindow.getRouterData();
console.log("router data", routerData.query)
if ((routerData.query.status == "done") || (routerData.query.status == "failed")) {
console.log("done");
} else {
await wixUsers.logout();
await wixUsers.applySessionToken(routerData.sessionToken)
wixData.query("PaidPlans/Plans").eq("slug", routerData.query.slug)
.find()
.then(async (res) => {
if (res.items.length > 0) {
console.log("create order page");
wixPaidPlans.orderPlan(res.items[0]._id)
.then((myOrder) => {
console.log("my order", myOrder);
setTimeout(function () {
wixLocation.to(wixLocation.url + "&status=done")
}, 500)
})
.catch(async (error) => {
console.log("error", error)
setTimeout(function () {
wixLocation.to(wixLocation.url + "&status=failed")
}, 500)
})
} else {
setTimeout(function () {
wixLocation.to(wixLocation.url + "&status=failed")
}, 500)
}
})
}
});
在前端,我首先获取会话令牌和定价计划的 slug,我调用 applySessionToken 以使用 oken 登录用户。然后我从数据库usign plan slu中获取计划数据
然后使用计划 ID 我正在执行 orderPlan 方法来创建免费计划订阅。但结果是它激活了 2 个具有相同计划的订阅。
没有其他页面或代码调用 orderPlan 方法。
请帮我解决这个奇怪的问题
解决方案
推荐阅读
- kernel-module - 带有系统调用的 AIX 内核扩展
- c# - ASP.NET Core 2.2 如何覆盖 UserManager.CreateAsync 以删除唯一的用户名要求
- php - mysqli连接文件不识别准备干
- windows - 查找带有时间戳的文件夹时,我可以在 CMD 中使用通配符吗?
- google-bigquery - 将 userId 映射到其关联的电子邮件
- nestjs - 为什么它会给出 JSON.stringfy 错误,即使我没有使用它?
- regex - 正则表达式以匹配具有多个扩展名的文件名部分
- extjs6 - 如何在 Ext js 中更改按钮文本
- java - 我怎么知道 CamelContext 何时启动?
- google-chrome - Chromium 不尊重 --disable-http2