不熟悉kotlin,但在您提供的代码片段中,我建议不要重写
handlePaymentData
是的。
而是打电话
mPaymentSession.handlePaymentData
在
onActivityResult
你的主人
Activity
就像医生建议的那样
here
或如图所示
in the example here
以便对
PaymentSessionData
向您的
PaymentSessionListener
初始化时附加的
PaymentSession
(即
mPaymentSession!!.init
)中。
通常,根据你的应用程序结帐流程,你会想打电话给
mPaymentSession.completePayment(...)
例如,用户点击“支付”按钮。
你可以通过
completePayment(...)
打电话给
PaymentCompletionProvider
这将:
-
向后端发送http请求,以便可以使用stripe的api创建费用
-
使用标记付款结果
listener.onPaymentResult(...)
经过
PaymentResultListener.SUCCESS
例如,在付款成功的情况下。
我不认为示例应用程序有这样的示例,但在java中,您可以在“pay”按钮设置上安装一个点击监听器,如下所示:
Button payButton = findViewById(R.id.pay_bttn);
payButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPaymentSessionData.isPaymentReadyToCharge() && mPaymentSessionData.getPaymentResult() == PaymentResultListener.SUCCESS) {
// Use the data to complete your charge - see below.
mPaymentSession.completePayment(new PaymentCompletionProvider() {
@Override
public void completePayment(@NonNull PaymentSessionData data, @NonNull PaymentResultListener listener) {
Log.v(TAG, "Completing payment with data: " + data.toString());
// This is where you want to call your backend...
// In this case mark the payment as Successful
listener.onPaymentResult(PaymentResultListener.SUCCESS);
}
});
}
}
});
我希望这能有帮助。