Dans le cas où vous souhaitez doubler les récompenses d'un article promotionnel, au lieu de proposer les mêmes articles pour moins cher, vous pouvez utiliser la fonctionnalité PurchaseRewardHook
permettant de remplacer les montants de récompense configurés pour les achats de produits.
L'exemple suivant vous montrera les étapes à suivre pour compléter ce processus.
Commencez par créer un script de point d'encrage comme indiqué ci-dessous. Sa fonctionnalité est bien décrite dans les commentaires en ligne. Il remplacera les récompenses pour un achat donné en fonction du statut de promotion.
"use strict";
function main() {
var response = {};
// Le but de cette routine est d'ajuster les récompenses d'achat si une promotion
// est en cours - selon le JSON personnalisé dans l'enregistrement de la promotion.
// Vérifiez d'abord si les promotions sont actives
if ( data.promotions.length > 0 ) {
// Vérifiez ensuite si cet article sera réellement acheté...
// (Sinon, pas grand intérêt de faire les calculs)
if ( data.alreadyPurchased === false ) {
// OK - voyons quel article est acheté
var itemId = data.itemId;
var newRewardData = {};
var newPromotionId = data.promotionId; // aucune idée, je peux changer cela en fonction de promotionalOverridesApplied ci-dessous ?
var currentPromotionPriority = -1;
// Parcourez les promotions pour voir s'il en existe une avec des valeurs de devise de remplacement
// Notez que nous avons inclus un champ "priorité" dans la partie customJson de la promotion,
// afin que ce script puisse indiquer quelles récompenses prioritaires appliquer (dans les cas où plusieurs promotions sont actives)
var promotionalOverridesApplied = false;
for (var i = 0; i < data.promotions.length; i++ ) {
// Nous n'avons pas besoin d'appliquer les modifications de prix - brainCloud l'aura déjà fait.
// Nous nous concentrons uniquement sur les récompenses personnalisées et le JSON personnalisé
// Vérifiez d'abord si la priorité est supérieure à la promotion en cours (le cas échéant)
if ( data.promotions[i].customJson.priority > currentPromotionPriority ) {
// Voyons maintenant s'il existe réellement un article correspondant à la promotion
if (data.promotions[i].customJson.itemIds.hasOwnProperty(itemId) === true ) {
// Booya - récupérons la devise mise à jour et les valeurs customJson
currentPromotionPriority = data.promotions[i].customJson.priority;
newRewardData.currency = data.promotions[i].customJson.itemIds[itemId].currency;
newRewardData.extra = data.promotions[i].customJson.itemIds[itemId].extra;
//newPromotionId = -1; // UNIQUEMENT SI vous souhaitez que data.promotionId soit supprimé de la transaction
promotionalOverridesApplied = true;
newPromotionId = data.promotions[i].promotionId;
}
}
}
if ( promotionalOverridesApplied === true ) {
response.rewards = newRewardData;
response.promotionId = newPromotionId;
return response;
} else {
return null;
}
} else {
return null;
}
} else {
return null;
}
}
main();Créez ensuite une promotion pour votre application depuis la section Promotions du portail. Assurez-vous de définir les champs JSON personnalisés conformément au script ci-dessus.
Remarque: remplacez la règle de récompenses selon vos besoins.
{
"priority": 100,
"itemIds": {
"barBundle1Imp": {
"currency": {
"bars": 12
},
"extra": {
"specialItemReward": "bonusItemA"
}
},
"gemcollection": {
"currency": {
"gems": 7
},
"extra": {
"specialItemReward": "bonusItemA"
}
}
}
}Ensuite, allez à la page
Conception | Cloud Code | Points d'encrage d'API
, cliquez surNouveau point d'encrage d'api
, accrochez le script que vous venez de créer en tant que post-hook à l'opérationPurchaseRewardHook
comme ci-dessous:Fait!
Conseils de pro:
Vous pouvez vérifier les modifications apportées aux récompenses en appelant
GetEligiblePromotions()
ouRefreshPromotions()
depuis API Explorer pour un utilisateur éligible à la promotion que vous avez définie. (Notez que les récompenses pourbars
sont remplacées de10
par12
et que legems
est modifié de5
par7
.Les récompenses originales pour les bars:
Les récompenses originales pour les gems:
Une fois le script ci-dessus accroché
:Une fois l'achat terminé, vous pouvez également vérifier les récompenses à partir de la page Transactions en consultant l'entrée
Rewards Data
de cette transaction.