2015-12-24 77 views
5

Jestem nowicjuszem w web dev i eksperymentuję z webhookami Braintree. Używam ich przykładowego kodu submerchant do tworzenia submerskera, a następnie podobno powiadomienie ma dotrzeć do mojego serwera, który mówi, czy udało się, czy nie.Print_r niczego nie zwraca; var_dump pokazuje NULL

Moja metoda: I odświeżyć stronę submerchant.php (Używam Wordpress na serwerze NameCheap), który następnie echo „s "Success!". Następnie przechodzę na stronę webhooks.php i odświeżam ją. Jednak tylko zwrot var_dumpNULL NULL i print_r nic nie zwraca. Dlaczego print_r nic nie pokazuje?

submerchant.php - to tworzy submerchant kiedy ustawić $one = 1 i ustanowił nowy id dla 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()' zachowuje się jak 'echo', a więc wartość pusta nic nie drukuje, podczas gdy' var_dump() 'w pełni sprawdza, czy wyświetla swoją wartość (jeśli ma) i wpisuje - i są one zerowe. Teraz, dlaczego są one puste, a nie zaludnione? To zależy od tego, kiedy je odświeżasz. Wartości '$ _POST' będą obecne tylko w momencie otrzymania żądania. Nie znam Braintree, więc nie mogę spekulować na temat tego, czego się spodziewa, ale twoje użycie terminu "odśwież" w skrypcie webhooks sprawia, że ​​podejrzewam, że ładujesz go ręcznie, dzięki czemu wartości POST nie byłyby obecny. –

+0

@MichaelBerkowski Myślę, że widzę, co mówisz o ręcznym odświeżaniu. Wygląda to tak, jakby do czasu odświeżenia zmienna została wygaszona. Masz jakieś wskazówki, jak mogę przetestować ten webhook i dokładnie powiedzieć, co zostanie zwrócone? – whatwhatwhat

+0

Czy [z tego właśnie korzystasz] (https://developers.braintreepayments.com/guides/webhooks/create/php)? Nie będziesz mógł odwiedzić skryptu webhooks.php i uzyskać mega przychodzących danych, ponieważ braintree jest tym, co do niego wzywa. Nigdy nie zobaczysz tam danych postów BT, ponieważ żądania HTTP są bezpaństwowcami. Jeśli utworzysz formularz z bt_payload, bt_signature input i opublikujesz go w webhooks.php, zobaczysz wartości, które wysłałeś. Po prostu wizyta tego skryptu nie przyniesie ci pomocnej odpowiedzi. –

Odpowiedz

0

Najprawdopodobniej wyprowadzane dane są przechowywane w buforze wyjściowym. Jeśli jesteś prawie pewien, że chcesz zdebugować swój kod w ten sposób, spróbuj dodać wywołanie wp_die(); zaraz po wyprowadzeniu danych za pomocą print_r. To powinno pomóc!

Jeszcze jedno: czasami część kodu (nie ten konkretny przypadek) nigdy nie jest generowana z powodu bardziej złożonego przepływu danych. W takich przypadkach dobrym pomysłem może być użycie narzędzi do debugowania trzeciej strony lub, jeśli szukasz prostszego rozwiązania, możesz zapisać niektóre dane wyjściowe do pliku dziennika, a następnie sprawdzić plik.

Powodzenia!