Я пытаюсь интегрировать поток проверок в моем приложении gwt. В соответствии с документацией по https://stripe.com/docs/checkout#integration-customStripe checkout with gwt не работает
мы вызываем вызов configure, а затем добавляем обработчик события завершения платежа. Но по какой-то причине, браузер не может найти функцию обратного вызова (маркер)
Uncaught TypeError: undefined is not a function checkout.js:2 TokenCallback.trigger checkout.js:2 __bindcheckout.js:2 (anonymous function) checkout.js:2 IframeView.closed checkout.js:2 __bindcheckout.js:1 RPC.processMessage checkout.js:1 __bindcheckout.js:1 RPC.message checkout.js:1 (anonymous function)
Крюки для открытия/закрытия становятся называется хотя
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"; }-*/; }
Я был в состоянии проверить, что $ WND. обработчик существует после вызова метода configure. Я также попытался поместить обратный вызов в метод handler.open, но не повезло. Любая помощь по этому поводу будет оценена по достоинству.
EDIT 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); }
На первом взгляде на полосковых документах, должен быть призывом к $ wnd.handler.open (с аргументами, и т.д.), но он не появляется в коде , Кроме того, вы можете поделиться журналом? И что, предположительно, вызывает fullPayment в вашем java-коде - ничего, похоже, не ссылается на него? –
Спасибо за ответ. handlePaymentButtonClicked регистрируется как кнопка клика для кликов. Когда я нажимаю на кнопку оплаты, появляется вызов, и появляется полоса. Я заполняю детали (адрес электронной почты/cc/exp date), а затем нажимаю ok. И я получаю успешный токен назад, но обратный вызов, соответствующий токену в handler.open или StripeCheckout.configure, не вызван. «completePayment» еще не подключен, идея состоит в том, чтобы вызвать «completePayment» из обратного вызова. – user1010373
Но обратный вызов этого не делает, и его очень сложно сказать, почему без полного кода. Вместо того, что вы описали, ваш обратный вызов вызывает 'alert', и в вашем коде нет вызова' handler.open', поэтому это не должно работать вообще. Его трудно помочь, если вы не показываете, что у вас есть, и просто покажите часть, которую, по вашему мнению, нам нужно, помогут, только если вы уже знаете, что не так;). –