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

时间:2016-05-11 13:09:09

标签: stripe-payments payment networkonmainthread

我使用Stripe并获得了卡片令牌,但我无法创建客户。 Android Studio通过清单上的Internet权限为我提供了NetworkOnMainThreadException。这是我的代码:

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");
        }
    }

1 个答案:

答案 0 :(得分:3)

不幸的是,在Android应用程序中无法执行此操作,因为这些调用需要您的Secret API密钥。您不应该在Android应用程序中使用Secret API密钥,否则攻击者可以获取它,然后代表您创建费用,退款或转移。

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