Этот вопрос уже задавался, но на него нет ответа, и я ищу помощь в этом. Я хочу интегрировать полосу в свое приложение android firebase, но продолжаю получать сообщение об ошибке java .lang.IllegalArgumentException: параметр, указанный как ненулевой, имеет значение null: method kotlin .jvm.internal.Intrinsics.checkParameterIsNotNull. Я не использую kotlin в своем проекте, а java, поэтому я не уверен, откуда kotlin.
Ошибка
E / AndroidRuntime: FATAL EXCEPTION: основной процесс: com.myapp.app, PID: 26686 java .lang.IllegalArgumentException: параметр, указанный как ненулевое значение, имеет значение null: метод kotlin .jvm.internal.Intrinsics.checkParameterIsNotNull, параметр clientSecret в com.stripe. android .model.ConfirmPaymentIntentParams $ Companion.createWithPaymentMethodCreateParams (Неизвестный источник: 29) в com.stripe. android .model.ConfirmPaymentIntentParams $ Companion.createWithPaymentMethodCreateParams.Stription19. model.ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams (Неизвестный источник: 14) по адресу com.myapp.app.PaymentPageActivity.lambda $ startCheckout $ 0 $ PaymentPageActivity (PaymentPageActivity. java: 84 $) по адресу com.myapp.Appi. .onClick (Неизвестный источник: 2)
//My code
// Configure the SDK with your Stripe publishable key so it can make requests to Stripe
stripe = new Stripe(
getApplicationContext(),
Objects.requireNonNull("stripe_key")
);
startCheckout();
}
private void startCheckout() {
// ...
// Hook up the pay button to the card widget and stripe instance
Button payButton = findViewById(R.id.payButton);
payButton.setOnClickListener((View view) -> {
CardInputWidget cardInputWidget = findViewById(R.id.cardInputWidget);
PaymentMethodCreateParams params = cardInputWidget.getPaymentMethodCreateParams();
if (params != null) {
ConfirmPaymentIntentParams confirmParams = ConfirmPaymentIntentParams
.createWithPaymentMethodCreateParams(params, paymentIntentClientSecret);
confirmParams.getPaymentMethodCreateParams();
final Context context = getApplicationContext();
stripe = new Stripe(
context,
PaymentConfiguration.getInstance(context).getPublishableKey()
);
stripe.confirmPayment(this, confirmParams);
}
});
}
// ...
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Handle the result of stripe.confirmPayment
stripe.onPaymentResult(requestCode, data, new PaymentResultCallback(PaymentPageActivity.this));
}
// ...
private final class PaymentResultCallback
implements ApiResultCallback<PaymentIntentResult> {
@NonNull private final WeakReference<PaymentPageActivity> activityRef;
PaymentResultCallback(@NonNull PaymentPageActivity activity) {
activityRef = new WeakReference<>(activity);
}
@Override
public void onSuccess(@NonNull PaymentIntentResult result) {
final PaymentPageActivity activity = activityRef.get();
if (activity == null) {
return;
}
PaymentIntent paymentIntent = result.getIntent();
PaymentIntent.Status status = paymentIntent.getStatus();
if (status == PaymentIntent.Status.Succeeded) {
// Payment completed successfully
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Toast.makeText(PaymentPageActivity.this, "Paymen success", Toast.LENGTH_SHORT).show();
} else if (status == PaymentIntent.Status.RequiresPaymentMethod) {
// Payment failed
Toast.makeText(PaymentPageActivity.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(@NonNull Exception e) {
final PaymentPageActivity activity = activityRef.get();
if (activity == null) {
return;
}
// Payment request failed – allow retrying using the same payment method
Toast.makeText(PaymentPageActivity.this, "Error " +e.toString(), Toast.LENGTH_SHORT).show();
}
}