2016-08-13 8 views
1

В настоящее время я пытаюсь создать тест webhook-уведомление, как это показано в документации:Создание webhook-уведомлений в среде тестирования

HashMap<String, String> sampleNotification = gateway.webhookTesting().sampleNotification(
    WebhookNotification.Kind.SUBSCRIPTION_WENT_PAST_DUE, "my_id" 
); 

WebhookNotification webhookNotification = gateway.webhookNotification().parse(
    sampleNotification.get("bt_signature"), 
    sampleNotification.get("bt_payload") 
); 

webhookNotification.getSubscription().getId(); 
// "my_id" 

Во-первых, я не знаю, что на самом деле my_id должно быть. Предполагается, что это идентификатор плана? Или это должен быть идентификатор Subscription?

Я проверил все это. Я поставил его в существующий план биллинг в моем сейфе, и я также пытался создать Customer до фактического Subscription как это:

public class WebhookChargedSuccessfullyLocal { 

    private final static BraintreeGateway BT; 

    static { 
     String btConfig = "C:\\workspaces\\mz\\mz-server\\mz-web-server\\src\\main\\assembly\\dev\\braintree.properties"; 
     Braintree.initialize(btConfig); 
     BT = Braintree.instance(); 
    } 

    public static void main(String[] args) { 

     WebhookChargedSuccessfullyLocal webhookChargedSuccessfullyLocal = new WebhookChargedSuccessfullyLocal(); 
     webhookChargedSuccessfullyLocal.post(); 
    } 

    /** 
    * 
    */ 
    public void post() { 

     CustomerRequest customerRequest = new CustomerRequest() 
       .firstName("Testuser") 
       .lastName("Tester"); 

     Result<Customer> createUserResult = BT.customer().create(customerRequest); 

     if(createUserResult.isSuccess() == false) { 
      System.err.println("Could not create customer"); 
      System.exit(1); 
     } 

     Customer customer = createUserResult.getTarget(); 

     PaymentMethodRequest paymentMethodRequest = new PaymentMethodRequest() 
       .customerId(customer.getId()) 
       .paymentMethodNonce("fake-valid-visa-nonce"); 

     Result<? extends PaymentMethod> createPaymentMethodResult = BT.paymentMethod().create(paymentMethodRequest); 

     if(createPaymentMethodResult.isSuccess() == false) { 
      System.err.println("Could not create payment method"); 
      System.exit(1); 
     } 

     if(!(createPaymentMethodResult.getTarget() instanceof CreditCard)) { 
      System.err.println("Unexpected error. Result is not a credit card."); 
      System.exit(1); 
     } 

     CreditCard creditCard = (CreditCard) createPaymentMethodResult.getTarget(); 

     SubscriptionRequest subscriptionRequest = new SubscriptionRequest() 
       .paymentMethodToken(creditCard.getToken()) 
       .planId("mmb2"); 

     Result<Subscription> createSubscriptionResult = BT.subscription().create(subscriptionRequest); 

     if(createSubscriptionResult.isSuccess() == false) { 
      System.err.println("Could not create subscription"); 
      System.exit(1); 
     } 

     Subscription subscription = createSubscriptionResult.getTarget(); 

     HashMap<String, String> sampleNotification = BT.webhookTesting() 
       .sampleNotification(WebhookNotification.Kind.SUBSCRIPTION_CHARGED_SUCCESSFULLY, subscription.getId()); 

     WebhookNotification webhookNotification = BT.webhookNotification() 
       .parse(
         sampleNotification.get("bt_signature"), 
         sampleNotification.get("bt_payload") 
         ); 

     System.out.println(webhookNotification.getSubscription().getId()); 

    } 

} 

, но все, что я получаю это WebhookNotification экземпляр, который не имеет ничего набор , Кажется, установлен только его идентификатор и отметка времени, но это все.

Что я ожидал:

я ожидал получить Subscription объект, который говорит мне, который клиент подписался к нему, а также, например, все надстройки, которые включены в тарифный план.

Есть ли способ получить такие тестовые уведомления в режиме песочницы?

ответ

0

Полное раскрытие информации: Я работаю в Braintree. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться к support.

webhookNotification.getSubscription().getId(); возвращает идентификатор подписки, связанной с sampleNotification, что может быть что-либо для целей тестирования, но будет SubscriptionId в производственной среде.

Получение фиктивного объекта от webhookTesting().sampleNotification() является expected behavior и находится на месте, чтобы помочь вам правильно поймать все виды веб-крюков. После того, как эта логика находится на месте, в шлюзе Sandbox в разделе «Настройки»> «Веб-узлы» вы можете указать свою конечную точку для получения уведомлений реального веб-хоста.

В случае SUBSCRIPTION_CHARGED_SUCCESSFULLY вы действительно получите Subscription object, содержащую дополнительную информацию, а также массив Transaction objects, содержащий информацию о клиенте.