Autore Topic: Activity PayPal  (Letto 330 volte)

Offline Faby096

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 5
  • Sistema operativo:
    Android 4.4.2
Activity PayPal
« il: 18 Novembre 2015, 15:41:46 CET »
0
Ciao a tutti,
ho creato un app che gestisce la registrazione dei clienti e in più consente di effettuare ordini. Ho problemi con la parte finale del progetto, cioè ho creato il bottone Paga, che riesce ad effettuare la prenotazione e mi carica tutto nel database, però non riesco a far partire la schermata di paypal per pagare, di seguito posto il codice della prenotazione, come faccio a integrare paypal, ho già seguito la guida ma non riesco.
Codice: [Seleziona]
public class FragmentConcludiOrdine extends Fragment {
    private final String idLocale = "00000000001";
    private EseguiPrenotazione mTask;
    private CollegaServer socket;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_concludi_ordine, container, false);
        socket = new CollegaServer(getActivity());

        Button btnEseguiOrdine = (Button) rootView.findViewById(R.id.btnFragmentConcludiOrdinePrenota);
        btnEseguiOrdine.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                eseguiPrenotazione();
            }
        });
        return rootView;
    }

    private void eseguiPrenotazione() {
        if (mTask == null) {
            mTask = new EseguiPrenotazione();
            mTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        }
    }

    private class EseguiPrenotazione extends AsyncTask<Void, Void, Void> {
        private boolean success;

        @Override
        protected Void doInBackground(Void... params) {
            Time time = new Time(Time.getCurrentTimezone());
            time.setToNow();
            String ora = String.valueOf(time.hour);
            String minuti = String.valueOf(time.minute + 30);
            if (Integer.valueOf(minuti) > 59) {
                minuti = String.valueOf(Integer.valueOf(minuti) - 60);
                ora = String.valueOf(Integer.valueOf(ora) + 1);
            }
            if (Integer.valueOf(minuti) < 10)
                minuti = "0" + minuti;
            String data = ora + ":" + minuti;
            success = socket.eseguiRichiesta(CollegaServer.ESEGUI_PRENOTAZIONE, "idLocale=" + idLocale + "&idUtente=" + Preferenze.getIstance().getIDUtenteUso() + "&ora=" + data);
            //se è stata aggiunta con successo, aggiungo anche i piatti
            if (success) {
                String idPrenotazione = socket.getRicezione();
                ArrayList<Piatto> piatti = ((FragmentNuovaPrenotazione) getParentFragment()).getPiatti();
                String dati = "idP=" + idPrenotazione + "&nP=" + String.valueOf(piatti.size());
                for (int cont = 0; cont < piatti.size(); cont++)
                    dati = dati + "&idP" + String.valueOf(cont) + "=" + String.valueOf(piatti.get(cont).getIdPiatto());
                success = socket.eseguiRichiesta(CollegaServer.INSERISCI_PIATTI_PRENOTAZIONE, dati);
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            if (success)
                Toast.makeText(getActivity(), "Prenotazione effettuata con successo", Toast.LENGTH_SHORT).show();
            else
                Toast.makeText(getActivity(), "Prenotazione non effettuata", Toast.LENGTH_SHORT).show();
            mTask = null;
        }
    }
}

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Activity PayPal
« Risposta #1 il: 18 Novembre 2015, 19:13:58 CET »
0
Io vedo che effetti un operazione di rete sul thread principale.
Che errore hai?

Offline Faby096

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 5
  • Sistema operativo:
    Android 4.4.2
Re:Activity PayPal
« Risposta #2 il: 18 Novembre 2015, 19:19:28 CET »
0
Quello che ho postato sarebbe il fragment in cui è presente tutto il processo di prenotazione che arriva sul database è il titolare legge l'ordine sulla sua di app privata.

Codice: [Seleziona]
package rist.appcliente.activities;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
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 org.json.JSONObject;

import java.math.BigDecimal;

import rist.appcliente.R;
import rist.appcliente.fragments.FragmentConcludiOrdine;

public class PagamentoActivity extends Activity implements View.OnClickListener {

    private Button pay;
    private static final String CONFIG = PayPalConfiguration.ENVIRONMENT_PRODUCTION;
    private static final String CLIENT_ID = "";
    private static final int REQUEST_PAYMENT = 1;

    private static PayPalConfiguration config =new PayPalConfiguration()
            .environment(CONFIG)
            .clientId(CLIENT_ID)
            .merchantName("MultiAndroid zone")
            .merchantPrivacyPolicyUri(Uri.parse("http://www.example.com/privacy"))
            .merchantUserAgreementUri(Uri.parse("http://www.example.com/privacy"));



    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_concludi_ordine);

        pay = (Button)findViewById(R.id.btnFragmentConcludiOrdinePrenota);
        pay.setOnClickListener((View.OnClickListener) this);

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

    }


    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnFragmentConcludiOrdinePrenota:
                PayPalPayment item = new PayPalPayment(new BigDecimal(1), "USD", "MultiAndroid zone", PayPalPayment.PAYMENT_INTENT_SALE);
                Intent in = new Intent(PagamentoActivity.this, PaymentActivity.class);
                in.putExtra(PaymentActivity.EXTRA_PAYMENT, item);
                startActivityForResult(in, REQUEST_PAYMENT);
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_PAYMENT){

            if(resultCode == Activity.RESULT_OK){
                PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);

                if(confirm == null){

                    try{
                        System.out.println("Risposte" + confirm);
                        Log.i("PayPal Example Payments", confirm.toJSONObject().toString());
                        JSONObject obj = new JSONObject(confirm.toJSONObject().toString());
                        String paymentID =obj.getJSONObject("risposte").getString("id");
                        System.out.println("payment id ="+paymentID);
                        Toast.makeText(getApplicationContext(), paymentID, Toast.LENGTH_LONG).show();
                    }catch (JSONException e) {
                        Log.e("Payment demo", "operazione fallita", e);
                    }
                }
            }else if(requestCode == Activity.RESULT_CANCELED){
                Log.i("Paymentdemo","Operazione Annullata");

            }else if (requestCode == PaymentActivity.RESULT_EXTRAS_INVALID){
                Log.i("Payment demo","Invalid payment");
            }
        }

    }
}


Questo invece è il codice del pagamento di paypal, ma non riesco a capire come farli comunicare. Passandogli il dato del prezzo.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Activity PayPal
« Risposta #3 il: 18 Novembre 2015, 21:17:18 CET »
0
Che errore hai?

Offline Faby096

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 5
  • Sistema operativo:
    Android 4.4.2
Re:Activity PayPal
« Risposta #4 il: 18 Novembre 2015, 21:19:59 CET »
0
Errori nessuno, perchè installo app sul telefono è funziona, ma il problema è che tutto quello che ho scritto sul paypal non funziona ma non ho errori nel codice.