我们正在尝试从我们的Android应用程序上的信用卡创建条带令牌,但是当我们调用stripe.createToken时它什么都不做,它不会在侦听器中输入onSuccess和onError方法。我们的代码如下:
private void getStripeToken(Card card) {
Stripe stripe = null;
try {
stripe = new Stripe(getApplicationContext(), getString(R.string.stripe_public_key));
} catch (AuthenticationException e) {
e.printStackTrace();
return;
}
stripe.createToken(card, new TokenCallback() {
@Override
public void onError(Exception error) {
stripeError = error.getLocalizedMessage();
}
@Override
public void onSuccess(Token token) {
stripeToken = token;
}
});
}
当getStripeToken完成时,stripeError和stripeToken为null。哪里出错了?感谢
答案 0 :(得分:1)
在getStripeToken
方法结束时,值将保持不变,因为createToken
是一个异步操作 - 这就是你必须给它回调的原因。
因此,如果您使用createToken
,则必须位于UI线程上(因为它使用AsyncTask
进行该调用,并且您应该期望在网络调用时更新您的值完成。
如果您希望在方法调用结束时更新值,请使用createTokenSynchronous
,但请确保仅在主线程中执行此操作。