2011-12-06 42 views
0

J'essaie de mettre en place une réponse silencieuse pour mes chariots e-commerce auth.net en direct. Le message silencieux d'Auth.net est en cours, mais je ne reçois aucune donnée. J'ai écrit un script rapide, juste pour enregistrer les réponses des transactions afin que je puisse voir ce que auth.net envoyait.Authorize.Net Post silencieux ne répond pas comme prévu - pas de données du tout

$f = fopen('log.txt', 'a'); 

fwrite($f, 'new request: '); 
fwrite($f, date('Y-m-d H:i')); 
fwrite($f, ' ' . $_SERVER['REQUEST_METHOD']. ' '); 
fwrite($f, ' ' . $_SERVER['QUERY_STRING']. ' '); 
fwrite($f, ' ' . $_SERVER['REQUEST_URI']. ' '); 

fwrite($f, print_r(http_get_request_headers(),1)); 
fwrite($f, print_r($_GET,1)); 

Simple doux, devrait obtenir un résultat non? Notez l'impression de GET que j'ajouté, parce que c'est le jeu de résultats:

new request: 2011-12-06 14:54 GET  /authSilentResponse/ Array (
    [Accept] => */* 
    [Host] => myhost.mydomain.com 
    [Connection] => Close) Array () 

Ainsi, au lieu de la Poste que tout me dit qu'il devrait être, je reçois une requête GET ...

Toute personne avez-vous une idée pourquoi cela ne serait pas un POST avec des données?

Répondre

0

Je pense que vous faites quelque chose de mal quelque part car Silent Post soumet toujours les résultats des transactions en utilisant une requête POST. Try the code I have written et voir si cela fonctionne mieux pour vous. Si c'est le cas, vous pouvez comparer votre code et voir où se situe le problème potentiel.

Voici une version modifiée que vous pouvez utiliser pour les tests:

<?php 
// Get the subscription ID if it is available. 
// Otherwise $subscription_id will be set to zero. 
$subscription_id = (int) $_POST['x_subscription_id']; 

// Check to see if we got a valid subscription ID. 
// If so, do something with it. 
if ($subscription_id) 
{ 
    // Get the response code. 1 is success, 2 is decline, 3 is error 
    $response_code = (int) $_POST['x_response_code']; 

    // Get the reason code. 8 is expired card. 
    $reason_code = (int) $_POST['x_response_reason_code']; 

    if ($response_code == 1) 
    { 
     // Approved! 

     // Some useful fields might include: 
     // $authorization_code = $_POST['x_auth_code']; 
     // $avs_verify_result = $_POST['x_avs_code']; 
     // $transaction_id  = $_POST['x_trans_id']; 
     // $customer_id  = $_POST['x_cust_id']; 

     $result = 'approved'; 
    } 
    else if ($response_code == 2) 
    { 
     // Declined 

     $result = 'declined'; 
    } 
    else if ($response_code == 3 && $reason_code == 8) 
    { 
     // An expired card 

     $result = 'expired'; 
    } 
    else 
    { 
     // Other error 

     $result = 'error'; 
    } 

    $f = fopen('log.txt', 'a'); 

    fwrite($f, 'new request: '); 
    fwrite($f, date('Y-m-d H:i')); 
    fwrite($f, ' ' . $_SERVER['REQUEST_METHOD']. "\n\n"); 
    fwrite($f, ' ' . $_SERVER['QUERY_STRING']. "\n\n"); 
    fwrite($f, ' ' . $_SERVER['REQUEST_URI']. "\n\n"); 

    fwrite($f, ' ' . $result. "\n\n"); 

    fwrite($f, print_r(http_get_request_headers(),1)); 
    fwrite($f, print_r($_REQUEST,1)); 
} 
?> 

Vous pouvez le tester à l'aide this form:

<form action="http://www.yourdomain.com/silent-post.php" method="post"> 
    <input type="hidden" name="x_response_code" value="1"/> 
    <input type="hidden" name="x_response_subcode" value="1"/> 
    <input type="hidden" name="x_response_reason_code" value="1"/> 
    <input type="hidden" name="x_response_reason_text" value="This transaction has been approved."/> 
    <input type="hidden" name="x_auth_code" value=""/> 
    <input type="hidden" name="x_avs_code" value="P"/> 
    <input type="hidden" name="x_trans_id" value="1821199455"/> 
    <input type="hidden" name="x_invoice_num" value=""/> 
    <input type="hidden" name="x_description" value=""/> 
    <input type="hidden" name="x_amount" value="9.95"/> 
    <input type="hidden" name="x_method" value="CC"/> 
    <input type="hidden" name="x_type" value="auth_capture"/> 
    <input type="hidden" name="x_cust_id" value="1"/> 
    <input type="hidden" name="x_first_name" value="John"/> 
    <input type="hidden" name="x_last_name" value="Smith"/> 
    <input type="hidden" name="x_company" value=""/> 
    <input type="hidden" name="x_address" value=""/> 
    <input type="hidden" name="x_city" value=""/> 
    <input type="hidden" name="x_state" value=""/> 
    <input type="hidden" name="x_zip" value=""/> 
    <input type="hidden" name="x_country" value=""/> 
    <input type="hidden" name="x_phone" value=""/> 
    <input type="hidden" name="x_fax" value=""/> 
    <input type="hidden" name="x_email" value=""/> 
    <input type="hidden" name="x_ship_to_first_name" value=""/> 
    <input type="hidden" name="x_ship_to_last_name" value=""/> 
    <input type="hidden" name="x_ship_to_company" value=""/> 
    <input type="hidden" name="x_ship_to_address" value=""/> 
    <input type="hidden" name="x_ship_to_city" value=""/> 
    <input type="hidden" name="x_ship_to_state" value=""/> 
    <input type="hidden" name="x_ship_to_zip" value=""/> 
    <input type="hidden" name="x_ship_to_country" value=""/> 
    <input type="hidden" name="x_tax" value="0.0000"/> 
    <input type="hidden" name="x_duty" value="0.0000"/> 
    <input type="hidden" name="x_freight" value="0.0000"/> 
    <input type="hidden" name="x_tax_exempt" value="FALSE"/> 
    <input type="hidden" name="x_po_num" value=""/> 
    <input type="hidden" name="x_MD5_Hash" value="A375D35004547A91EE3B7AFA40B1E727"/> 
    <input type="hidden" name="x_cavv_response" value=""/> 
    <input type="hidden" name="x_test_request" value="false"/> 
    <input type="hidden" name="x_subscription_id" value="365314"/> 
    <input type="hidden" name="x_subscription_paynum" value="1"/> 
    <input type="submit"/> 
</form> 
0

Il doit y avoir une mauvaise configuration de votre compte. Silent Post NE vous envoie PAS de données. Juste poster comme indiqué. Vous avez probablement déjà vérifié, mais juste au cas où:

  1. Vérifier que l'URL de réponse du relais par défaut n'est pas défini si vous n'êtes pas en utilisant la fonction
  2. Assurez-vous que vos entrées de journal correspondent aux transactions réelles. Nous avons eu des «mauvaises personnes» qui ont envoyé des requêtes ping à nos URLs de courrier silencieux. Pour cette raison, nous ajoutons une vérification pour les demandes GET et les laissons tomber
  3. Essayez de publier sur votre URL silencieuse vous-même et print_r ($ _ POST). Assurez-vous que cela fonctionne.
  4. Ajoutez un hachage MD5 dans l'interface Auth.net, exécutez une transaction et vérifiez si vous obtenez la valeur.
Questions connexes