Ajout nouvelles options financement participatif du projet

This commit is contained in:
Fabrice PENHOËT 2020-09-07 18:19:45 +02:00
parent ea70bebf16
commit 61e406bb8a
10 changed files with 89 additions and 111 deletions

View File

@ -36,7 +36,7 @@ exports.saveUserPaymentInfos = async (req, res, next) =>
// exemple d'url Ok : WP-infos.html?dom=wikilerni.com&ref=21&mt=24&cmd=de11de&cl=monsieur+dugenoux&hKey=1b42653d28ecd07b9b3ba202770a1a45
try
{
// l'utilisateur étant incité à venir sur l'API, on le redirige vers le site
// l'utilisateur étant incité à venir sur l'API après paiement, dans ce cas on le redirige vers le site
// ex url retour : /payment/WP-infos.html?article=nomArticle&ht=montantHT&client=nomClient
if(req.query.article!=undefined)
{
@ -46,15 +46,15 @@ exports.saveUserPaymentInfos = async (req, res, next) =>
else
{
require('dotenv').config();
const ndDaysSubscription=365;// nombre de jour de l'abonnement
const ndDaysSubscription=180;// nombre de jour de l'abonnement
const ndDaysGodFather=30;// nombre de jour en plus si parrainage
const db = require("../models/index");
const md5 = require("md5");
const montantsAbonnement=["12","24","60","120"];
const montantsAbonnement=["9","18","36","54"];
// !! attention req.query enlève les caractères spéciaux comme les "+" des paramètres de l'url. Il vaut donc mieux utiliser req.url pour comparer avec le hash au reste de la chaîne.
const testUrl=req.url.slice(req.url.indexOf("?")+1,req.url.lastIndexOf("&"));
console.log(testUrl);
console.log(md5(testUrl+process.env.MD5_WP));
//console.log(testUrl);
//console.log(md5(testUrl+process.env.MD5_WP));
if(md5(testUrl+process.env.MD5_WP)!==req.query.hKey) // le hashage est effectué après le remplacement des caractères spéciaux dans l'url.
throw { message: txt.paymentUrlFail+testUrl };
else if(req.query.ref==="" || montantsAbonnement.indexOf(req.query.mt) === -1)

View File

@ -92,9 +92,14 @@
<h2>Est-ce que WikiLerni est gratuit ?</h2>
<p>Oui.. Et non ! Réponse de Normand venant d'un Breton ? :-)<br>Vous pouvez tout à fait parcourir WikiLerni, lire les articles proposés et répondre aux quizs.<br>
<b>Tout cela se fait sans avoir besoin de vous abonner et donc gratuitement</b>.<br>Par contre, si vous souhaitez garder vos résultats, recevoir par mail des suggestions de lectures..., vous devrez alors vous abonner au site.<br>Vous pourrez alors <b>tester gratuitement l'abonnement pendant une période de découverte</b>.<br>Ensuite, vous serez invité à souscrire à un abonnement, mais à un prix "libre", c'est-à-dire que différentes possibilités vous seront proposées.<br>Tout le monde n'a pas les mêmes moyens, ni le même intérêt pour le WikiLerni, donc à vous de choisir en conscience.</p>
<p>Vous aimez WikiLerni, mais ne pouvez vraiment pas payer pour ce service ? <a href="/contact.html">Contactez-moi</a>. Vous n'avez pas à vous justifier.<br><b>Nous sommes ici plus dans l'esprit d'un financement participatif que dans celui d'un abonnement classique</b>.<br>En souscrivant à un abonnement, vous permettez à WikiLerni d'exister</b>.</p>
<p>Vous pouvez tout à fait parcourir WikiLerni, lire les articles proposés et répondre aux quizs. Tout cela se fait sans avoir besoin de vous abonner et donc gratuitement.</p>
<p>Par contre, si vous souhaitez garder vos résultats, recevoir par mail des suggestions de lectures... Vous devrez alors vous abonner au site.
Vous pourrez alors tester gratuitement l'abonnement pendant une période de découverte.<br>
Ensuite, vous serez invité à souscrire à un abonnement, <b>mais à un prix "libre", c'est-à-dire que différentes possibilités vous seront proposées</b>.
Tout le monde n'a pas les mêmes moyens, ni le même intérêt pour le WikiLerni, donc à vous de choisir en conscience.</p>
<p>Il est aussi possible de <b>participer au financement de WikiLerni contre d'autres contreparties qu'un abonnement</b>. Pour connaître toutes les possibilités, <a href="/participer-financement.html">cliquez-ici</a>.</p>
<h2>À quoi va servir l'argent de mon abonnement ?</h2>
<p>Cet argent va principalement servir à :

View File

@ -87,22 +87,29 @@
<div class="input_wrapper"><input type="submit" value="Valider." class="cardboard" id="submitDatas" /></div>
</form>
<div id="response"></div>
<h1 class="cardboard" id="godfather">Les utilisateurs que vous avez parrainés</h1>
<div class="engraved framed">
<p>Vous pouvez parrainer d'autres utilisateurs. Pour ce faire, demandez-leur de saisir lors de l'inscription votre adresse e-mail <strong id="godfatherEmail"></strong> ou encore le code suivant : <strong id="godfatherCode"></strong>.</p>
<p>À chaque fois qu'un utilisateur que vous avez parrainé <b>souscrit ou renouvelle un abonnement payant</b>, son abonnement comme le vôtre <b>se trouve prolongé gratuitement de 30 jours</b>. Cet avantage restera valable tant que cet utilisateur et vous-mêmes garderez votre compte WikiLerni.</p>
</div>
<p id="godchilds"><b class="info">Pour l'instant, aucune personne ne s'est inscrite, en vous désignant comme "parrain".</b></p>
<h1 class="cardboard" id="subscribe">Votre abonnement</h1>
<div id="subscribeIntro"></div>
<form>
<ul class="checkbox_li">
<li class="checkbox_li">
<label for="abo12" class="check"><input type="checkbox" id="abo12" name="abo12" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>1 € TTC/mois</b>, soit 12 € TTC.</label>
<label for="abo9" class="check"><input type="checkbox" id="abo9" name="abo9" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>1.5 € TTC/mois</b>, soit 9 € TTC pour 180 jours.</label>
</li>
<li class="checkbox_li">
<label for="abo24" class="check"><input type="checkbox" id="abo24" name="abo24" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>2 € TTC/mois</b>, soit 24 € TTC.</label>
<label for="abo18" class="check"><input type="checkbox" id="abo18" name="abo18" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>3 € TTC/mois</b>, soit 18 € TTC pour 180 jours + une dédicace sur 1 des quizs WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="abo60" class="check"><input type="checkbox" id="abo60" name="abo60" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>5 € TTC/mois</b>, soit 60 € TTC.</label>
<label for="abo36" class="check"><input type="checkbox" id="abo36" name="abo36" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>6 € TTC/mois</b>, soit 36 € TTC pour 180 jours + une dédicace sur 2 des quizs WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="abo120" class="check"><input type="checkbox" id="abo120" name="abo120" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>10 € TTC/mois</b>, soit 120 € TTC.</label>
<label for="abo54" class="check"><input type="checkbox" id="abo54" name="abo54" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>9 € TTC/mois</b>, soit 54 € TTC pour 180 jours + une dédicace sur 4 des quizs WikiLerni.</label>
</li>
<li class="checkbox_li">
@ -116,41 +123,38 @@
const userWP=JSON.parse(localStorage.getItem("user"));
var paiement_ref = ""+userWP.id;// d'après test, doit être une chaîne pour que cela fonctionne.
</script>
<div id="WPBtn12" class="needJS">
<h4>Paiement de votre abonnement annuel prémium à 12 € TTC/an.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-pBVw3HZ84GScLeOJ.js"></script>
<div id="WPBtn9" class="needJS">
<h4>Paiement de votre abonnement de soutien à 9 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-d5ZgzCCYcJbg5AeN.js"></script>
</div>
<div id="WPBtn24" class="needJS">
<h4>Paiement de votre abonnement annuel prémium à 24 € TTC/an.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-uKIw8rfTVVuEbBJI.js"></script>
<div id="WPBtn18" class="needJS">
<h4>Paiement de votre abonnement de soutien à 18 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-LlXn7ylPbr96Cbwx.js"></script>
</div>
<div id="WPBtn60" class="needJS">
<h4>Paiement de votre abonnement annuel prémium à 60 € TTC/an.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-f5NsL6A4p1tGBC1G.js"></script>
<div id="WPBtn36" class="needJS">
<h4>Paiement de votre abonnement de soutien à 36 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-FXDsJCExwAhYH3u3.js"></script>
</div>
<div id="WPBtn120" class="needJS">
<h4>Paiement de votre abonnement annuel prémium à 120 € TTC/an.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-xDfE3jccOP4bwQFL.js"></script>
<div id="WPBtn54" class="needJS">
<h4>Paiement de votre abonnement de soutien à 54 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-wMg4k4PYLvFT6Zg4.js"></script>
</div>
<p class="success">En cliquant sur le bouton de paiement, vous serez dirigé vers l'outil de facturation et de paiement en ligne.<br>Lors de votre premier abonnement, <b>vous devrez y créer un compte client qui est distinct de votre compte utilisateur WikiLerni</b>. Vous pouvez y utiliser un mot de passe différent. <br>Les années suivantes, lors de vos renouvellements, vous pourrez vous reconnecter à ce compte client.</p>
</div>
<div class="info">
<h3>Prix libre ?</h3>
<p>WikiLerni pratique le "prix libre", c'est-à-dire que <b>vous pouvez choisir quel montant vous êtes prêt à payer pour continuer à utiliser WikiLerni</b>.</p>
<p>Cependant, <b>il ne s'agit pas vraiment d'un don</b>, car sans ce financement participatif, <b>le site WikiLerni cessera son activité</b> et vous ne pourrez donc plus l'utiliser.</p>
<p>Vous pouvez donc choisir en conscience ce que vous pouvez et souhaitez payer cette année pour WikiLerni, sachant que <b>ce choix ne vous engagera pas pour les futurs renouvellements</b>.</p>
<p><b>Il ne s'agit pas vraiment d'un don, mais d'un financement participatif</b>. Sans cela, le site WikiLerni <b>cessera son activité</b> et vous ne pourrez donc plus l'utiliser.</p>
<p>Vous pouvez donc choisir en conscience ce que vous pouvez et souhaitez payer ce semestre pour WikiLerni, sachant que <b>ce choix ne vous engagera pas pour les futurs renouvellements</b>.</p>
<p>Une fois sélectionné le montant qui vous convient, il vous faudra <b>cocher la case de validation des Conditions Générales de Vente</b>, pour voir apparaître un bouton de paiement qui vous mènera <b>sur l'outil de facturation et paiement en ligne de la société WebPortage</b>.</p>
<h3>Dédicacez des quizs WikiLerni</h3>
<p>Au-delà de la possibilité d'utiliser WikiLerni pendant 6 mois supplémentaires, <b>à partir de l'abonnement à 3 € TTC/mois, pour vous remercier vous pourrez demander à apposer votre nom sur la page d'un ou plusieurs des quizs publiés sur WikiLerni</b>.</p>
<p>Il peut s'agir de votre nom / pseudo ou de celui de la personne à qui vous le dédicacez. <b>Je vous contacterai pour vous demander et c'est évidemment facultatif !</b></p><p>Si vous souhaitez apposer le nom, voire le lien internet d'<b>une activité commerciale ou associative</b>, c'est aussi possible dans certaines conditions, mais merci de d'abord <a href="/contact.html">me contacter pour avis</a>.</p>
<h3>WikiLerni s'adapte à vous</h3>
<p>Vous aimez WikiLerni, mais ne pouvez vraiment pas payer ? Vous préférez un autre montant ou un autre moyen de paiement (chèque, virement) ? Ou encore vous avez besoin d'explications ? Alors <a href="/contact.html">contactez-moi</a>. <b>Je me ferai un plaisir de vous répondre et d'essayer de m'adapter à chaque situation</b>.</p>
</div>
<h1 class="cardboard" id="godfather">Les utilisateurs que vous avez parrainés</h1>
<div class="engraved framed">
<p>Vous pouvez parrainer d'autres utilisateurs. Pour ce faire, demandez-leur de saisir lors de l'inscription votre adresse e-mail <strong id="godfatherEmail"></strong> ou encore le code suivant : <strong id="godfatherCode"></strong>.</p>
<p>À chaque fois qu'un utilisateur que vous avez parrainé <b>souscrit ou renouvelle un abonnement payant</b>, son abonnement comme le vôtre <b>se trouve prolongé gratuitement de 30 jours</b>. Cet avantage restera valable tant que cet utilisateur et vous-mêmes garderez votre compte WikiLerni.</p>
</div>
<p id="godchilds"><b>Pour l'instant, aucune personne ne s'est inscrite, en vous désignant comme "parrain".</b></p>
</div>
</section>

View File

@ -1079,6 +1079,16 @@ margin: inherit;
{
width: 98%;
}
#licence p
{
text-align: center;
margin: 1.5em auto;
}
#licence p a[href="/participer-financement.html"]
{
font-weight: bolder;
}
/* Bouton permettant de demander l'affichage du quiz */
#showQuestionnaire
{
@ -1282,52 +1292,6 @@ font-size:0.9em;
margin-left: 1em;
width: 85%;
}
/*
#login ul
{
list-style-type: none;
text-align: left;
}
#signup fieldset, #login fieldset
{
width: 80%;
margin: auto;
text-align: left;
}
#signup label
{
margin-right: 1%;
width: 50%;
text-align: right;
display:inline-block;
}
#login label
{
margin-right: 1%;
text-align: right;
display:inline-block;
}*/
/*
ul.checkbox_li
{
width:100%;
padding: 0 1em;
}
li.checkbox_li
{
width:90%;
}*
#signup label.check, #login label.check
{
width:100%;
text-align:left;
display:inline-block;
margin-left: 5%;
}*/
@media screen and (min-width: 480px)
{

View File

@ -179,41 +179,41 @@ const initialise = async () =>
// on passe à la caisse ?
const CGV=document.getElementById("CGVOk");
const abo12=document.getElementById("abo12");
const abo24=document.getElementById("abo24");
const abo60=document.getElementById("abo60");
const abo120=document.getElementById("abo120");
const abo9=document.getElementById("abo9");
const abo18=document.getElementById("abo18");
const abo36=document.getElementById("abo36");
const abo54=document.getElementById("abo54");
const divWPBtns=document.getElementById("WPBtns");
divWPBtns.style.display="none";
abo12.addEventListener("change", function(e)
abo9.addEventListener("change", function(e)
{
unCheckAllOthers("abo12");
unCheckAllOthers("abo9");
});
abo24.addEventListener("change", function(e)
abo18.addEventListener("change", function(e)
{
unCheckAllOthers("abo24");
unCheckAllOthers("abo18");
});
abo60.addEventListener("change", function(e)
abo36.addEventListener("change", function(e)
{
unCheckAllOthers("abo60");
unCheckAllOthers("abo36");
});
abo120.addEventListener("change", function(e)
abo54.addEventListener("change", function(e)
{
unCheckAllOthers("abo120");
unCheckAllOthers("abo54");
});
CGV.addEventListener("change", function(e)
{
if(CGV.checked===true)
{
divWPBtns.style.display="block";
if(abo12.checked===true)
showBtnPayment("btn12");
else if(abo24.checked===true)
showBtnPayment("btn24");
else if(abo60.checked===true)
showBtnPayment("btn60");
else if(abo120.checked===true)
showBtnPayment("btn120");
if(abo9.checked===true)
showBtnPayment("btn9");
else if(abo18.checked===true)
showBtnPayment("btn18");
else if(abo36.checked===true)
showBtnPayment("btn36");
else if(abo54.checked===true)
showBtnPayment("btn54");
else
{
divWPBtns.style.display="none";

View File

@ -1,10 +1,10 @@
const checkBoxes=
{
"CGV" : document.getElementById("CGVOk"),
"abo12" : document.getElementById("abo12"),
"abo24" : document.getElementById("abo24"),
"abo60" : document.getElementById("abo60"),
"abo120" : document.getElementById("abo120")
"abo9" : document.getElementById("abo9"),
"abo18" : document.getElementById("abo18"),
"abo36" : document.getElementById("abo36"),
"abo54" : document.getElementById("abo54")
}
const divWPBtns=document.getElementById("WPBtns");
@ -22,10 +22,10 @@ export const unCheckAllOthers = (choice) =>
const btns=
{
"btn12" : document.getElementById("WPBtn12"),
"btn24" : document.getElementById("WPBtn24"),
"btn60" : document.getElementById("WPBtn60"),
"btn120" : document.getElementById("WPBtn120")
"btn9" : document.getElementById("WPBtn9"),
"btn18" : document.getElementById("WPBtn18"),
"btn36" : document.getElementById("WPBtn36"),
"btn54" : document.getElementById("WPBtn54")
}
// Affiche le bon bouton de paiement et cache les autres

View File

@ -17,6 +17,7 @@ module.exports =
manageQuestionnaires: "./src/manageQuestionnaires.js",
manageUsers: "./src/manageUsers.js",
newLoginValidation: "./src/newLoginValidation.js",
paymentPage: "./src/paymentPage.js",
polyfill: "babel-polyfill",
questionnaire: "./src/questionnaire.js",
subscribe: "./src/subscribe.js",

View File

@ -12,10 +12,10 @@ module.exports =
mailPaymentThankBodyTxt: "Bonjour USER_NAME,\n\nSuite à votre paiement, votre abonnement à SITE_NAME vient d'être prolongé de NBDAYS jours.\n\nMerci beaucoup et à bientôt !",
mailPaymentThankBodyHTML: "<h3>Bonjour USER_NAME,</h3><p>Suite à votre paiement, votre abonnement à SITE_NAME vient d'être prolongé de NBDAYS jours.<br><br>Merci beaucoup et à bientôt sur SITE_NAME !</p>",
mailPaymentAdminNoticeSubject: "Nouvel abonnement prémium !",
mailPaymentAdminNoticeBodyTxt: "Bonjour,\nUn nouvel abonnement prémium vient d'être enregistré par l'utilisateur EMAIL.",
mailPaymentAdminNoticeBodyHTML: "<h3>Bonjour,</h3><p>Un nouvel abonnement payant vient d'être enregistré pour l'utilisateur EMAIL.</p>",
mailPaymentAdminNoticeBodyTxt: "Bonjour,\nUn nouvel abonnement de soutien vient d'être enregistré par l'utilisateur EMAIL.",
mailPaymentAdminNoticeBodyHTML: "<h3>Bonjour,</h3><p>Un nouvel abonnement de soutien vient d'être enregistré pour l'utilisateur EMAIL.</p>",
mailPaymentThankGodfatherSubject: "Merci !",
mailPaymentThankGodfatherBodyTxt: "Bonjour USER_NAME,\n\nUn des utilisateurs que vous avez parrainé vient de souscrire à un abonnement payant.\n\nEn récompense, votre abonnement vient donc d'être prolongé de 30 jours.\n\nMerci à vous et à bientôt !",
mailPaymentThankGodfatherBodyHTML: "<h3>Bonjour USER_NAME,</h3><p>Un des utilisateurs que vous avez parrainé vient de souscrire à un abonnement payant.<br>En récompense, votre abonnement vient donc d'être prolongé de 30 jours.<br>Merci à vous et à bientôt !</p>",
mailPaymentThankGodfatherBodyTxt: "Bonjour USER_NAME,\n\nUn des utilisateurs que vous avez parrainé vient de souscrire à un abonnement de soutien.\n\nEn récompense, votre abonnement vient donc d'être prolongé de 30 jours.\n\nMerci à vous et à bientôt !",
mailPaymentThankGodfatherBodyHTML: "<h3>Bonjour USER_NAME,</h3><p>Un des utilisateurs que vous avez parrainé vient de souscrire à un abonnement de soutien.<br>En récompense, votre abonnement vient donc d'être prolongé de 30 jours.<br>Merci à vous et à bientôt !</p>",
paymentGodfatherNotFound: "Un retour paiement a été reçu pour un utilisateur, mais les infos de son parrain n'ont pas été retrouvées : "
};

View File

@ -47,6 +47,7 @@ module.exports =
newQuestionnairesIntro: "Liste des derniers quizs publiés sur WikiLerni.",
explanationTitle: "Vous découvrez WikiLerni ?",
explanationTxt: "Le principe est simple : vous commencez par lire l'article Wikipédia dont le lien vous est proposé.<br>Puis vous afficher le quiz pour vérifier ce que vous avez retenu de votre lecture. Vous obtenez alors votre résultat immédiatement.<br><br>Suivant les questions, une ou plusieurs réponses peuvent être correctes et doivent donc être cochées. <b>C'est toujours le contenu de l'article Wikipédia qui fait foi concernant les \"bonnes\" réponses</b>. Mais les articles de Wikipédia peuvent évoluer, donc n'hésitez pas <a href='/contact.html'>à me signaler une erreur</a>.<br><br>Toutes les réponses se trouvent dans l'article proposé à la lecture. <b>Vous êtes ici pour apprendre de nouvelles choses, mais libre à vous d'essayer d'y répondre immédiatement</b>.<br><br>Quand le sujet s'y prête, ne vous étonnez pas si certaines des réponses proposées peuvent être un peu décalées, absurdes... On peut apprendre avec le sourire, non ? :-)<br><br>Une fois votre résultat obtenu, il vous sera proposé de créer un compte pour le sauvegarder. Ce compte vous permettra de <b>tester de nouveau ce quiz</b> pour vérifier ce que vous en avez retenu plusieurs jours, semaines, mois... Grâce à ce compte, vous pourrez aussi <b>recevoir régulièrement de nouveaux quizs</b> pour continuer à \"cultiver votre jardin\".<br><br>Mais <b>la création de ce compte est facultative</b> et <a href='/quizs/' title='Les derniers quizs publiés'>vous pouvez parcourir WikiLerni librement</a>.",
questionnaireLicenceTxt: "Ce quiz <a href=\"/credits.html\">est libre</a>, mais il n'est pas gratuit. Vous pouvez <a href=\"/participer-financement.html\">participer à son financement en cliquant ici</a>.",
noJSNotification: "Désolé, mais pour l'instant, l'utilisation de WikiLerni nécessite l'activation du JavaScript.",
newsListTitle: "1 article Wikipédia + 1 quiz = 1 WikiLerni",
mailRecipientTxt: "Message envoyé à :",

View File

@ -49,6 +49,9 @@ block content
//- Important : ici, on garde volontairement le html, car cela est accepté pour l'introduction
if(questionnaire.Questionnaire.introduction)
div#introduction !{questionnaire.Questionnaire.introduction}
div#licence
p !{configTpl.questionnaireLicenceTxt}
div#links
for link in questionnaire.Links
p