2015-12-24 33 views
5

Sono nuovo di web dev e sto sperimentando con i webwint di Braintree. Sto usando il loro codice di esempio del submerchant per creare un submerchant e quindi si presume che una notifica raggiunga il mio server che dice se ha avuto successo o meno.Print_r non restituisce nulla; var_dump mostra NULL

Il mio metodo: ho aggiornare la pagina submerchant.php (sto usando Wordpress su un server di NameCheap), che poi echo s' "Success!". Poi vado alla pagina webhooks.php e lo aggiorno. Tuttavia, gli NULL NULL e gli restituiscono solo var_dump e non restituiscono nulla. Perché print_r non mostra nulla?

submerchant.php - questo crea l'submerchant quando ho impostato $one = 1 e impostare un nuovo id per il submerchant

<?php 

require_once(__DIR__ . '/../braintree/lib/Braintree.php'); 

Braintree_Configuration::environment('sandbox'); 
Braintree_Configuration::merchantId('A'); 
Braintree_Configuration::publicKey('B'); 
Braintree_Configuration::privateKey('C'); 

function fd_create_sm() { 

    $one; 

    $one = 1; 

    if($one=1) { 

    $merchantAccountParams = [ 
     'individual' => [ 
     'firstName' => 'Janez', 
     'lastName' => 'Doe', 
     'email' => '[email protected]', 
     'phone' => '5553334444', 
     'dateOfBirth' => '1981-11-19', 
     'ssn' => '456-45-4567', 
     'address' => [ 
      'streetAddress' => '111 Main St', 
      'locality' => 'Chicago', 
      'region' => 'IL', 
      'postalCode' => '60622' 
     ] 
     ], 
     'business' => [ 
     'legalName' => 'Jane\'s Ladders', 
     'dbaName' => 'Jane\'s Ladders', 
     'taxId' => '98-7654321', 
     'address' => [ 
      'streetAddress' => '111 Main St', 
      'locality' => 'Chicago', 
      'region' => 'IL', 
      'postalCode' => '60622' 
     ] 
     ], 
     'funding' => [ 
     'descriptor' => 'Red Ladders', 
     'destination' => Braintree_MerchantAccount::FUNDING_DESTINATION_BANK, 
     'email' => '[email protected]', 
     'mobilePhone' => '5555555555', 
     'accountNumber' => '1123581321', 
     'routingNumber' => '071101307' 
     ], 
     'tosAccepted' => true, 
     'masterMerchantAccountId' => "na", 
     'id' => "green_ladders" 
    ]; 
    $result = Braintree_MerchantAccount::create($merchantAccountParams); 

    $result->success; 
    if($result->success) { 
    echo 'Success!'; 
    } else { 

    print_r($result->errors); 

      $errordata; 
      echo '***********'; 
      $BT_Errors = new Braintree_Error_ErrorCollection($errordata); 
      echo '***********'; 
      $BT_Errors->deepAll(); 
      echo '***********'; 
      $BT_Errors->onHtmlField("transaction[amount]"); 

    } 

    $result->merchantAccount->status; 

    $result->merchantAccount->id; 
    // "blue_ladders_store" 
    $result->merchantAccount->masterMerchantAccount->id; 
    // "14ladders_marketplace" 
    $result->merchantAccount->masterMerchantAccount->status; 
    // "active" 

    } else { 
    return; 

    } 
} 

fd_create_sm(); 

?> 

webhooks.php

<?php 

var_dump($_POST['bt_signature']); 
var_dump($_POST['bt_payload']); 

print_r($_POST['bt_signature']); 
print_r($_POST['bt_payload']); 

?> 
+0

'print_r()' si comporta come 'echo', e quindi il valore nullo non stampa nulla, mentre' var_dump() 'lo ispeziona completamente per mostrare il suo valore (se ne ha uno) e tipo - e sono nulli. Ora sul perché sono nulli invece che popolati? Dipende da quando lo stai rinfrescando. I valori '$ _POST' saranno presenti solo al momento della ricezione della richiesta. Non conosco Braintree, quindi non posso speculare su ciò che si aspetta, ma il tuo uso del termine "refresh" sullo script webhooks mi rende sospetto che tu lo stia caricando manualmente in qualche modo, per cui i valori POST non sarebbero presente. –

+0

@MichaelBerkowski Penso di vedere cosa stai dicendo riguardo l'aggiornamento manuale. È quasi come se nel momento in cui colpisco refresh la variabile viene cancellata. Hai qualche consiglio su come posso testare questo webhook e dire esattamente cosa viene restituito? – whatwhatwhat

+0

È [questo che stai lavorando da] (https://developers.braintreepayments.com/guides/webhooks/create/php)? Non sarai in grado di visitare lo script webhooks.php e ottenere l'output mraningful da in perché Braintree è ciò che lo chiama. Non vedrai mai i dati dei post di BT lì, perché le richieste HTTP sono stateless. Se crei un modulo con bt_payload, bt_signature input e postalo su webhooks.php, vedresti i valori che hai inviato. Solo visitung quella sceneggiatura non ti darà una risposta utile. –

risposta

0

Molto probabilmente, il emessi i dati sono memorizzati all'interno di un buffer di output. Se sei abbastanza sicuro di voler eseguire il debug del tuo codice in questo modo, prova ad aggiungere la chiamata wp_die(); subito dopo l'output dei dati utilizzando print_r. Questo dovrebbe aiutare!

Un'altra cosa: a volte parte del codice (non in questo caso particolare) non viene mai emesso a causa di un flusso di dati più complesso. In questi casi potrebbe essere una buona idea utilizzare alcuni strumenti di debug di terze parti o, se stai cercando una soluzione più semplice, puoi scrivere parte dell'output in qualche file di registro e controllare il file in seguito.

Buona fortuna!

Problemi correlati