带gwt的条带签出不工作

带gwt的条带签出不工作,gwt,stripe-payments,Gwt,Stripe Payments,我正在尝试在我的gwt应用程序中集成条带检出流。根据 我们进行配置调用,然后添加支付完成事件处理程序。但是由于某些原因,javascript无法找到回调函数(令牌) 未捕获类型错误:未定义不是函数 js:2 TokenCallback.trigger checkout.js:2\uu bindcheckout.js:2(匿名函数) checkout.js:2 IframeView.closed checkout.js:2\uu bindcheckout.js:1 RPC.processMess

我正在尝试在我的gwt应用程序中集成条带检出流。根据

我们进行配置调用,然后添加支付完成事件处理程序。但是由于某些原因,javascript无法找到回调函数(令牌)

未捕获类型错误:未定义不是函数 js:2 TokenCallback.trigger checkout.js:2\uu bindcheckout.js:2(匿名函数) checkout.js:2 IframeView.closed checkout.js:2\uu bindcheckout.js:1 RPC.processMessage checkout.js:1\uu bindcheckout.js:1 RPC.message checkout.js:1(匿名函数) 打开/关闭的钩子被调用

public class StripePaymentHandler { public static void initialize(final String apiKey) { if (!isInjected()) { ScriptInjector.fromUrl("https://checkout.stripe.com/checkout.js").setWindow(ScriptInjector.TOP_WINDOW) .setCallback(new Callback() { @Override public void onFailure(Exception e) { Window.alert("Failed to load stripe"); } @Override public void onSuccess(Void aVoid) { doInitialize(apiKey); } }).inject(); } } public static native void doInitialize(String apiKey) /*-{ console.log('initializing Stripe: '+apiKey); $wnd.callback = function(token) { console.log(token); alert(token); } $wnd.handler = $wnd.StripeCheckout.configure({ key: 'key', image: '/images/logo.png', token: $wnd.callback }); }-*/; public static void completePayment(StripeCheckoutToken token) { Window.alert(token.getId()); } public static native void handlePaymentButtonClicked(String description, double price) /*-{ $wnd.handler.open({ name: 'Ziplly', description: description, amount: price, key: 'key', token: function(token) { console.log(token); alert(token); }, opened: function() { alert('opened'); } }); }-*/; public static native boolean isInjected() /*-{ return typeof $wnd.Stripe !== "undefined"; }-*/; } 公共类StripePaymentHandler{ 公共静态void初始化(最终字符串apiKey){ 如果(!isInjected()){ ScriptInjector.fromUrl(“https://checkout.stripe.com/checkout.js“”.setWindow(ScriptInjector.TOP_窗口) .setCallback(新回调(){ @凌驾 公共失效失效失效(例外e){ Window.alert(“加载条带失败”); } @凌驾 成功时公开作废(作废避免){ doInitialize(apiKey); } }).inject(); } } 公共静态本机void doInitialize(字符串apiKey)/*-{ log('初始化条带:'+apiKey); $wnd.callback=函数(令牌){ console.log(令牌); 警报(令牌); } $wnd.handler=$wnd.StripeCheckout.configure({ 键:“键”, 图像:'/images/logo.png', 令牌:$wnd.callback }); }-*/; 公共静态无效完成支付(StripeCheckoutToken令牌){ alert(token.getId()); } 公共静态本机void handlePaymentButtonClicked(字符串描述,双倍价格)/*-{ $wnd.handler.open({ 名称:“Ziplly”, 描述:描述, 金额:价格, 键:“键”, 令牌:函数(令牌){ console.log(令牌); 警报(令牌); }, 已打开:函数(){ 警报(“打开”); } }); }-*/; 公共静态本机布尔值isInjected()/*-{ 返回类型$wnd.Stripe!=“未定义”; }-*/; } 我能够在configure方法调用之后验证$wnd.handler是否存在。我还尝试将回调放在handler.open方法中,但没有成功。在此方面的任何帮助都将不胜感激

编辑2 下面是调用handler.open()的按钮处理程序代码。这工作得很好,但是从未调用configure方法(令牌)的回调,相反,我得到了上面描述的错误。这有意义吗

@Override public void onSuccess(CheckBuyerEligibilityForCouponResult result) { PaymentProviderName providerName = result.getPaymentSetupResponse().getProviderName(); switch (providerName) { case GOOGLE: handleGooglePayment(result.getPaymentSetupResponse()); break; case STRIPE: StripePaymentHandler.handlePaymentButtonClicked("Coupon purchase", 20); } @凌驾 成功时公共无效(检查耦合结果的BuyerRigibility){ PaymentProviderName providerName=result.getPaymentSetupResponse().getProviderName(); 交换机(providerName){ 谷歌案例: handleGooglePayment(result.getPaymentSetupResponse()); 打破 箱带: StripePaymentHandler.handlePaymentButtonClicked(“优惠券购买”,20); }
我必须将按钮的ID添加到
StripeCheckout.configure()
方法中才能解决此问题。下面是它的用法:

$wnd.handler = $wnd.StripeCheckout.configure(
    $wnd.myButton.id,
    {
      key: 'key',
      image: '/images/logo.png',
      token: $wnd.callback
    });

浏览stripe文档时,应该会调用$wnd.handler.open(使用args等),但它没有出现在您的代码中。此外,您可以共享日志吗?java代码中提供了什么来调用completePayment-似乎没有任何引用它?感谢您的响应。handlePaymentButtonClicked注册为付款按钮click侦听器。当我单击付款按钮时,它会被调用,并显示条带表单弹出窗口。我填写详细信息(email/cc/exp-date),然后点击ok。我得到了一个成功的令牌,但是没有调用handler.open或StripeCheckout.configure中对应于令牌的回调。“completePayment”还没有连接,我们的想法是调用“completePayment”在回调中。但是回调不会这样做,如果没有完整的代码,很难说为什么。你的回调调用的不是你描述的,而是
警报
,并且没有调用
处理程序。在你的代码中的任何地方打开
,所以这根本不应该起作用。如果你不显示你拥有的东西,并且如果你已经知道问题出在哪里,那么展示你认为我们需要帮助的部分才有效;)。仍然遇到同样的问题。关于如何调试这个问题,你有什么想法吗。
$wnd.handler = $wnd.StripeCheckout.configure(
    $wnd.myButton.id,
    {
      key: 'key',
      image: '/images/logo.png',
      token: $wnd.callback
    });