Cybersource FAQ

Explorez les réponses aux questions courantes sur l’intégration Cybersource avec Affirm.

Comment initier le paiement Affirm dans une fenêtre modale au lieu de rediriger le flux de paiement?

Lorsque vous envoyez une demande de service Sessions, vous recevez merchantURL comme l'un des champs d'une réponse réussie à Sessions. Si vous souhaitez rendre le paiement Affirm dans une fenêtre modale plutôt que de rediriger l'utilisateur vers le paiement Affirm, vous devez récupérer le checkout_token/preapprovalToken avant d'initier une redirection vers le « merchantURL ». Vous pouvez ensuite utiliser le checkout_token pour initier la caisse dans une fenêtre modale Affirm en utilisant Affirm.js. Vous devriez aussi ajouter des fonctions supplémentaires de rappel pour rediriger vers la même success_url et cancel_url valeur envoyée dans le service Sessions. Le onSuccess() rappel devrait aussi initier la requête d’autorisation via le checkout_token avant de confirmer la commande sur votre site.

Un exemple de code PHP peut être trouvé ci-dessous, où vous pouvez récupérer le public_api_key du Portail Commerçant et la version de Affirm.js utilisée doit correspondre au fait que vous publiez vos modifications dans un environnement de test ou dans un environnement de production :

<?php
  $checkoutToken = $processorToken; //Replace $processorToken value with "processorToken"value from the Sessions Reply
?>
<html>
  <head>
  </head>
  <body>
    <script>
      //Include Affirm.js
      var _affirm_config = {
      public_api_key: "your_public_apikey", // Public API Key retrieved from the Affirm dashboard
      script:         "https://cdn1-sandbox.affirm.com/js/v2/affirm.js" //Affirm.js runtime script
      };
      (function(l,g,m,e,a,f,b){var d,c=l[m]||{},h=document.createElement(f),n=document.getElementsByTagName(f)[0],k=function(a,b,c){return function(){a[b]._.push([c,arguments])}};c[e]=k(c,e,"set");d=c[e];c[a]={};c[a]._=[];d._=[];c[a][b]=k(c,a,b);a=0;for(b="set add save post open empty reset on off trigger ready setProduct".split(" ");a<b.length;a++)d[b[a]]=k(c,e,b[a]);a=0;for(b=["get","token","url","items"];a<b.length;a++)d[b[a]]=function(){};h.async=!0;h.src=g[f];n.parentNode.insertBefore(h,n);delete g[f];d(g);l[m]=c})(window,_affirm_config,"affirm","checkout","ui","script","ready");
 
      //Use the checkout token to create checkout request for modal checkout
      affirm.checkout({
        "checkoutAri"  : "<?php echo $checkoutToken ?>",
        "metadata": {
          "mode": "modal"
         }
        });
    </script>
    <script>
      // Open modal checkout and add callbacks
      affirm.checkout.open({
        onFail: function(a){/* Add code to redirect to ap_sessions_cancel_url=http://cancel.example.com */},
        onSuccess: function(a){ /* Add code to redirect to ap_sessions_success_url=http://success.example.com and use the checkoutToken as preapprovalToken for authorizing a payment */ }
        });
    </script>
  </body>
</html>