1

ドキュメントに示されているように、現在テスト用の webhook-notification を作成しようとしています。

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まず、実際にどうあるべきかわかりません。プランIDのはずですか?それともSubscriptionIDでいいですか?

私はそれをすべてテストしました。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何も設定されていないインスタンスだけです。ID とタイムスタンプのみが設定されているように見えますが、それだけです。

私が期待したこと:

Subscriptionどの顧客がサブスクライブしたか、および料金プランに含まれるすべてのアドオンなどを示すオブジェクトを受け取ることを期待していました。

サンドボックス モードでそのようなテスト通知を取得する方法はありますか?

4

1 に答える 1

0

完全な開示: 私はブレインツリーで働いています。ご不明な点がございましたら、サポートまでお気軽にお問い合わせください。

webhookNotification.getSubscription().getId();は、 に関連付けられたサブスクリプションの ID を返しますsampleNotification。これは、テスト目的であれば何でもかまいませんが、実稼働環境では SubscriptionID になります。

からのダミー オブジェクトの受信webhookTesting().sampleNotification()想定される動作であり、すべての種類の Webhook を正しくキャッチできるようにするために用意されています。そのロジックが整ったら、[設定] > [Webhooks] の下のサンドボックス ゲートウェイで、実際の Webhook 通知を受信するようにエンドポイントを指定できます。

SUBSCRIPTION_CHARGED_SUCCESSFULLY実際に、アドオン情報を含むSubscription オブジェクトと、顧客情報を含むTransaction オブジェクトの配列を受け取ります。

于 2016-08-15T18:11:52.673 に答える