Интеграция полосы с приложением для Android

Я пытаюсь поддерживать страйп-платежи из своего приложения для Android, но оно не запускается. Ява несовместима? Мой код и ошибки ниже:

package io.noq.kiosk.android;

import java.util.HashMap;
import java.util.Map;
import com.stripe.Stripe;
import com.stripe.exception.APIConnectionException;
import com.stripe.exception.AuthenticationException;

import com.stripe.exception.CardException;
import com.stripe.exception.InvalidRequestException;
import com.stripe.exception.StripeException;
import com.stripe.model.Charge;

import io.noq.android.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class OnSwipeActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Stripe.apiKey = "the secret (intentionally omitting)";
        Map<String, Object> chargeMap = new HashMap<String, Object>();

        chargeMap.put("amount", 100);
        chargeMap.put("currency", "usd");

        Map<String, Object> cardMap = new HashMap<String, Object>();
        cardMap.put("number", "4242424242424242");
        cardMap.put("exp_month", 12);
        cardMap.put("exp_year", 2013);
        chargeMap.put("card", cardMap);

        try {
            Charge charge = Charge.create(chargeMap);
            System.out.println(charge);
            Log.i("Status is: " + "exiting try onCreate-PayActivity", "let's see what goes out....");
            System.out.println("Status is: "+ "exiting try onCreate-PayActivity");
        } catch (CardException e) {
            // Since it's a decline, CardException will be caught
            System.out.println("CardException is: " + e.getCode());
            System.out.println("CardException is: " + e.getParam());
            Log.i(OnSwipeActivity.class.getName(), "e.getCode() ...." + e.getCode());
        } catch (InvalidRequestException e) {
            // Invalid parameters were supplied to Stripe's API
            System.out.println("InvalidRequestException: " + e.getMessage());
            Log.i(OnSwipeActivity.class.getName(),"e.getCode() ...." + e.getCause());
        } catch (AuthenticationException e) {
            // Authentication with Stripe's API failed (maybe you changed API keys recently)
            System.out.println("AuthenticationException: " + e.getMessage());
            Log.i(OnSwipeActivity.class.getName(), "e.getCode() ...." + e.getCause());
        } catch (APIConnectionException e) {
            // Network communication with Stripe failed
            System.out.println("APIConnectionException: " + e.getMessage());
            Log.i(OnSwipeActivity.class.getName(), "e.getCode() ...." + e.getCause());
        } catch (StripeException e) {
            // Display a very generic error to the user, and maybe send yourself an email
            System.out.println("StripeException: " + e.getMessage());
            Log.i(OnSwipeActivity.class.getName(), "e.getCode() ...." + e.getCause());
        } catch (Exception e) {
            // Something else happened, completely unrelated to Stripe
            System.out.println("Exception: " + e.getMessage());
            Log.i(OnSwipeActivity.class.getName(), "e.getCode() ...." + e.getCause());
        }
    }
}

Это ошибки:

12-25 05:34:22.625: W/dalvikvm(801): threadid=1: поток завершается с необработанным исключением (группа=0x40a70930)

12-25 05:34:22.647: E/AndroidRuntime(801): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной

12-25 05:34:22.647: E/AndroidRuntime(801): java.lang.NoClassDefFoundError com.stripe.Stripe

12-25 05:34:22.647: E/AndroidRuntime(801): в io.noq.kiosk.android.OnSwipeActivity.onCreate(OnSwipeActivity.java:26)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.app.Activity.performCreate(Activity.java:5104)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.app.ActivityThread.access$600(ActivityThread.java:141)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.os.Handler.dispatchMessage(Handler.java:99)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.os.Looper.loop(Looper.java:137)

12-25 05:34:22.647: E/AndroidRuntime(801): в android.app.ActivityThread.main(ActivityThread.java:5039)

12-25 05:34:22.647: E/AndroidRuntime(801): в java.lang.reflect.Method.invokeNative(собственный метод)

12-25 05:34:22.647: E/AndroidRuntime(801): в java.lang.reflect.Method.invoke(Method.java:511)

12-25 05:34:22.647: E/AndroidRuntime(801): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

12-25 05:34:22.647: E/AndroidRuntime(801): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

12-25 05:34:22.647: E/AndroidRuntime(801): в dalvik.system.NativeStart.main(собственный метод)


person Spencer Hewett    schedule 25.12.2012    source источник
comment
Я не могу подтвердить, что библиотека Java совместима, но есть полоса использования приложения play.google.com/store/apps/details?id=br.com.dina.striped   -  person Anis BEN NSIR    schedule 25.12.2012


Ответы (1)


Вы можете использовать java-библиотеку Strip в проекте Android. Я реализовал Poc, используя класс Test из StripTest

Вы должны импортировать библиотеки как на картинке: Импортированные библиотеки

Вы можете протестировать пример кода:

public class MainActivity extends Activity {
    public static final String TAG                 = "TestStrip";
    static Map<String, Object> defaultCardParams   = new HashMap<String, Object>();
    static Map<String, Object> defaultChargeParams = new HashMap<String, Object>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Stripe.apiKey = "tGN0bIwXnHdwOa85VABjPdSn8nWY7G7I";
        init();
        Map<String, Object> chargeMap = new HashMap<String, Object>();
        chargeMap.put("amount", 100);
        chargeMap.put("currency", "usd");
        Map<String, Object> cardMap = new HashMap<String, Object>();
        cardMap.put("number", "4242424242424242");
        cardMap.put("exp_month", 12);
        cardMap.put("exp_year", 2013);
        chargeMap.put("card", cardMap);

        try {
            Charge createdCharge = Charge.create(defaultChargeParams);
            Fee fee = createdCharge.getFeeDetails().get(0);
            Preconditions.checkState("stripe_fee".equals(fee.getType()), "Stripe fee error.");
            Preconditions.checkState(createdCharge.getFee() == fee.getAmount(), "Error ");
        } catch (StripeException e) {
            // Display a very generic error to the user, and maybe send yourself an email
            Log.e(TAG, "e.getCode() ...." + e.getCause());
        }
    }

    private void init() {
        defaultCardParams.put("number", "4242424242424242");
        defaultCardParams.put("exp_month", 12);
        defaultCardParams.put("exp_year", 2015);
        defaultCardParams.put("cvc", "123");
        defaultCardParams.put("name", "Java Bindings Cardholder");
        defaultCardParams.put("address_line1", "140 2nd Street");
        defaultCardParams.put("address_line2", "4th Floor");
        defaultCardParams.put("address_city", "San Francisco");
        defaultCardParams.put("address_zip", "94105");
        defaultCardParams.put("address_state", "CA");
        defaultCardParams.put("address_country", "USA");
        defaultChargeParams.put("amount", 100);
        defaultChargeParams.put("currency", "usd");
        defaultChargeParams.put("card", defaultCardParams);
    }
}

Не забудьте добавить в манифест андроида. напишите мне, если вам нужны примеры исходных текстов проекта.

person Anis BEN NSIR    schedule 25.12.2012
comment
Привет, Анис, я разрабатываю приложение для Android, через которое пользователь будет платить кредитной картой, и я получу деньги. как я могу использовать полосу. пожалуйста, помогите мне. - person Vikash Kumar; 14.02.2013
comment
@Anis: Пожалуйста, предоставьте мне исходный код для оплаты через Stripe SDK. - person Ricky Khatri; 14.02.2013
comment
сначала необходимо иметь учетную запись с полосой, после чего обратитесь к учебнику по полосе. Если вы ищете только оплату кредитной картой, существует множество других решений. см.: stackoverflow.com/questions/3564482/ - person Anis BEN NSIR; 14.02.2013