【发布时间】:2015-04-24 01:51:16
【问题描述】:
我正在尝试将 Strip 结帐流程集成到我的 gwt 应用程序中。根据文档 https://stripe.com/docs/checkout#integration-custom
我们进行配置调用,然后添加支付完成事件处理程序。但是由于某种原因,javascript找不到回调函数(令牌)
未捕获的类型错误:未定义不是函数 checkout.js:2 TokenCallback.trigger checkout.js:2 __bindcheckout.js:2(匿名函数) checkout.js:2 IframeView.close checkout.js:2 __bindcheckout.js:1 RPC.processMessage checkout.js:1 __bindcheckout.js:1 RPC.message checkout.js:1(匿名函数)打开/关闭的钩子被调用了
公共类 StripePaymentHandler { 公共静态无效初始化(最终字符串 apiKey){ 如果(!isInjected()){ ScriptInjector.fromUrl("https://checkout.stripe.com/checkout.js").setWindow(ScriptInjector.TOP_WINDOW) .setCallback(新回调(){ @覆盖 公共无效onFailure(异常e){ Window.alert("加载条带失败"); } @覆盖 公共无效onSuccess(无效aVoid){ 做初始化(apiKey); } })。注入(); } } public static native void doInitialize(String apiKey) /*-{ console.log('初始化条带:'+apiKey); $wnd.callback = 函数(令牌){ 控制台.log(令牌); 警报(令牌); } $wnd.handler = $wnd.StripeCheckout.configure({ 键:'键', 图片:'/images/logo.png', 令牌:$wnd.callback }); }-*/; 公共静态无效完成支付(StripeCheckoutToken 令牌){ Window.alert(token.getId()); } public static native void handlePaymentButtonClicked(String description, double price) /*-{ $wnd.handler.open({ 名称:'Ziplly', 描述:描述, 数量:价格, 键:'键', 令牌:函数(令牌){ 控制台.log(令牌); 警报(令牌); }, 打开:函数(){ 警报(“打开”); } }); }-*/; public static native boolean isInjected() /*-{ return typeof $wnd.Stripe !== "undefined"; }-*/; }我能够在 configure 方法调用之后验证 $wnd.handler 确实存在。我也尝试将回调放在 handler.open 方法中,但没有运气。对此的任何帮助将不胜感激。
编辑 2 这是调用 handler.open() 的按钮处理程序代码。这工作得很好,但是配置方法(令牌)的回调永远不会被调用,而是我得到了我上面描述的错误。那有意义吗?
@覆盖 公共无效 onSuccess(CheckBuyerEligibilityForCouponResult 结果){ PaymentProviderName providerName = result.getPaymentSetupResponse().getProviderName(); 开关(供应商名称){ 谷歌案例: handleGooglePayment(result.getPaymentSetupResponse()); 休息; 案例条纹: StripePaymentHandler.handlePaymentButtonClicked("优惠券购买", 20); }【问题讨论】:
-
在条带文档上一目了然,应该有对 $wnd.handler.open 的调用(带有 args 等),但它不会出现在您的代码中。另外,你能分享一下日志吗?在您的 java 代码中应该调用 completePayment 什么 - 似乎没有任何引用它?
-
感谢您的回复。 handlePaymentButtonClicked 注册为支付按钮点击监听器。当我点击支付按钮时,它被调用并弹出条形表单。我填写详细信息(电子邮件/抄送/到期日期),然后点击确定。我得到了一个成功的令牌,但是与 handler.open 或 StripeCheckout.configure 中的令牌对应的回调没有被调用。 “completePayment”还没有连接,想法是从回调中调用“completePayment”。
-
但是回调并没有这样做,如果没有完整的代码,很难说为什么。而不是你所描述的,你的回调调用
alert,并且在你的代码中的任何地方都没有调用handler.open,所以这根本不应该工作。如果你不展示你所拥有的东西,就很难提供帮助,而仅仅展示你认为我们需要帮助的部分,只有在你已经知道出了什么问题的情况下才会起作用;)。 -
仍然遇到同样的问题。关于如何进行调试的任何想法。
标签: gwt stripe-payments