3 votes

Android : Mise en place de Paypal

Je suis en train de développer une application qui nécessite un paiement en ligne.

Je veux payer le montant de la facture de mon application au propriétaire du magasin en monnaie indienne (roupie). J'ai essayé un exemple de démonstration en utilisant MPL.

J'ai créé une classe en tant que :

public class MainActivity extends Activity implements OnClickListener {

private boolean _paypalLibraryInit = false;

final static public int PAYPAL_BUTTON_ID = 10001;

CheckoutButton launchPayPalButton;

public static String resultTitle;
public static String resultInfo;
public static String resultExtra;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initLibrary();
    if (_paypalLibraryInit) {
        showPayPalButton();
    } else {
        finish();
    }
}

/** init method **/
public void initLibrary() {
    PayPal pp = PayPal.getInstance();
    if (pp == null) {
        // This is the main initialization call that takes in your Context,
        // the Application ID, and the server you would like to connect to.
        pp = PayPal.initWithAppID(this, "APP-80W284485P519543T",PayPal.ENV_SANDBOX);

        // -- These are required settings.
        pp.setLanguage("en_US"); // Sets the language for the library.
        // --

        // -- These are a few of the optional settings.
        // Sets the fees payer. If there are fees for the transaction, this
        // person will pay for them. Possible values are FEEPAYER_SENDER,
        // FEEPAYER_PRIMARYRECEIVER, FEEPAYER_EACHRECEIVER, and
        // FEEPAYER_SECONDARYONLY.
        pp.setFeesPayer(PayPal.FEEPAYER_EACHRECEIVER);
        // Set to true if the transaction will require shipping.
        pp.setShippingEnabled(true);
        // Dynamic Amount Calculation allows you to set tax and shipping
        // amounts based on the user's shipping address. Shipping must be
        // enabled for Dynamic Amount Calculation. This also requires you to
        // create a class that implements PaymentAdjuster and Serializable.
        pp.setDynamicAmountCalculationEnabled(false);
        // --
        _paypalLibraryInit = true;
    }
}

private void showPayPalButton() {
    // Generate the PayPal checkout button and save it for later use
    PayPal pp = PayPal.getInstance();
    launchPayPalButton = pp.getCheckoutButton(this, PayPal.BUTTON_278x43,CheckoutButton.TEXT_PAY);

    // Add the listener to the layout
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    params.bottomMargin = 10;
    params.leftMargin= 50;

    launchPayPalButton.setLayoutParams(params);
    launchPayPalButton.setId(PAYPAL_BUTTON_ID);
    // The OnClick listener for the checkout button
    launchPayPalButton.setOnClickListener(this);

    //((RelativeLayout) findViewById(R.id.RelativeLayout01)).addView(launchPayPalButton);       
    ((RelativeLayout) findViewById(R.id.rl)).addView(launchPayPalButton);
}

@Override
public void onClick(View v) {
    // Use our helper function to create the simple payment.
    PayPalButtonClick(v);
    // Use checkout to create our Intent.
    // Intent checkoutIntent = PayPal.getInstance().checkout(payment, this,
    // new ResultDelegate());
    // Use the android's startActivityForResult() and pass in our Intent.
    // This will start the library.
    // startActivityForResult(checkoutIntent, request);
}

public void PayPalButtonClick(View arg0) {
    // Create a basic PayPal payment
    PayPalPayment payment = new PayPalPayment();

    // Set the currency type
    payment.setCurrencyType("USD");

    // Set the recipient for the payment (can be a phone number)
    payment.setRecipient("abc@gmail.com");

    // Set the payment amount, excluding tax and shipping costs
    payment.setSubtotal(new BigDecimal("1.0"));

    // Set the payment type--his can be PAYMENT_TYPE_GOODS,
    // PAYMENT_TYPE_SERVICE, PAYMENT_TYPE_PERSONAL, or PAYMENT_TYPE_NONE
    payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS);

    // PayPalInvoiceData can contain tax and shipping amounts, and an
    // ArrayList of PayPalInvoiceItem that you can fill out.
    // These are not required for any transaction.
    PayPalInvoiceData invoice = new PayPalInvoiceData();

    // Set the tax amount
    invoice.setTax(new BigDecimal("0"));
    Intent checkoutIntent = PayPal.getInstance().checkout(payment, this /*, new ResultDelegate()*/);
    this.startActivityForResult(checkoutIntent, 1);
}

public void PayPalActivityResult(int requestCode, int resultCode, Intent intent) {
    if(requestCode != 1)
        return;

    Toast.makeText(getApplicationContext(),resultTitle , Toast.LENGTH_SHORT).show();
}
}

Et la classe de délégué du résultat est :

public class ResultDelegate implements PayPalResultDelegate, Serializable {

private static final long serialVersionUID = 10001L;

/**
 * Notification that the payment has been completed successfully.
 * 
 * @param payKey            the pay key for the payment
 * @param paymentStatus     the status of the transaction
 */
public void onPaymentSucceeded(String payKey, String paymentStatus) {
    MainActivity.resultTitle = "SUCCESS";
    MainActivity.resultInfo = "You have successfully completed your transaction.";
    MainActivity.resultExtra = "Key: " + payKey;
}

/**
 * Notification that the payment has failed.
 * 
 * @param paymentStatus     the status of the transaction
 * @param correlationID     the correlationID for the transaction failure
 * @param payKey            the pay key for the payment
 * @param errorID           the ID of the error that occurred
 * @param errorMessage      the error message for the error that occurred
 */
public void onPaymentFailed(String paymentStatus, String correlationID,
        String payKey, String errorID, String errorMessage) {
    MainActivity.resultTitle = "FAILURE";
    MainActivity.resultInfo = errorMessage;
    MainActivity.resultExtra = "Error ID: " + errorID + "\nCorrelation ID: "
            + correlationID + "\nPay Key: " + payKey;
}

/**
 * Notification that the payment was canceled.
 * 
 * @param paymentStatus     the status of the transaction
 */
public void onPaymentCanceled(String paymentStatus) {
    MainActivity.resultTitle = "CANCELED";
    MainActivity.resultInfo = "The transaction has been cancelled.";
    MainActivity.resultExtra = "";
}
} 

J'ai également téléchargé le fichier Paypal_MPL.jar et je l'ai importé dans l'application et j'ai créé un compte personnel Paypal.

1. La question est maintenant de savoir comment tester l'application.

2. Suis-je sur la bonne voie ?

3. Que dois-je faire d'autre ?

Je ne comprends pas bien les étapes de la mise en œuvre de la MPL et de la comment créer un compte sur Paypal, tester le compte, lier le compte à l'application, etc. .

Merci de me conseiller et de me guider.

0voto

Waleed Ahmed Points 47

http://www.androiddevelopersolution.com/2012/09/paypal-integration-in-Android.html J'espère que cela vous aidera. Pour tester l'application, vous pouvez consulter les résultats de l'activité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X