FAQ

Obtenez des réponses aux questions courantes sur votre 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 la caisse d'Affirm, vous devez récupérer le checkout_token/preapprovalToken avant d'initier une redirection vers le « merchantURL ». Vous pouvez alors utiliser le checkout_token pour lancer le paiement dans une fenêtre modale Affirm en utilisant Affirm.js. Vous devez également ajouter des fonctions de rappel supplémentaires pour rediriger vers la même valeur success_url et cancel_url qui a été envoyée dans le service Sessions. Le rappel onSuccess() doit également lancer la demande d'autorisation à l'aide de 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>