android中的条带集成和创建令牌

时间:2015-02-17 07:53:37

标签: android stripe-payments

我想在android中集成条带并使用可发布密钥测试代码。我想在成功交易后使用卡牌参考任何建议的代码来创建令牌。

4 个答案:

答案 0 :(得分:2)

您不应在Android应用内付费。客户端(此处为您的应用程序)应该只获取Stripe令牌,然后将此令牌发送到您的后端(您的服务器),然后使用此令牌创建带条带的费用。

您不能创建一个充电客户端,因为它不安全:您的密钥不应该在应用程序内部,因为它不再是秘密。

这就是为什么lib stripe-android没有收费等级的原因:它不是为了这个。 stripe-java lib旨在用于java服务器。

答案 1 :(得分:1)

遵循此代码并导入条带库。

public class StripePaymentActivity extends FragmentActivity {

/*
 * Change this to your publishable key.
 * 
 * You can get your key here: https://manage.stripe.com/account/apikeys
 */
// public static final String PUBLISHABLE_KEY =
// "pk_test_Tw0HyQcWAVM9R5dBdiiS90X9"; Client Key

public static final String PUBLISHABLE_KEY = "your key";
private ProgressDialogFragment progressFragment;
String[] id, memberId, userEmail, endDate;
Dialog dialog;

@SuppressLint("NewApi")
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.payment_activity);
dialog = new Dialog(StripePaymentActivity.this);
if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .permitAll().build();
    StrictMode.setThreadPolicy(policy);
}
progressFragment = ProgressDialogFragment
        .newInstance(R.string.progressMessage);
}

