我无法创建 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 应用程序中,这一切都不会发生。
我正在使用 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 应用程序中,这一切都不会发生。