оплата PayPal в Android studio

#java #android #paypal #paypal-sandbox

Вопрос:

когда я устанавливаю PayPalConfiguration.ENVIRONMENT_NO_NETWORK , мой платеж в порядке, и, конечно, в песочнице paypal эта транзакция не сохранится, чтобы сохранить транзакцию, на которую мне нужно переключиться PayPalConfiguration.ENVIRONMENT_SANDBOX , но я получаю такую ошибку:

Системная ошибка, пожалуйста, повторите попытку в последний раз.

Идентификатор клиента, который я предоставил, правильный, и мой личный аккаунт в безопасной среде PayPal правильный (я проверил их на веб-сайте, я написал с помощью панели PayPal, и это работает. работает нормально), но я не понимаю, почему через android studio я получаю эту ошибку и где я ошибся? ниже приведен весь мой код

Основная деятельность:

 package com.example.demo;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.paypal.android.sdk.payments.PayPalConfiguration;
import com.paypal.android.sdk.payments.PayPalPayment;
import com.paypal.android.sdk.payments.PayPalService;
import com.paypal.android.sdk.payments.PaymentActivity;
import com.paypal.android.sdk.payments.PaymentConfirmation;

import org.json.JSONException;

import java.math.BigDecimal;

public class MainActivity extends AppCompatActivity {
    Button btnPay;

    private static PayPalConfiguration config = new PayPalConfiguration()
            .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
            .clientId("AYjsqsGPCffv-niyJYub6xbIQA_8dhRTJbGG0HWVk8p7VX3GR8iOzMEk1HfgkKNw1wWScgXnt0OSC6Pv");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnPay = findViewById(R.id.btnPay);

        Intent intent = new Intent(this, PayPalService.class);
        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
        startService(intent);

        btnPay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onBuyPressed();
            }
        });
    }

    public void onBuyPressed(){
        PayPalPayment payment = new PayPalPayment(new BigDecimal(10),
                "USD","BINDAI PAYPAL",PayPalPayment.PAYMENT_INTENT_SALE);
        Intent intent = new Intent(this, PaymentActivity.class);
        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
        intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
        startActivityForResult(intent, 0);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK){
            PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
            if (confirm != null){
                try {
                    Log.i("paymentExample", confirm.toJSONObject().toString(4));
                    Toast.makeText(this, "payment success", Toast.LENGTH_SHORT).show();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        } else if (resultCode == Activity.RESULT_CANCELED){
            Log.i("paymentExample", "The user canceled");
        } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID){
            Log.i("paymentExample", "An invalid Payment or ...");
        }
    }

    @Override
    protected void onDestroy() {
        stopService(new Intent(this, PayPalService.class));
        super.onDestroy();
    }
}
 

activity_main.xml:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@ id/btnPay"
    android:text="Paypal"/>
</LinearLayout>
 

стройте.:

 dependencies {
    // SDK PAYPAL - START
    implementation 'com.paypal.sdk:paypal-android-sdk:2.14.6'
    // SDK PAYPAL - END

    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
    testImplementation 'junit:junit:4. '
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
 

мой счет paypal:

 username: bindai243156@gmail.com
Password: Bindai243156
 

(Это всего лишь учетная запись, которую я создал для демонстрации функции оплаты PayPal, внутри этой учетной записи есть учетные записи в песочнице для тестирования)

Ответ №1:

Правильно установите местное время вашего устройства.

Комментарии:

1. Я только что впервые попробовал эту технологию paypal, так что я не очень хорошо знаком с ней, не могли бы вы быть более конкретными? Спасибо!