На моем веб-сайте Wix, над которым я сейчас работаю, установлено приложение «Планы ценообразования», и в зависимости от этих планов пользователи могут получить доступ к определенным функциям API, которые я предоставил на веб-сайте, через приложение, которое я разрабатываю. Поскольку я не могу получить пользовательский объект в файле http-functions.js, мне пришлось создать отдельную коллекцию для хранения данных о подписках пользователя. При заказе плана это работает нормально, так как я могу подключиться к событию onPlanPurchased и выполнить любую логику, которая мне нужна, чтобы изменить указанную коллекцию. Однако такого события для отмены плана не существует, что означает, что любая модификация коллекции должна выполняться бэкэнд-функцией, вызываемой из клиентского кода, например:
cancelPlan(wixUsers.currentUser.id)
.then( (results) => {
if (results === "SUCCESS") {
wixPaidPlans.cancelOrder(orderId)
.then( () => {
wixWindow.openLightbox("PlanCancelled");
})
.catch( (err) => {
wixWindow.openLightbox("PlanCancelFailed");
});
}else {
wixWindow.openLightbox("PlanCancelFailed");
}
})
.catch( (err) => {
wixWindow.openLightbox("PlanCancelFailed");
});
Как вы можете видеть, проблема здесь в том, что, поскольку это запускается в браузере, возможно ли, чтобы кто-то изменил это и запустил только строку wixPaidPlans.cancelOrder() без запуска моей внутренней функции? Если это так, кто-то может отменить свой платеж, но по-прежнему иметь доступ к вещам, предлагаемым моим веб-сайтом, через функции API, о которых я говорил. Правильно ли я беспокоюсь об этом? И если да, то есть ли у кого-нибудь какие-либо указатели на то, как еще я мог бы это сделать? Спасибо.
Да, мой метод cancelPlan() находится во внутреннем модуле и изменяет данные в моей коллекции. Если обновление записи пользователя прошло успешно, возвращается сообщение «SUCCESS».
Выполните проверку на стороне сервера, чтобы убедиться, что конечная точка не подвергается злонамеренному воздействию.
Я не могу выполнить проверку на стороне сервера, так как 'wixPaidPlans.cancelOrder()' кажется доступной только на стороне клиента и может быть инициирована только пользователем, тогда мне нужен какой-то способ проверить, была ли модификация коллекции успешной. Или я неправильно понял ваше предложение?
Я забыл об этом вопросе некоторое время назад, но хотел обновить его, так как в итоге нашел решение.
В Wix есть несколько веб-хуков, которые можно использовать для указания на функцию API/HTTP на вашем сайте. Один из этих веб-хуков предназначен для случаев, когда план платежей отменяется. Это событие можно указать на функцию в http-functions.js, и там можно выполнить соответствующую логику, гарантируя, что все может быть выполнено так, как задумано, но процесс также может быть запущен пользователем.
взаимодействует ли метод
cancelPlan()
с вашим бэкэндом?