Wednesday, April 13, 2011

Adding PayPal payment in Android Application

Hi everyone

We all know PayPal is mostly using for transaction in recent days. The following is explain you how to add PayPal payment from your android application

Ready to get started with a simple payment? These steps will walk you through integrating the PayPal library and submitting it to x.com
Step 1 – Set up your sandbox accounts if you haven't already. You can create sandbox accounts by going to developer.paypal.com.
Step 2 – Add the PayPal library (a .jar file) into your Eclipse project, and then add the jar file to the build path. You can right click on the jar file to do this.
Step 3 – Update the AndroidManifest. The manifest will need to include the new activity "com.paypal.android.MEP.PayPalActivity". It will also need to declare the two permissions for Internet and Read-Phone-State.

Code:



<activity android:name="com.paypal.android.MEP.PayPalActivity"

 android:theme="@android:style/Theme.Translucent.NoTitleBar"

 android:configChanges="keyboardHidden|orientation/>

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>




Step 4 – Import the classes. Open the java file where you are adding the PayPal functionality. You will need to declare the various PayPal classes to use in your project.
Import com.paypal.android.CheckoutButton

Code:



import com.paypal.android.MEP.PayPal;

import com.paypal.android.MEP.PayPalActivity;

import com.paypal.android.MEP.PayPalPayment;

import com.paypal.android.MEP.PayPalAdvancedPayment;

import com.paypal.android.MEP.PayPalInvoiceData;

import com.paypal.android.MEP.PayPalInvoiceItem;

import com.paypal.android.MEP.PayPalReceiverDetails;




Step 5 – Initialize the library by using the initWithAppId method. You'll pass in your App ID and the environment. The environment can either point to Live, Sandbox, or None. The "None" environment puts the library in a demo mode which makes no server calls so that you can continue coding even if you don't have a connection. You can also set the language here.

Code:

PayPal pp = PayPal.initWithAppID(this, "APP-80W284485P519543T", PayPal.ENV_SANDBOX); 




Step 6 – Place a PayPal button on the screen. You can choose from several different button sizes in the integration guide. You'll also pass the type of payment (hard goods, service, donation, personal payment). Then set the onClick listener for the button.
Code:



LinearLayout layoutSimplePayment = new LinearLayout(this);

layoutSimplePayment.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,

    LayoutParams.WRAP_CONTENT));

layoutSimplePayment.setOrientation(LinearLayout.VERTICAL);

CheckoutButton launchSimplePayment = pp.getCheckoutButton(this, PayPal.BUTTON_194x37, CheckoutButton.TEXT_PAY);

launchSimplePayment.setOnClickListener(this);

layoutSimplePayment.addView(launchSimplePayment);

content.addView(layoutSimplePayment);



Step 7 – Implement the onClick function. This is where the actual checkout call happens. You'll specify all of the payment parameters (amount, currency, tax, shipping, recipient's email). You can also use some optional methods to recalculate the amount based on an address. You'll then create a new intent based on the PayPalActivity class and add the payment you just created.
Code:


Public void onClick (View v) {

PayPalPayment payment = new PayPalPayment();

payment.setSubtotal(new BigDecimal("8.25"));

payment.setCurrencyType("USD");

payment.setRecipient("bike-store-sandbox@gmail.com");

payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS);

Intent checkoutIntent = PayPal.getInstance().checkout(payment, this);

startActivityForResult(checkoutIntent, 1);




Step 8 – Handle the response. You will receive the results through the onActivityResult method. It will either return OK, Cancelled, or Failure based on how the payment ended. When you receive these calls, you can continue in your app by thanking the buyer or asking them to try later.

Code:


@Override

public void onActivityResults(int requestCode, int resultCode, Intent data) {

   switch(resultCode) {

      case Activity.RESULT_OK:

          break;

       case Activity.RESULT_CANCELED:

           break;

       case PayPalActivity.RESULT_FAILURE:

  }

}



Step 9 – Complete your project. Once you've finished your application, you can submit it to x.com (under the "My Apps" tab). In order for us to test it, you will need to attach a .zip file containing your .apk. PayPal will review the app in 1 business day (for apps using simple payments) and send you a valid App ID for the live environment. You"ll just need to update init method to point to Live with this new ID. (Don't forget to update the recipient to your live email address).



