Я пытаюсь использовать полосу в качестве платежного шлюза для моего приложения firebase android. Когда я запускаю свое приложение для проверки всего, мое приложение автоматически вылетает при запуске. Я хотел бы знать, что означает эта ошибка и как я могу решить эту проблему. Ниже я предоставил сообщение об ошибке вместе с моим кодом. Заранее спасибо.
Это ошибка, которую я получаю
FATAL EXCEPTION: OkHttp Dispatcher
Process: com.myapp.aap, PID: 30839
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
Вот мой код -
// Configure the SDK with your Stripe publishable key so it can make requests to Stripe
stripe = new Stripe(
getApplicationContext(),
Objects.requireNonNull("pk_test_51GzvqSI4qFEpgfxS15GlPnxcrL4Sb5CZsv5AWXGPW1ihpQBTB9OPSh9nnZxY2zY71bVacdmJQ4gRxKYmCw3SCVQo00KUZF8psk")
);
startCheckout();
private void startCheckout(){
// Create a PaymentIntent by calling the server's endpoint.
MediaType mediaType = MediaType.get("application/json; charset=utf-8");
String json = "";
RequestBody body = RequestBody.create(json, mediaType);
Request request = new Request.Builder()
.url(BACKEND_URL + "create-payment-intent.json")
.post(body)
.build();
httpClient.newCall(request)
.enqueue(new PayCallback(PaymentPageActivity.this));
// 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);
stripe.confirmPayment(PaymentPageActivity.this, confirmParams);
}
});
}
private void displayAlert(@NonNull String title,
@Nullable String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle(title)
.setMessage(message);
builder.setPositiveButton("Ok", null);
builder.create().show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Handle the result of stripe.confirmPayment
stripe.onPaymentResult(requestCode, data, new PaymentResultCallback(this));
}
private void onPaymentSuccess(@NonNull final Response response) throws IOException {
Gson gson = new Gson();
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> responseMap = gson.fromJson(
Objects.requireNonNull(response.body()).string(),
type
);
paymentIntentClientSecret = responseMap.get("clientSecret");
}
private static final class PayCallback implements Callback {
@NonNull private final WeakReference<PaymentPageActivity> activityRef;
PayCallback(@NonNull PaymentPageActivity activity) {
activityRef = new WeakReference<>(activity);
}
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
final PaymentPageActivity activity = activityRef.get();
if (activity == null) {
return;
}
activity.runOnUiThread(() ->
Toast.makeText(
activity, "Error: " + e.toString(), Toast.LENGTH_LONG
).show()
);
}
@Override
public void onResponse(@NonNull Call call, @NonNull final Response response)
throws IOException {
final PaymentPageActivity activity = activityRef.get();
if (activity == null) {
return;
}
if (!response.isSuccessful()) {
activity.runOnUiThread(() ->
Toast.makeText(
activity, "Error: " + response.toString(), Toast.LENGTH_LONG
).show()
);
} else {
activity.onPaymentSuccess(response);
}
}
}
private static 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();
activity.displayAlert(
"Payment completed",
gson.toJson(paymentIntent)
);
} else if (status == PaymentIntent.Status.RequiresPaymentMethod) {
// Payment failed – allow retrying using a different payment method
activity.displayAlert(
"Payment failed",
Objects.requireNonNull(paymentIntent.getLastPaymentError()).getMessage()
);
}
}
@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
activity.displayAlert("Error", e.toString());
}
}