2017-09-03 8 views
0

J'utilise la page de paiement hébergée Authorize.net dans le bac à sable en utilisant la méthode iframe. J'ai implémenté le mécanisme IFrameCommunicator pour recevoir des messages. Ma page permet de redimensionner les événements et d'annuler l'événement. Je ne reçois pas l'événement transactResponse sur la transaction terminée.Ne pas obtenir l'événement transactResponse lors de l'utilisation de IFrameCommunicator (sandbox)

Vous vous demandez si l'événement transactResponse est disponible dans l'environnement Sandbox?

Répondre

0

Vous devez définir la valeur 'hostedProfileIFrameCommunicatorUrl'. par exemple:

$setting = new AnetAPI\SettingType(); 
$setting->setSettingName("hostedProfileIFrameCommunicatorUrl"); 
$url = 'your url'; 
$setting->setSettingValue($url); 
$request->addToHostedProfileSettings($setting); 
$controller = new AnetController\GetHostedProfilePageController($request); 
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); 

function callParentFunction(str) { 
 
    var referrer = document.referrer; 
 
    var s = {qstr : str , parent : referrer}; 
 
    //console.log(s); str include response . 
 
    if(referrer == 'https://test.authorize.net/customer/addPayment'){ 
 
     switch(str){ 
 
      case 'action=successfulSave' : 
 
       //your code 
 
       break; 
 
     } 
 
    } 
 
} 
 

 
function receiveMessage(event) { 
 
    if (event && event.data) { 
 
     callParentFunction(event.data); 
 
    } 
 
} 
 

 
if (window.addEventListener) { 
 
    window.addEventListener("message", receiveMessage, false); 
 
} else if (window.attachEvent) { 
 
    window.attachEvent("onmessage", receiveMessage); 
 
} 
 

 
if (window.location.hash && window.location.hash.length > 1) { 
 
    callParentFunction(window.location.hash.substring(1)); 
 
}