我无法创建 Stripe 客户并为其订阅 Android 中的计划

I can't create a Stripe customer and subscribe him to a plan in Android

我正在使用 Stripe,我获得了卡片令牌,但我无法创建客户。 Android Studio 向我提供了一个 NetworkOnMainThreadException,该异常具有清单上的 Internet 权限。这是我的代码:

public void registerOnClick(View v)
    {
        Card card = new Card("4242424242424242", 12, 2017, "123");
        boolean validation = card.validateCard();
        Debug.log("Is it validate? "+validation);
        if (validation)
        {
            new Stripe().createToken(
                    card,
                    PUBLISHABLE_KEY,
                    new TokenCallback()
                    {
                        public void onSuccess(Token token)
                        {
                            Debug.log("TOKEN: "+token);
                            Toast.makeText(getApplicationContext(), "Toke achieved", Toast.LENGTH_LONG).show();
                            RequestOptions requestOptions = (new RequestOptions.RequestOptionsBuilder()).setApiKey(SECRET_KEY).build();
                            Map<String, Object> customerParams = new HashMap<String, Object>();
                            customerParams.put("source", token.getId()); // Token ID
                            customerParams.put("plan", "mumsclub"); //The plan created in Stripe dashboard
                            customerParams.put("email", "tabo@example.com");
                            try {
                                Customer.create(customerParams, requestOptions);
                            } catch (StripeException e) {
                                e.printStackTrace();
                            }
                        }
                        public void onError(Exception error)
                        {
                            Debug.log("Token not retrieved");
                        }
                    });
        }
        else
        {
            Debug.log("Card is not valid");
        }
    }

遗憾的是,无法在您的 Android 应用程序中执行任何此操作,因为这些调用需要您的 API 密钥。您永远不应该在 Android 应用程序中拥有秘密 API 密钥,否则攻击者可能会得到它,然后以您的名义创建费用、退款或转账。

您在这里需要做的是先创建一个卡令牌,然后将其发送到您的服务器,您将在服务器上使用您的密钥创建费用或客户。在您的 Android 应用程序中,这一切都不会发生。