Android with Volley:通过POST参数发送对象

时间:2015-09-25 13:54:04

标签: android android-volley stripe-payments

我正在使用排球将Stripe付款数据发送到我的服务器。

这是Stripe文档中的代码。

final Map<String, String> params = new HashMap<>();
// Code from Stripe.com documentation..
Card card = new Card("4242424242424242", "12", "2014", "123");

Stripe stripe = new Stripe("pk_test_api_key");
stripe.createToken(
  card,
  new TokenCallback() {
      public void onSuccess(Token token) {
          // Send token to your server via POST request
          params.put("stripeToken", token);
      }
      public void onError(Exception error) {
          // Show localized error message
          Toast.makeText(getContext(),
            error.getLocalizedString(getContext()),
            Toast.LENGTH_LONG
          ).show();
      }
  }

但是,当使用Volley向我的服务器发送POST请求时,我会覆盖getParams()方法,但我无法发送令牌,因为地图对象应该是Map<String, String>而不是{ {1}}

Map<String, Object>

有没有办法将令牌对象传递给服务器?

1 个答案:

答案 0 :(得分:1)

您不应在此处发送整个令牌object,而只是发送令牌ID tok_XXX

final Map<String, String> params = new HashMap<>();
// Code from Stripe.com documentation..
Card card = new Card("4242424242424242", "12", "2014", "123");

Stripe stripe = new Stripe("pk_test_api_key");
stripe.createToken(
  card,
  new TokenCallback() {
      public void onSuccess(Token token) {
          // Send token to your server via POST request
          params.put("stripeToken", token.getId());
      }
      public void onError(Exception error) {
          // Show localized error message
          Toast.makeText(getContext(),
            error.getLocalizedString(getContext()),
            Toast.LENGTH_LONG
          ).show();
      }
  }

然后,您可以使用该令牌服务器端或通过Retrieve Token API检索所有信息。