从Stripe Android中删除用户卡

时间:2016-12-21 10:35:44

标签: java android stripe-payments

我正在尝试使用此代码从条带中删除卡片:

首先尝试:

com.stripe.Stripe.apiKey = getString(R.string.stripe_test_secret_key);
com.stripe.model.Token token = com.stripe.model.Token.retrieve(CardId);
String cardId = token.getCard().getId();
customer = Customer.retrieve(payments.appPreference.getStripeCustomerId());
DeletedExternalAccount delete = customer.getSources().retrieve(cardId).delete();

错误: 我收到com.stripe.exception.InvalidRequestException:没有这样的来源:card_xxxxxxxxxxxxxxxxxxxxxx; request-id:req_xxxxxxxxxxxx

第二次尝试:

com.stripe.Stripe.apiKey = getString(R.string.stripe_test_secret_key);    
com.stripe.model.Token token = com.stripe.model.Token.retrieve(CardId);
DeletedCard delete = token.getCard().delete();

错误: com.stripe.exception.APIConnectionException:对Stripe(https://api.stripe.com)的API请求期间的IOException:null请检查您的Internet连接,然后重试。如果此问题仍然存在,您应该在https://twitter.com/stripestatus查看条纹的服务状态,或通过support@stripe.com告诉我们。

引起:java.net.MalformedURLException

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

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

您需要做的是处理此代码服务器端。您将调用删除卡[API] [1],并确保在代码中传递正确的客户和卡ID。在Java中,但在服务器端,您可以这样做:

Customer customer = Customer.retrieve("cus_XXXXXXX");
customer.getSources().retrieve("card_YYYYYY").delete();

答案 1 :(得分:0)

@koopajah是对的。从移动端来看并不安全。

之所以发生这种情况,是因为我创建了令牌,但没有为创建卡而调用api。 令牌有Card对象,但它没有分配给任何客户端。所以,我收到了这个错误。