2015-04-11 10 views
14

Ich bekomme keine Antwort von Authorize.Net, wenn ich versuche, ein wiederkehrendes Profil von meinem Testserver mit Kreditkarte erstellen. das ist, was ich auf var_dump ($ response) erhalten:Null Antwort von Authorize.net Automatische rekurrente Abrechnung (ARB)

object(AuthorizeNetARB_Response)#18 (2) { 
     ["xml"]=> 
     NULL 
     ["response"]=> 
     bool(false) 
    } 

Während es perfekt funktioniert, wenn sie von localhost hergestellt Anfrage. var_dump ($ response) von localhost gibt diese Ausgabe:

object(AuthorizeNetARB_Response)#18 (3) { 
    ["xml"]=> 
    object(SimpleXMLElement)#19 (2) { 
    ["messages"]=> 
    object(SimpleXMLElement)#21 (2) { 
     ["resultCode"]=> 
     string(2) "Ok" 
     ["message"]=> 
     object(SimpleXMLElement)#22 (2) { 
     ["code"]=> 
     string(6) "I00001" 
     ["text"]=> 
     string(11) "Successful." 
     } 
    } 
    ["subscriptionId"]=> 
    string(7) "2382386" 
    } 
    ["response"]=> 
    string(401) "<?xml version="1.0" encoding="utf-8"?><ARBCreateSubscriptionResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"><messages><resultCode>Ok</resultCode><message><code>I00001</code><text>Successful.</text></message></messages><subscriptionId>2382386</subscriptionId></ARBCreateSubscriptionResponse>" 
    ["xpath_xml"]=> 
    object(SimpleXMLElement)#20 (2) { 
    ["messages"]=> 
    object(SimpleXMLElement)#21 (2) { 
     ["resultCode"]=> 
     string(2) "Ok" 
     ["message"]=> 
     object(SimpleXMLElement)#22 (2) { 
     ["code"]=> 
     string(6) "I00001" 
     ["text"]=> 
     string(11) "Successful." 
     } 
    } 
    ["subscriptionId"]=> 
    string(7) "2382386" 
    } 
} 

nicht, wo Sie wissen, könnte das Problem sein. Bitte helfen

Hier ist der Code

Yii::import('application.vendor.anet_php_sdk.AuthorizeNet'); 
     Yii::import('application.vendor.anet_php_sdk.lib.*'); 
     Yii::import('application.vendor.anet_php_sdk.lib.shared.*'); 
     include('AuthorizeNetARB.php'); 
     include('shared/AuthorizeNetTypes.php'); 
     define("AUTHORIZENET_API_LOGIN_ID", Yii::app()->params['authorize_net_login_id']); 
     define("AUTHORIZENET_TRANSACTION_KEY", Yii::app()->params['authorize_net_transaction_key']); 
     define("AUTHORIZENET_SANDBOX", Yii::app()->params['authorize_net_sandbox_mode']); 
     define("AUTHORIZENET_MD5_SETTING",Yii::app()->params['authorize_net_login_id']); 

     $subscription       = new AuthorizeNet_Subscription; 
     $subscription->name     = "Monthly Subscription"; 
     $subscription->intervalLength   = "1"; 
     $subscription->intervalUnit   = "months"; 
     $subscription->startDate    = "$today"; 
     $subscription->totalOccurrences  = "$months"; 
     $subscription->amount     = "$amt"; 
     $subscription->creditCardCardNumber = "$card_number"; 
     $subscription->creditCardExpirationDate= "$card_expiration"; 
     $subscription->creditCardCardCode  = "$cvv_number"; 
     $subscription->billToFirstName   = "Happy"; 
     $subscription->billToLastName   = "User"; 

     // Create the subscription. 
     $request = new AuthorizeNetARB; 
     $response = $request->createSubscription($subscription); 
     $subscription_id = $response->getSubscriptionId(); 
     $status = $response->getResultCode(); 

     //var_dump($subscription); 
     var_dump($response);die; 
+0

Kann Ihr Server eine Verbindung zur Sandbox herstellen? es scheint nicht so. – rhldr

+0

@rhldr ja es war ein Verbindungsfehler, aber es zeigte sich in ARB Antwort. Ich weiß nicht warum? – manoj

Antwort

12

Verstanden !!! Es war ein Verbindungsfehler. Ich habe den Fehler erhalten, als ich versucht habe, eine Zahlung mit AIM zu leisten. Ich weiß immer noch nicht, warum der Fehler in der ARB-Antwort nicht angezeigt wurde. Wie auch immer, hier ist das, was ich tat

In /lib/shared/AuthorizeNetRequest.php

Changed

public $VERIFY_PEER = true; 

zu

public $VERIFY_PEER = false; 

Und es hat funktioniert!

+0

Für diejenigen, die diesen Quickfix (und akzeptierte Antwort) sehen, lesen Sie bitte die andere Antwort oben für den richtigen Weg, um dieses Problem zu beheben. Es ist keine gute Idee, das Zertifikat zu überprüfen. Sie möchten nicht, dass irgendein Server mit Ihnen wie authorize.net kommunizieren kann –

4

Ich sehe, dass Sie eine Lösung für Ihr Problem gefunden haben, aber was Sie dort getan haben, ist eine schlechte Idee, Sie deaktivieren im Wesentlichen SSL-Zertifikat-Validierung.

Ihre Serverkonfiguration sollte vertrauenswürdige SSL-Autoritätsliste haben, damit Sie dieses Problem in Zukunft nicht lösen können & noch in der Lage sein, Zertifikate zu validieren.

Wenn Sie nicht die Möglichkeit haben, Serverkonfigurationen zu ändern, können Sie das CA-Bundle von Mozilla herunterladen & Feed es in Ihrem Code zu locken.

CA-Bundle URL: http://curl.haxx.se/ca/cacert.pem

es in Ihrem curl Einrichten ist einfach wie folgt:

curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cacert.pem'); 

Wenn Sie die Möglichkeit, eine benutzerdefinierte Datei php.ini oder überwiegenden zu verwenden PHP-Werte in Ihrem System, Sie können dies global für PHP einstellen.

curl.cainfo=/path/to/cacert.pem 
Verwandte Themen