3

JSNIコード内でJavascriptライブラリ(CDNからダウンロード)を使用するにはどうすればよいですか?

たとえば、このJSNIメソッド内からjavascriptStripeメソッドを呼び出したいと思います。

    private native void contactStripe(String creditCard, String cvc, String expiryMonth, String expiryYear) /*-{
        $wnd.Stripe.setPublishableKey('my_stripe_publishable_key');
        $wnd.Stripe.createToken({
            number: creditCard,
            cvc: cvc,
            exp_month: expiryMonth,
            exp_year: expiryYear
        }, callBack);
    }-*/;

...しかし、Stripejavascriptメソッドは定義されていません。

(Stripe.createTokenメソッドの詳細https://stripe.com/docs/tutorials/forms#create-a-single-use-token

Stripe javascriptファイルは、CDNURLを使用して挿入されます。

ScriptInjector.fromUrl("https://js.stripe.com/v1/").setCallback(
    new Callback<Void, Exception>() {
    public void onFailure(Exception reason) {
    }
    public void onSuccess(Void result) {
        contactStripe("0000111122223333", "456", "04", "2014");
    }
}).inject();
4

2 に答える 2

9

JSスクリプトが定義するグローバル変数にアクセスできるように、JSスクリプトを挿入する場合は$wnd、を実行する必要があります。setWindow(ScriptInjector.TOP_WINDOW)

于 2013-01-22T10:56:43.667 に答える
0

コードを次のように変更してみてください。

private native void contactStripe(String creditCard, String cvc, String expiryMonth, String expiryYear) /*-{

    console.log($wnd.Stripe);             // Should log 'Object'
    console.log($wnd.Stripe.createToken); // should log function
    var obj = {
        number: creditCard,
        cvc: cvc,
        exp_month: expiryMonth,
        exp_year: expiryYear
    };
    consloe.log(obj);                     // Should be 'Object'
    $wnd.Stripe.createToken(obj, callBack);
}-*/; 

Chrome デバッグ ツールを使用すると、これらすべてのオブジェクトを調べることができます。

update コールバックを提供していません。それはあなたの問題ですか?

于 2013-01-21T20:05:42.420 に答える