2015-04-11 15 views
14

Ricevo una risposta nulla da Authorize.Net quando provo a creare un profilo ricorrente dal mio server di test utilizzando la carta di credito. questo è ciò che ottengo sul var_dump ($ response):Risposta nulla da Authorize.net Automatic Recurrent Billing (ARB)

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

Mentre si sta lavorando perfettamente quando richiesta fatta da localhost. var_dump ($ response) da localhost dà questo output:

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" 
    } 
} 

Non so dove potrebbe essere il problema. Si prega di aiutare

Ecco il codice

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

Il server è in grado di connettersi alla sandbox? non sembra così. – rhldr

+0

@rhldr sì, si è verificato un errore di connessione ma si è verificato nella risposta ARB. Non so perché? – manoj

risposta

12

Got it !!! Era un errore di connessione. Ho ricevuto l'errore quando ho provato a effettuare un pagamento con AIM. Ancora non so perché l'errore non è stato mostrato nella risposta ARB. In ogni modo, ecco quello che ho fatto

In /lib/shared/AuthorizeNetRequest.php

Changed

public $VERIFY_PEER = true; 

a

public $VERIFY_PEER = false; 

e ha funzionato!

+0

Per coloro che vedono questo quickfix (e risposta accettata), si prega di leggere l'altra risposta sopra per il modo giusto per risolvere questo problema. Non verificare il certificato è una cattiva idea. Non vuoi che nessun server sia in grado di parlarti come il suo authorize.net –

4

Vedo che hai trovato una soluzione per il tuo problema, ma quello che hai fatto è una cattiva idea, Stai essenzialmente disabilitando la convalida del certificato SSL.

La configurazione del server deve disporre di un elenco di autorità SSL attendibili, in modo che non si verifichi questo problema in futuro & ancora in grado di convalidare i certificati.

Se non si ha la possibilità di modificare le configurazioni del server, è possibile scaricare il pacchetto CA da Mozilla & Alimentarlo per arricciare il codice.

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

sua creazione nel vostro ricciolo è semplice come segue:

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

Se avete la possibilità di utilizzare un file php.ini personalizzato o preponderante valori php nel tuo sistema, puoi impostarlo globalmente per PHP.

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