Jump to content

willianlq

Members
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Comum

About willianlq

  1. willianlq

    Integração API google pay

    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 puder me ajudar agradeço, já estou tentando resolver a um bom tempo.
  2. willianlq

    Método não compila

    Fala pessoal, não estou conseguindo escrever esse método para que compile OBS: Não estou me achando só nos métodos(comecei a pouco em programação, então gostaria da ajuda de vocês). -classe parcela *Atributos privados dataVencimento – objeto do tipo da classe Data - valorOriginal – é o valor da parcela, sem qualquer acréscimo (float ou double) - valorFinal – é o valor original acrescido ou não de juros por atraso no pagamento (float ou double) - situacao – tipo char. Os valores possíveis são: N – parcela ainda não venceu, nem foi paga; Q – parcela já foi quitada (paga); A - parcela ainda não foi paga e está em atraso. *Construtor: um apenas, com três parâmetros: tipo Cliente, tipo Data (para informar a data de vencimento) e um terceiro com o valor original da parcela. Inicializar a situação sempre como N. *Métodos + registrarAtraso – instancia a data de hoje e altera a situação para A, se a data de vencimento já passou em relação à data de hoje. Obviamente, esta alteração só será realizada se a parcela estiver na situação N. Método retorna true ou false, para indicar se houve ou não a mudança da situação. + pagar – método que será chamado por ocasião do pagamento da parcela. Esse método recebe como parâmetro a data em que está sendo feito o pagamento. Se a parcela estiver sendo paga com até 5 dias de atraso, pagará juros de 1% sobre o valor original; de 6 a 15 dias de atraso, juros de 1,5%; atraso acima de 15 dias, juros de 2,5%. O método deve atualizar os atributos situação e valor final, desta classe, além de registrar o pagamento da mesma no objeto Cliente, chamando o método daquela classe adequado para isso. Ao final, o método deve retornar o valor dos juros.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.