To read more click Here

37 comments:

  1. can you tell how to get Application ID

    ReplyDelete
  2. @sravan
    Hi sravan
    1.you must create a account in developer.paypal.com and select Myapp and give some information about your app .Paypal will give the Live Id for your app

    2.For using sandbox please give this one
    APP-80W284485P519543T for testing purpose

    ReplyDelete
  3. This is one of the good clarity post.your blog is doing an important role In internet marketing field.
    Android app developers

    ReplyDelete
  4. This is such a abounding ability that you are accoutrement and you accord it abroad for changeless and I will actually adorable it and I'll advance to my friends.I appreceive they will actually be benefited from this site.

    ReplyDelete
  5. hi, i get classNotFoundException in this line

    PayPal pp = PayPal.initWithAppID(this, "APP-80W284485P519543T", PayPal.ENV_SANDBOX);

    i have already add the PayPal_MPL.jar in the Referenced Liberary folder in our project.....

    ReplyDelete
  6. great tutorial, very helpfull, keep it up!!

    small typo
    onActivityResults() method should be renamed to onActivityResult()

    ReplyDelete
  7. I have did as same as your's....Then i run the application in my device After logged in It's move to Next Page with Pay Button and i hit the button then it shows "Processing Payment" on that time if any network failure it's not notify anything it's keep on loading some time and ask to "Force close" the application.How to handle the network failure..

    Thanks in advance....

    ReplyDelete
  8. Hi! How do I add aPayPal button to each page of a jQuery mobile site that I have "wrapped" within Java in the Android SDK?
    Thanks in advance,
    David

    ReplyDelete
  9. thanks a lot...saved me from lots of confusion...

    coder

    ReplyDelete
  10. Thank you Thank sooo much..
    Very clear.
    could you please tell me what is difference between MPL,MECL.

    ReplyDelete
  11. The matter that you provide is worth our time and energy.
    one click root

    ReplyDelete
  12. Nice information shared in this post. thanks for this very effective and valuable article. keep it up......

    ReplyDelete
  13. Hi these is very nice tutorial.I have done these paypal integration successfully.here how can i add the product name,price and quantity to paypal server.

    ReplyDelete
  14. hello is it possible with back-end API ? i mean without paypal dialog ?

    ReplyDelete
  15. Nice post.Give it up. Thanks for share this article. For more visit:Web App Development

    ReplyDelete
  16. Nice Tutorial....

    ReplyDelete
  17. hmm... really confuse..
    is our default paypal account is different from this developer/sandbox account?
    do we must register again using our address etc like we are register first time in paypal?

    ReplyDelete
  18. Very nice tutorial, thanks!!

    ReplyDelete
  19. Nice tutorial THANKS!!!


    I am getting

    error code = 10004

    error message = please make sure all fields have been entered

    Please help me.

    ReplyDelete
  20. I am getting error while login to paypal from android .Following is the error message:
    Error Message:Login failed. Go to www.paypal.com to resolve this issue.
    Error Code:10804

    ReplyDelete
  21. i am getting error
    Step 7 how to set onclick event

    ReplyDelete
  22. I am getting error in step 6.. :'( I am sorry but I am new to this

    Heres what I did

    import java.math.BigDecimal;

    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.LinearLayout;

    import com.paypal.android.MEP.CheckoutButton;
    import com.paypal.android.MEP.PayPal;

    import com.paypal.android.MEP.PayPalActivity;

    import com.paypal.android.MEP.PayPalPayment;

    import com.paypal.android.MEP.PayPalAdvancedPayment;

    import com.paypal.android.MEP.PayPalInvoiceData;

    import com.paypal.android.MEP.PayPalInvoiceItem;

    import com.paypal.android.MEP.PayPalReceiverDetails;

    public class MainActivity extends Activity {

    PayPal pp = PayPal.initWithAppID(this, "APP-80W284485P519543T", PayPal.ENV_SANDBOX);

    LinearLayout layoutSimplePayment = new LinearLayout(this);

    layoutSimplePayment.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,

    LayoutParams.WRAP_CONTENT));

    layoutSimplePayment.setOrientation(LinearLayout.VERTICAL);

    CheckoutButton launchSimplePayment = pp.getCheckoutButton(this, PayPal.BUTTON_194x37, CheckoutButton.TEXT_PAY);

    launchSimplePayment.setOnClickListener(this);

    layoutSimplePayment.addView(launchSimplePayment);

    content.addView(layoutSimplePayment);


    public void onClick (View v) {

    PayPalPayment payment = new PayPalPayment();

    payment.setSubtotal(new BigDecimal("8.25"));

    payment.setCurrencyType("PHP");

    payment.setRecipient("mksob@gmail.com");

    payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS);

    Intent checkoutIntent = PayPal.getInstance().checkout(payment, this);

    startActivityForResult(checkoutIntent, 1);

    }

    @Override

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

    switch(resultCode) {

    case Activity.RESULT_OK:

    break;

    case Activity.RESULT_CANCELED:

    break;

    case PayPalActivity.RESULT_FAILURE:

    }

    }

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


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }

    }

    Please help me what to do :'(

    ReplyDelete
  23. This is very good website. It is very nice deign and content. We offer your visitor easy way convert money paypal to Exchange Paypal to Skrill, Exchange Paypal to Skrill, Exchange Paypal to Payza, Exchange Paypal to Webmoney, Exchange Paypal to bitcoin, Exchange Paypal to okpay, Exchange Paypal to egopay, Exchange Paypal to perfectmoney, Exchange Paypal to liqpay, xchange Paypal to cashu, Exchange Paypal to bank transfer.
    Exchange Paypal to egopay,
    Exchange Paypal to Skrill,
    Exchange Paypal to Skrill,
    Exchange Paypal to Payza,
    Exchange Paypal to Webmoney,
    Exchange Paypal to bitcoin,
    Exchange Paypal to okpay,
    Exchange Paypal to egopay,
    Exchange Paypal to perfectmoney,
    Exchange Paypal to liqpay,
    Exchange Paypal to cashu,
    Exchange Paypal to banktransfer.

    ReplyDelete
  24. Great work, but it does not work now, because Paypal sdk was updated 2.13.0 version. :(

    ReplyDelete
  25. Rottgering NVM Makelaars voor deskundig advies en begeleiding. Wij zijn actief in de regio groot Den Haag en kennen dit gebied als geen ander. Lees op onze website hoe wij u kunnen helpen.

    makelaar den hag

    ReplyDelete
  26. Rottgering NVM Makelaars voor deskundig advies en begeleiding. Wij zijn actief in de regio groot Den Haag en kennen dit gebied als geen ander. Lees op onze website hoe wij u kunnen helpen.

    makelaar den hag

    ReplyDelete
  27. is it possible to transfer balance in multiple account at a time? suppose I send 20 dollar in a@gmail.com to 10 dollar and b@gmail.com 10 dollar. If possible how to recipent?

    ReplyDelete

  28. Thanks for posting useful information.You have provided an nice article, Thank you very much for this one. And i hope this will be useful for many people.. and i am waiting for your next post keep on updating these kinds of knowledgeable things...Really it was an awesome article...very interesting to read..
    please sharing like this information......
    Android training in chennai
    Ios training in chennai

    ReplyDelete
  29. These ways are very simple and very much useful, as a beginner level these helped me a lot thanks fore sharing these kinds of useful

    and knowledgeable information.
    Mobile App Development Company
    Mobile App Development Company in India
    Mobile App Development Companies


    ReplyDelete
  30. Being new to the blogging world I feel like there is still so much to learn. Your tips helped to clarify a few things for me as well as giving..
    Android App Development Company

    ReplyDelete
  31. I am expecting more interesting topics from you. And this was nice content and definitely it will be useful for many people.
    iOS App Development Company
    iOS App Development Company

    ReplyDelete
  32. I wondered upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.

    Fitness SMS
    Fitness Text
    Salon SMS
    Salon Text
    Investor Relation SMS
    Investor Relation Text

    ReplyDelete