gpt4 book ai didi

java - 在新的 Android Studio 中初始化 Stripe 对象

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:53 25 4
gpt4 key购买 nike

目前,我正在 Android Studio 应用程序中创建 Stripe 付款方式。这将涉及一个信用卡对象,该对象将由 Stripe 存储到我的 Firestore DB 中。不幸的是,我在教程中使用的其中一行已经过时了,因为它使用了没有 View 的 getContext() 。

Stripe 背景: https://www.youtube.com/watch?v=JeyxolsJ3aE

Firestore 背景: https://firebase.google.com/docs/firestore

这是我正在关注的教程的链接: https://stripe.com/docs/mobile/android不幸的是,我没有太多运气找到一个已知的、使用相同格式且不使用 getContext() 的教程。

我已经完成了插入该行之前的所有步骤:

final Stripe stripe = new Stripe(
getContext(),
"pk_test_TYooMQauvdEDq54NiTphI7jx"
);

在我的 Android Studio 版本(3.4.1)中,如果没有 View (显示为红色),似乎无法使用 getContext()。于是乎,我尝试了多种命令来替代。但是,它们都会产生相同的崩溃,并显示消息“无效的内容提供程序:null”。我相信“Content Provider”指的是传入的Context。

我应该提到的是,Stripe 对象是在 On-Click 监听器中创建的。此外,我知道“pk_test” key 是正确的,并且我测试了其他有效的 ID 也无济于事。此外,通过注释掉代码的测试,我确信这是产生错误的行。

我的理论是上下文被 Stripe 或 Firebase 拒绝。这是因为 Stripe Context 被称为“Stripe Provider”( https://lh3.googleusercontent.com/-ByYW3X0ua38/XQ_kRpmddLI/AAAAAAAAAAI/YfhjxSJ9iO0aJwZ8RtANeCXKXyYglWX1QCK8BGAs/s0/2019-06-23.png )

我尝试过的一些命令是:

getContext() (not recognized)
getApplicationContext()
getBaseContext()
this
this.getApplicationContext()
ClassName.this.getApplicationContext()
ClassName.this.getBaseContext()
Submit.getContext()
WrappingLayoutView.getContext()

我还尝试在变量中的 OnClick 监听器之上捕获 OnCreate 中的上下文。

由于这些都不起作用,我很不知道该怎么做。这是我的 Java 代码:

公共(public)类AddCardActivity扩展AppCompatActivity { 私有(private)按钮提交;

public Context mContext;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_card);
init();

mContext = this.getApplicationContext();

//Not working
/**View mV=findViewById(R.id.myLView);
mContext=mV.getContext();**/
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Use stripe to add new payment to firestore


//This line causes a crash
Stripe stripe = new Stripe(submit.getContext(),
"pk_test_t6NMvJpXDEZd3eOn5SU4y6DA"
);
// The Card class will normalize the card number
final Card card = Card.create("4242-4242-4242-4242", 12, 2020, "123");
//Update this with more useful error messages
if (card == null) {
Toast.makeText(getApplicationContext(), "Invalid Card!", Toast.LENGTH_LONG).show();
}

card.validateNumber();
card.validateCVC();
stripe.createToken(
card,
new TokenCallback() {
public void onSuccess(@NonNull Token token) {
// Send token to your server
}

public void onError(@NonNull Exception error) {
// Show localized error message
Toast.makeText(getApplicationContext(), "Invalid Card!", Toast.LENGTH_LONG).show();
}
}
);
}
});


}

private void init() {
submit = (Button) findViewById(R.id.addCardActivityButton);
}

最佳答案

给你:

Token token = null;

final Card card = new Card(cardNumber, month, year, cvc);

final Stripe stripe = new Stripe(getApplicationContext());
try {

token = stripe.createTokenSynchronous(card, "pk_test_TYooMQauvdEDq54NiTphI7jx");

} catch (StripeException stripeEx) {

errorMessage = stripeEx.getLocalizedMessage();
}

关于java - 在新的 Android Studio 中初始化 Stripe 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56747725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com