2015-01-09 16 views
5

Tôi muốn kiểm tra chức năng webhook của mình bằng các thông báo khác nhau. Ngay bây giờ tôi có thể kiểm tra nó chỉ để hủy bỏ đăng ký (bằng cách hủy bỏ các thuê bao từ backend của braintree).cách kiểm tra các webhook với braintree với các loại thông báo khác nhau

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

Tôi cũng đã cố gắng https://www.braintreepayments.com/docs/php/webhooks/testing:

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

Nhưng kết quả lợi nhuận API là không thỏa đáng. Nó luôn luôn trả về cùng một mảng cho tất cả các loại thông báo cho dù id đăng ký tồn tại hay không.

Trả lời

3

Bạn chính xác rằng Braintree_WebhookTesting::sampleNotification không biết trạng thái của hầm Braintree của bạn. Phương pháp đó được dự định sẽ được sử dụng để nhanh chóng mô phỏng tất cả các loại thông báo webhook mà người dùng có thể nhận được kể từ khi thiết lập môi trường thử nghiệm để nhận các webhook có thể được tham gia khá nhiều.

Nếu bạn đang muốn nhận các webhook thực tế với các loại thông báo khác nhau, bạn sẽ phải tạo đối tượng Đăng ký, Tài khoản người bán hoặc Braintree mà bạn hy vọng nhận được webhook.

Tiết lộ đầy đủ: Tôi là nhà phát triển Braintree.

+0

Tôi chỉ nhận được loại thông báo trên web thực tế để hủy đăng ký. Tôi đã thử thêm một giao dịch từ tài khoản branitree (https://sandbox.braintreegateway.com/) nhưng có vẻ như nó không hoạt động đối với tôi. – user2971353

+1

@openbl: có thể bằng cách nào đó điền vào các trường có liên quan của thông báo webhook mẫu không? Nó thực sự là phải khi nói đến các trường hợp sử dụng thử nghiệm phụ thuộc vào ví dụ: billingEndDate. BTW: Tôi đang sử dụng SDK Java. – sanya

+0

@sanya, ngoài ID đăng ký, không thể điền các trường khác vào webhook thử nghiệm. – openbl

1

Đây là kịch bản thử nghiệm của tôi rằng gửi dụ dữ liệu thử nghiệm đường bưu điện đến localhost URL webhook:

<?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); 

Bạn có thể gửi hai params để kịch bản này đầu tiên và thứ hai kindid. Điều đó cho phép bạn thay đổi loại sự kiện - hãy xem documentation. Thực hiện theo một ví dụ, cách tạo sự kiện subscription_canceled:

php webhook.tests.php subscription_canceled 123456 > output.txt 
Các vấn đề liên quan