2015-01-09 11 views
5

Ich möchte meine Webhook-Funktionalität mit verschiedenen Benachrichtigungen testen. Im Moment kann ich es nur für das Abbrechen von Abonnements testen (indem ich das Abonnement vom Backend von Braintree annulliere).Wie Braintree Webhooks mit verschiedenen Benachrichtigungstypen zu testen

$webhookNotification = Braintree_WebhookNotification::parse($sampleNotification["bt_signature"], $sampleNotification["bt_payload"]);   

ich auch https://www.braintreepayments.com/docs/php/webhooks/testing versucht:

$sampleNotification = Braintree_WebhookTesting::sampleNotification(Braintree_WebhookNotification::SUBSCRIPTION_WENT_ACTIVE,'1234qwe'); 
$webhookNotification = Braintree_WebhookNotification::parse($sampleNotification["bt_signature"], $sampleNotification["bt_payload"]); 

Aber das Ergebnis gibt die API ist nicht zufriedenstellend. Es gibt immer das gleiche Array für alle Benachrichtigungstypen zurück, unabhängig davon, ob die Abonnement-ID vorhanden ist oder nicht.

Antwort

3

Sie haben Recht, dass der Braintree_WebhookTesting::sampleNotification den Status Ihres Braintree Tresors nicht kennt. Diese Methode soll verwendet werden, um schnell alle Webhook-Benachrichtigungstypen zu emulieren, die möglicherweise empfangen werden, da das Einrichten einer Testumgebung zum Empfangen von Webhooks ziemlich aufwendig sein kann.

Wenn Sie tatsächliche Webhooks mit den verschiedenen Benachrichtigungstypen erhalten möchten, müssen Sie das Subscription-, Merchant Account- oder Braintree-Objekt erstellen, für das Sie einen Webhook erhalten möchten.

Volle Enthüllung: Ich bin ein Braintree-Entwickler.

+0

Ich bin tatsächlich Webhook Meldungsart Empfang nur für Abonnement Cancelling .Wie kann ich die tatsächliche Webhook für andere Benachrichtigungen Art erreichen? Ich habe versucht, eine Transaktion aus dem Branitree-Konto (https://sandbox.braintreegateway.com/) hinzuzufügen, aber es scheint nicht für mich zu arbeiten. – user2971353

+1

@openbl: Ist es möglich, die relevanten Felder der Beispiel-Webhook-Benachrichtigung irgendwie zu füllen? Es ist wirklich ein Muss, wenn es darum geht, Anwendungsfälle abhängig von zum Beispiel: billingEndDate. BTW: Ich verwende das Java SDK. – sanya

+0

@sanya, abgesehen von der Abonnement-ID ist es nicht möglich, andere Felder im Test-Webhook zu füllen. – openbl

1

Hier ist mein Test-Skript, das Beispiel Test Post-Daten senden Webhook URL localhost:

<?php 
require_once __DIR__ . '/vendor/autoload.php'; 

// your sandbox data 
\Braintree\Configuration::environment('env...'); 
\Braintree\Configuration::merchantId('id'); 
\Braintree\Configuration::publicKey('your key'); 
\Braintree\Configuration::privateKey('your key'); 

$kind = isset($argv[1]) ? $argv[1] : \Braintree\WebhookNotification::CHECK; 
$id = isset($argv[2]) ? $argv[2] : null; 

$sampleNotification = \Braintree\WebhookTesting::sampleNotification($kind, $id); 
$signature = $sampleNotification['bt_signature']; 
$payload = $sampleNotification['bt_payload']; 

// Submit a payload and signature to handler 
$ch = curl_init('http://localhost/braintree.hook.php'); // Your URL 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
    ['bt_signature' => $signature, 'bt_payload' => $payload] 
); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

echo curl_exec($ch); 

Sie zwei params zu diesem Skript zuerst senden kind und zweiten id. Damit können Sie die Art der Veranstaltung ändern - überprüfen Sie documentation. Folgen Sie ein Beispiel, wie subscription_canceled Ereignis generieren:

php webhook.tests.php subscription_canceled 123456 > output.txt