2016-08-13 3 views
1

Je suis en train de créer actuellement webhook notification d'essai comme il est indiqué dans la documentation:Création webhook notifications dans un environnement de test

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" 

Tout d'abord je ne sais pas ce que my_id fait devrait être. Est-ce censé être un identifiant de plan? Ou devrait-il être un Subscription ID?

J'ai tout testé. Je l'ai établi un plan de facturation existant dans mon coffre-fort et j'ai essayé aussi de créer un Customer jusqu'à une Subscription réelle comme ceci:

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

    } 

} 

mais tout ce que je reçois est une instance WebhookNotification qui a mis rien . Seul son identifiant et l'horodatage semblent être définis, mais c'est tout.

ce que j'attendais:

Je pensais recevoir un objet Subscription qui me dit que le client a souscrit aussi bien que par exemple tous les ajouts qui sont inclus dans le plan de facturation.

Existe-t-il un moyen d'obtenir de telles notifications de test en mode bac à sable?

Répondre

0

Divulgation complète: Je travaille chez Braintree. Si vous avez d'autres questions, n'hésitez pas à contacter support.

webhookNotification.getSubscription().getId(); renverra l'ID de l'abonnement associé à sampleNotification, qui peut être tout à des fins de test, mais un SubscriptionID dans un environnement de production.

Réception d'un objet factice de webhookTesting().sampleNotification() est le expected behavior, et est en place pour vous aider à vous assurer que toutes sortes de webhooks peuvent être pris correctement. Une fois cette logique en place, dans Sandbox Gateway, sous Paramètres> Webhooks, vous pouvez spécifier votre point de terminaison pour qu'il reçoive de vraies notifications sur le Web.

Dans le cas de SUBSCRIPTION_CHARGED_SUCCESSFULLY, vous recevrez en effet un Subscription object contenant des informations complémentaires ainsi qu'un tableau de Transaction objects contenant des informations client.