com.arcbees.stripe.client.StripeImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.arcbees.stripe.client.StripeImpl.java

Source

/**
 * Copyright 2014 ArcBees Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.arcbees.stripe.client;

import com.google.gwt.core.client.Callback;
import com.google.gwt.core.client.ScriptInjector;

public class StripeImpl implements Stripe {
    private static final String STRIPE_JAVASCRIPT_URL = "https://js.stripe.com/v2/";

    @Override
    public void inject(final Callback<Void, Exception> callback) {
        if (!isInjected()) {
            ScriptInjector.fromUrl(STRIPE_JAVASCRIPT_URL).setWindow(ScriptInjector.TOP_WINDOW)
                    .setCallback(new Callback<Void, Exception>() {
                        @Override
                        public void onFailure(Exception reason) {
                            callback.onFailure(reason);
                        }

                        @Override
                        public void onSuccess(Void result) {
                            callback.onSuccess(result);
                        }
                    }).inject();
        }
    }

    @Override
    public void getCreditCardToken(CreditCard creditCard, CreditCardResponseHandler creditCardResponseHandler) {
        getCreditCardToken(creditCard.getCreditCardNumber(), creditCard.getCvc(), creditCard.getExpirationMonth(),
                creditCard.getExpirationYear(), creditCard.getName(), creditCard.getAddressLine1(),
                creditCard.getAddressLine2(), creditCard.getAddressCity(), creditCard.getAddressState(),
                creditCard.getAddressZip(), creditCard.getAddressCountry(), creditCardResponseHandler);
    }

    @Override
    public void getBankAccountToken(BankAccount bankAccount, BankAccountResponseHandler responseHandler) {
        getBankAccountToken(bankAccount.getCountry(), bankAccount.getRoutingNumber(),
                bankAccount.getAccountNumber(), responseHandler);
    }

    @Override
    public native boolean validateCardNumber(String cardNumber) /*-{
                                                                return $wnd.Stripe.card.validateCardNumber(cardNumber);
                                                                }-*/;

    @Override
    public native boolean validateCardExpiry(String month, String year) /*-{
                                                                        return $wnd.Stripe.card.validateExpiry(month, year);
                                                                        }-*/;

    @Override
    public native boolean validateCardCvc(String cvc) /*-{
                                                      return $wnd.Stripe.card.validateCVC(cvc);
                                                      }-*/;

    @Override
    public native boolean validateRoutingNumber(String routingNumber, String country) /*-{
                                                                                      return $wnd.Stripe.bankAccount.validateRoutingNumber(routingNumber, country);
                                                                                      }-*/;

    @Override
    public native boolean validateAccountNumber(String accountNumber, String country) /*-{
                                                                                      return $wnd.Stripe.bankAccount.validateAccountNumber(accountNumber, country);
                                                                                      }-*/;

    @Override
    public native void getCreditCard(String token, CreditCardResponseHandler handler) /*-{
                                                                                      var callback = function (status, response) {
                                                                                      handler.@com.arcbees.stripe.client.CreditCardResponseHandler::onCreditCardReceived(ILcom/arcbees/stripe/client/jso/CreditCardResponse;)(status, response);
                                                                                      }
                                                                                          
                                                                                      return $wnd.Stripe.getToken(token, callback);
                                                                                      }-*/;

    @Override
    public native void getBankAccount(String token, BankAccountResponseHandler handler) /*-{
                                                                                        var callback = function (status, response) {
                                                                                        handler.@com.arcbees.stripe.client.BankAccountResponseHandler::onBankAccountReceived(ILcom/arcbees/stripe/client/jso/BankAccountResponse;)(status, response);
                                                                                        }
                                                                                            
                                                                                        return $wnd.Stripe.getToken(token, callback);
                                                                                        }-*/;

    @Override
    public native String getCardType(String cardNumber) /*-{
                                                        return $wnd.Stripe.card.cardType(cardNumber);
                                                        }-*/;

    @Override
    public native boolean isInjected() /*-{
                                       return typeof $wnd.Stripe !== "undefined";
                                       }-*/;

    @Override
    public native void setPublishableKey(String publishableKey) /*-{
                                                                $wnd.Stripe.setPublishableKey(publishableKey);
                                                                }-*/;

    private native void getCreditCardToken(String creditCardNumber, String cvc, int expiryMonth, int expiryYear,
            String name, String addressLine1, String addressLine2, String addressCity, String addressState,
            String addressZip, String addressCountry, CreditCardResponseHandler creditCardResponseHandler) /*-{
                                                                                                           var creditCardInfo = {
                                                                                                           number: creditCardNumber,
                                                                                                           cvc: cvc,
                                                                                                           exp_month: expiryMonth,
                                                                                                           exp_year: expiryYear,
                                                                                                           name: name,
                                                                                                           address_line1: addressLine1,
                                                                                                           address_line2: addressLine2,
                                                                                                           address_city: addressCity,
                                                                                                           address_state: addressState,
                                                                                                           address_zip: addressZip,
                                                                                                           address_country: addressCountry
                                                                                                           };
                                                                                                               
                                                                                                           var createTokenCallback = function (status, response) {
                                                                                                           creditCardResponseHandler.@com.arcbees.stripe.client.CreditCardResponseHandler::onCreditCardReceived(ILcom/arcbees/stripe/client/jso/CreditCardResponse;)(status, response);
                                                                                                           }
                                                                                                               
                                                                                                           $wnd.Stripe.card.createToken(creditCardInfo, createTokenCallback);
                                                                                                           }-*/;

    private native void getBankAccountToken(String country, String routingNumber, String accountNumber,
            BankAccountResponseHandler responseHandler) /*-{
                                                        var bankAccount = {
                                                        country: country,
                                                        routingNumber: routingNumber,
                                                        accountNumber: accountNumber
                                                        };
                                                            
                                                        var createTokenCallback = function (status, response) {
                                                        responseHandler.@com.arcbees.stripe.client.BankAccountResponseHandler::onBankAccountReceived(ILcom/arcbees/stripe/client/jso/BankAccountResponse;)(status, response);
                                                        }
                                                            
                                                        $wnd.Stripe.bankAccount.createToken(bankAccount, createTokenCallback);
                                                        }-*/;
}