Topic: конструктор тестов с подключением к WIX
так как я начал разработку нового конструктора, то предоставляю доступ к (коду) рабочего конструктора всем желающим..
этот конструктор был связан с веб сервисом wix.
саму программу и части кода можете использовать по собственному желанию..
https://disk.yandex.ru/d/8z1OChCfkdICHA
так же я предастовляю сверх секретный код бекенд-файла "http-functions.js"
import {notFound, ok, serverError, created } from 'wix-http-functions';
import wixData from 'wix-data';
import wixUsers from 'wix-users-backend';
export function use_GetUserPlans(request) {
return wixUsers.login(request.path[0], request.path[1])
// если пользователь найден
.then( () => {
let options = {
"headers": {
"Content-Type": "application/json"
}
};
// query a collection to find matching items
return wixData.query("usersPLans")
.eq("email", request.path[0])
.find()
.then( (results) => {
// matching items were found
if(results.items.length > 0) {
options.body = {
"items": results.items
};
return ok(options);
}
// no matching items found
options.body = {
"NoPlans": `${request.path[0]} wasn't found`
};
return notFound(options);
} )
// something went wrong
.catch( (error) => {
options.body = {
"NoUser": error
};
return serverError(options);
} );
} )
// если пользователь не найден или иная ошибка
.catch( (error) => {
// создать переменную с данными ошибки
let errorReturnValueObject = {
headers: {
"Content-Type": "application/json"
},
body: { "error":"Not logged"}
};
// вернуть ответ
return serverError(errorReturnValueObject);
});
}
export function post_InsertUserPlans(request) {
let planuser;
let emailuser;
let options = {
"headers": {
"Content-Type": "application/json"
}
};
return request.body.text()
.then((body) => {
const pricePlanObject = JSON.parse(body);
let dataValue = pricePlanObject.data;
for (const [name, value] of Object.entries(dataValue)) {
if (name === "email") {
emailuser = value.slice(0, -1);
}
if (name === "plan") {
planuser = value.slice(0, -1);
}
}
let planInfo = {
"email": emailuser,
"plans": planuser
}
return wixData.insert("usersPLans", planInfo);
})
.then((results) => {
options.body = {
"inserted": results
};
return created(options);
})
.catch((error) => {
options.body = {
"error": error
};
return serverError(options);
});
}
export function post_DeletedUserPlans(request) {
let planuser;
let emailuser;
let options = {
"headers": {
"Content-Type": "application/json"
}
};
return request.body.text()
.then((body) => {
const pricePlanObject = JSON.parse(body);
let dataValue = pricePlanObject.data;
for (const [name, value] of Object.entries(dataValue)) {
if (name === "email") {
emailuser = value.slice(0, -1);
}
if (name === "plan") {
planuser = value.slice(0, -1);
}
}
let planInfo = {
"email": emailuser,
"plan": planuser
}
return wixData.query("usersPLans")
.eq("email", emailuser)
.eq("plans", planuser)
.ascending("plans")
.find()
.then( (results) => {
let firstItem = results.items[0];
if(results.items.length > 0) {
return wixData.remove("usersPLans", firstItem._id)
.then( () => {
options.body = {
"items": "ok"
};
return ok(options);
} )
.catch( (error) => {
options.body = {
"error": error
};
return serverError(options);
} );
}
// no matching items found
options.body = {
"error": `${request.path[0]} ${request.path[1]} wasn't found`
};
return notFound(options);
} )
// something went wrong
.catch( (error) => {
options.body = {
"error": error
};
return serverError(options);
} );
})
.then((results) => {
options.body = {
"inserted": results
};
return created(options);
})
.catch((error) => {
options.body = {
"error": error
};
return serverError(options);
});
}
этот код отвечает за получение и обработку запросов (покупка приложения, проверка покупки приложения, и если была офомлена подписка то и за отмену подписки):
когда пользователь покупает программу или оформляет подписку сервсис посылает вебхук и скрипт записывает в базу данные пользователя и его покупку..
пользователь запускающий программу на своем ПК вводит данные своего аккаунта, программа посылает запрос скрипту, скрипт проверяет пользователя а после возвращает программе данные о всех покупках пользователя.
Моя база данных называлась usersPlans
адреса вебхуков
https://Ваш_сайт/_functions/InsertUserPlans - новая подписка или покупка
https://Ваш_сайт/_functions/DeletedUserPlans - удаления подписки или покупки