Passer au contenu principal
Toutes les collectionsQuestions générales
Utilisation d'un script cloud post-hook pour remplacer les récompenses d'achat de produits
Utilisation d'un script cloud post-hook pour remplacer les récompenses d'achat de produits

produit, vérifier l'achat, PurchaseRewardHook

Jason Liang avatar
Écrit par Jason Liang
Mis à jour il y a plus de 2 semaines

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 sur Nouveau point d'encrage d'api, accrochez le script que vous venez de créer en tant que post-hook à l'opération PurchaseRewardHook comme ci-dessous:

  • Fait!

Conseils de pro:

  • Vous pouvez vérifier les modifications apportées aux récompenses en appelant GetEligiblePromotions() ou RefreshPromotions() depuis API Explorer pour un utilisateur éligible à la promotion que vous avez définie. (Notez que les récompenses pour bars sont remplacées de 10 par 12 et que le gems est modifié de 5 par 7.

    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.

Avez-vous trouvé la réponse à votre question ?