public void saveCreditCard(PaymentForm form) {

Card card = new Card(form.getCardNumber(), form.getExpMonth(),
        form.getExpYear(), form.getCvc());
Log.e("card ", "27th March ::- " + card);
boolean validation = card.validateCard();
Log.e("Validation", "27th March::-" + validation);
if (validation) {
    startProgress();
    new Stripe().createToken(card, PUBLISHABLE_KEY,
            new TokenCallback() {
                public void onSuccess(Token token) {
                    try {
                        // getTokenList().addToList(token);
                        Log.e("Token Json", "27th March::-" + token);
                        final Map<String, Object> chargeParams = new     HashMap<String, Object>();
                        chargeParams.put("amount", 999);
                        chargeParams.put("currency", "usd");
                        chargeParams.put("card", token.getId());
                        // chargeParams.put("captured", false);
                        com.stripe.Stripe.apiKey = "sk.. your key";
                        // Charge charge = Charge.create(chargeParams);
                        // Charge ch = Charge.retrieve(charge.getId());
                        // // Used it here for demonstration
                        // ch.capture();
                        // Charge.create(chargeParams);
                        new AsyncTask<Void, Void, Void>() {

                            Charge charge;

                            @Override
                            protected Void doInBackground(
                                    Void... params) {
                                try {
                                    com.stripe.Stripe.apiKey = "sk_your key";
                                    charge = Charge
                                            .create(chargeParams);
                                } catch (Exception e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                    // showAlert("Exception while charging the card!",
                                    // e.getLocalizedMessage());
                                }
                                return null;
                            }

                            protected void onPostExecute(Void result) {
                                Toast.makeText(
                                        StripePaymentActivity.this,
                                        "Card Charged : "
                                                + charge.getCreated()
                                                + "\nPaid : "
                                                + charge.getPaid(),
                                        Toast.LENGTH_LONG).show();
                            };

                        }.execute();
                        final Map<String, Object> chargeParams1 = new HashMap<String, Object>();
                        chargeParams1.put("amount", 999);
                        chargeParams1.put("currency", "usd");
                        chargeParams1.put("card", token.getId());
                        chargeParams1.put("captured", false);
                        com.stripe.Stripe.apiKey = "sk_your key";
                        Charge charge1 = Charge.create(chargeParams1);
                        com.stripe.Stripe.apiKey = "sk_your key";
                        Charge ch2 = Charge.retrieve(charge1.getId()); //    Use
                                                                        // saved
                                                                        // charged
                                                                        // Id
                                                                        // instead
                                                                        // of
                                                                        // charge.getId()
                                                                        // Used
                                                                        // it
                                                                        // here
                                                                        // for
                                                                        // demonstration
                        ch2.capture();
                        com.stripe.Stripe.apiKey = "sk_your key";

                        // Customer Parameters HashMap
                        Map<String, Object> customerParams = new HashMap<String, Object>();
                        customerParams
                                .put("description",
                                        com.essexpass.Global
                                                .getPreferenceString(
                                                        getApplicationContext(),
                                                        "email", ""));
                        customerParams.put("card", token.getId()); // Obtained
                                                                    // in
                                                                    // onSuccess()
                                                                    // method
                                                                    // of
                                                                    // TokenCallback
                                                                    // while
                                                                    // creating
                                                                    // token
                                                                    // above

                        // Create a Customer
                        Customer cust = Customer.create(customerParams);
                        com.stripe.Stripe.apiKey = "sk_your key";

                        // Retrieve saved customer ID from database
                        // String cust_id = getSavedCustomerId();
                        // //getSavedCustomerId() method should retrieve
                        // saved customer Id from db

                        // Charge Parameters HashMap
                        final Map<String, Object> chargeParams2 = new HashMap<String, Object>();
                        chargeParams2.put("amount", 999);
                        chargeParams2.put("currency", "usd");
                        chargeParams2.put(
                                "customer",
                                com.essexpass.Global
                                        .getPreferenceString(
                                                getApplicationContext(),
                                                "email", "")); // Use
                                                                // customer
                                                                // instead
                                                                // of
                                                                // card

                        Charge.create(chargeParams2);
                    } catch (AuthenticationException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (InvalidRequestException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (APIConnectionException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (CardException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (APIException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    finishProgress();
                    // Now Call The Services for the and generate New
                    // Member Id
                    GetUserPassDeal();
                }

                public void onError(Exception error) {
                    handleError(error.getLocalizedMessage());
                    finishProgress();
                }
            });
} else if (!card.validateNumber()) {
    handleError("The card number that you entered is invalid");
} else if (!card.validateExpiryDate()) {
    handleError("The expiration date that you entered is invalid");
} else if (!card.validateCVC()) {
    handleError("The CVC code that you entered is invalid");
} else {
    handleError("The card details that you entered are invalid");
}
}

private void startProgress() {
progressFragment.show(getSupportFragmentManager(), "progress");
}

private void finishProgress() {
progressFragment.dismiss();

}

private void handleError(String error) {
ErrorDialogFragment fragment = ErrorDialogFragment.newInstance(
        R.string.validationErrors, error);
fragment.show(getFragmentManager(), "error");
}

我在我的应用程序中使用了这段代码。 感谢。

答案 2 :(得分:0)

充电类旧版条带sdk中没有包含我只需从Download gson-2.2.2.jar : gson « g « Jar File Download下载最新的条带和gson jars文件并将其放在 lib 文件夹并将compile fileTree(dir: 'libs', include: ['*.jar'])添加到 build.gradle 并从我的项目中删除旧的条带模块,现在它工作正常我的gradle文件是

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:appcompat-v7:25.1.0'
  compile 'com.android.support:design:25.1.0'
  testCompile 'junit:junit:4.12'
  compile 'com.stripe:stripe-android:2.0.2'
  compile 'com.google.android.gms:play-services-appindexing:8.4.0'
}

现在您可以使用条款费用

答案 3 :(得分:-1)

对不起,迟到的答案,但将来会帮助别人。

您还可以将以下依赖项添加到build.gradle文件中。

compile "com.stripe:stripe-java:5.7.1"

You can see all its classes here