Ir ao conteúdo
  • Cadastre-se

lopesini

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por lopesini

  1. Boa tarde a todos,

    Estou realizando uma integração da API do google pay, basicamente trabalho com duas classes(MainActivity e GooglePay.java) e estou com alguns problemas na classe principal, mais especificamente no método "possiblyShowGooglePayButton" e "onActivityResult", no qual enfrento problema de NullPointer e erros na conversão de Objetos JSON.

    package com.example.testeapi;
    
    import androidx.annotation.NonNull;
    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 com.google.android.gms.common.api.ApiException;
    import com.google.android.gms.common.api.Status;
    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
    import com.google.android.gms.wallet.AutoResolveHelper;
    import com.google.android.gms.wallet.IsReadyToPayRequest;
    import com.google.android.gms.wallet.PaymentData;
    import com.google.android.gms.wallet.PaymentDataRequest;
    import com.google.android.gms.wallet.PaymentsClient;
    import com.google.android.gms.wallet.Wallet;
    import com.google.android.gms.wallet.WalletConstants;
    
    import org.json.JSONObject;
    
    import java.util.Optional;
    
    public class MainActivity extends AppCompatActivity {
        public PaymentsClient mPaymentsClient;
        private View mGooglePayButton;
        private static final int LOAD_PAYMENT_DATA_REQUEST_CODE = 42;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mPaymentsClient =
                    Wallet.getPaymentsClient(
                            this,
                            new Wallet.WalletOptions.Builder()
                                    .setEnvironment(WalletConstants.ENVIRONMENT_TEST)
                                    .build());
            possiblyShowGooglePayButton();
        }
    
        private void possiblyShowGooglePayButton() {
            final Optional<JSONObject> isReadyToPayJson = GooglePay.getIsReadyToPayRequest();
            if (!isReadyToPayJson.isPresent()) {
                return;
            }
            IsReadyToPayRequest request = IsReadyToPayRequest.fromJson(isReadyToPayJson.get().toString());
            if (request == null) {
                return;
            }
            Task<Boolean> task = mPaymentsClient.isReadyToPay(request);
            task.addOnCompleteListener(
                    new OnCompleteListener<Boolean>() {
                        @Override
                        public void onComplete(@NonNull Task<Boolean> task) {
                            try {
                                boolean result = task.getResult(ApiException.class);
                                if (result) {
                                    // show Google as a payment option
                                    mGooglePayButton = findViewById(R.id.googlepay);
                                    mGooglePayButton.setOnClickListener(
                                            new View.OnClickListener() {
                                                @Override
                                                public void onClick(View view) {
                                                    requestPayment(view);
                                                }
                                            });
                                    mGooglePayButton.setVisibility(View.VISIBLE);
                                }
                            } catch (ApiException exception) {
                                // Erro
                            }
                        }
                    });
        }
    
        public void requestPayment(View view) {
            Optional<JSONObject> paymentDataRequestJson = GooglePay.getPaymentDataRequest();
            if (!paymentDataRequestJson.isPresent()) {
                return;
            }
            PaymentDataRequest request =
                    PaymentDataRequest.fromJson(paymentDataRequestJson.get().toString());
            if (request != null) {
                AutoResolveHelper.resolveTask(
                        mPaymentsClient.loadPaymentData(request), this, LOAD_PAYMENT_DATA_REQUEST_CODE);
            }
        }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            // valor passado ao AutoResolveHelper
            if (requestCode == LOAD_PAYMENT_DATA_REQUEST_CODE) {
                switch (resultCode) {
                    case Activity.RESULT_OK:
                        PaymentData paymentData = PaymentData.getFromIntent(data);
                        String json = paymentData.toJson();
    
                        String paymentMethodData = new JSONObject(json)
                                .getJSONObject(paymentMethodData);
                        String paymentToken = ((JSONObject) paymentMethodData)
                                .getJSONObject("tokenizationData")
                                .getString("token");
                        break;
                    case Activity.RESULT_CANCELED:
                        break;
                    case AutoResolveHelper.RESULT_ERROR:
                        Status status = AutoResolveHelper.getStatusFromIntent(data);
                        Log.i("Status", "Erro na requisição");
                        // Generally, there is no need to show an error to the user.
                        // The Google Pay payment sheet will present any account errors.
                        break;
                    default:
                }
            }
        }
    }

    Se alguém conseguir me dar uma ajuda, agradeço.

    classe.png

    nullpointer.png

  2. meio desafinado no if, como escrever isso com ifs?

    -deve retornar o primeiro número par positivo maior que d.

    public int primeiroParAcimaDe(double d){

     

    -método deve retornar o primeiro número ímpar positivo maior que d.

    public int primeiroImparAcimaDe(double d){

     

    -método deve retornar a quantidade de parâmetros que são números pares.

    public int contaPares(int a, int b, int c, int d){

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!