Saturday, July 26, 2014

Android Paypal Gateway Example | Paypal demo in android | Pay inside App using Paypal and Credit card


Hi Friends, in past we were using third party library for Paypal payment but now Paypal provide us their own library for payment so it is now much secure and easy to implement in our application. Below are the important step to do -




1)First go through Paypal Developer web site and create an application.

2)Now open your manifest file and give the below permissions-

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

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


3)And some required Activity and Services-

<service
            android:name="com.paypal.android.sdk.payments.PayPalService"
            android:exported="false" />

        <activity android:name="com.paypal.android.sdk.payments.PaymentActivity" />
        <activity android:name="com.paypal.android.sdk.payments.LoginActivity" />
        <activity android:name="com.paypal.android.sdk.payments.PaymentMethodActivity" />
        <activity android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity" />
        <activity android:name="com.paypal.android.sdk.payments.PayPalFuturePaymentActivity" />
        <activity android:name="com.paypal.android.sdk.payments.FuturePaymentConsentActivity" />
        <activity android:name="com.paypal.android.sdk.payments.FuturePaymentInfoActivity" />
        <activity
            android:name="io.card.payment.CardIOActivity"
            android:configChanges="keyboardHidden|orientation" />
        <activity android:name="io.card.payment.DataEntryActivity" />


4)Open your Activity class and set Configuration for your app-
//set the environment for production/sandbox/no netowrk
       private static final String CONFIG_ENVIRONMENT = PayPalConfiguration.ENVIRONMENT_PRODUCTION;


5)Now set client id from the Paypal developer account-
     private static final String CONFIG_CLIENT_ID = "PUT YOUR CLIENT ID";


6)Inside onCreate method call the Paypal service-
Intent intent = new Intent(this, PayPalService.class);
        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
        startService(intent);


7)Now you are ready to make a payment just on button press call the Payment Activity-
PayPalPayment thingToBuy = new PayPalPayment(new BigDecimal(1),"USD", "androidhub4you.com",
                                 PayPalPayment.PAYMENT_INTENT_SALE);

                             Intent intent = new Intent(MainActivity.this, PaymentActivity.class);

                             intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);


                             startActivityForResult(intent, REQUEST_PAYPAL_PAYMENT);    


8)And finally from the onActivityResult get the payment response-
  @Override
           protected void onActivityResult(int requestCode, int resultCode, Intent data) {
               if (requestCode == REQUEST_PAYPAL_PAYMENT) {
                   if (resultCode == Activity.RESULT_OK) {
                       PaymentConfirmation confirm = data
                               .getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
                       if (confirm != null) {
                           try {
                           System.out.println("Responseeee"+confirm);
                               Log.i("paymentExample", confirm.toJSONObject().toString());

                            
                               JSONObject jsonObj=new JSONObject(confirm.toJSONObject().toString());
                              
                               String paymentId=jsonObj.getJSONObject("response").getString("id");
                               System.out.println("payment id:-=="+paymentId);
                               Toast.makeText(getApplicationContext(), paymentId, Toast.LENGTH_LONG).show(); 

                           } catch (JSONException e) {
                               Log.e("paymentExample", "an extremely unlikely failure occurred: ", e);
                           }
                       }
                   } else if (resultCode == Activity.RESULT_CANCELED) {
                       Log.i("paymentExample", "The user canceled.");
                   } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
                       Log.i("paymentExample", "An invalid Payment was submitted. Please see the docs.");
                   }
               }
              
               
         }




For any query or suggestion please post your feedback.

Thanks,



38 comments :

  1. Replies
    1. This comment has been removed by the author.

      Delete
    2. good and hope u will post some more --------

      Delete
    3. Yes sure i will post and thank you..

      Delete
  2. is it against google policy to accept money via pay pal?

    ReplyDelete
    Replies
    1. No.. is it mention any where? If it is against goole policy then why paypal have libray for android? As per my knowladge paypal is accepted by google.

      Delete
    2. No.. is it mention any where? If it is against goole policy then why paypal have libray for android? As per my knowladge paypal is accepted by google.

      Delete
    3. just wanted to know coz goofle has monopoly they can ban u for no reason

      Delete
    4. hello,

      I want to implement the payment gateway in my SAPUI5 application..
      Please suggest me the proper solution

      Thanks
      Vaidehi

      Delete
  3. Hi Manish ...Thanks for ur awesome tutorials on uncommon & nice topics... This tutorial was great too. Please let me know if you have any prior experience with paypal...Do they accept indian cards? And ...Only these steps you mentioned are required to start online transactions.

    ReplyDelete
    Replies
    1. Indian cards means? well try this demo app it will accept all type of common card like Visa, Master etc.

      Delete
  4. Can you check my code here http://bit.ly/1uZ1r42
    i am getting invalid merchant clientId, Thanks

    ReplyDelete
    Replies
    1. you are using the Classic API Username instead of the application client_id. To fix, log in to developer.paypal.com, navigate to Applications > My Apps > the name of your app. Open the 'REST API CREDENTIALS ' window, and you'll see a sandbox and live client_id. Copy the appropriate id into your app.

      Delete
  5. Hi manish thanks for the above tutorial... and i have few queries... i have done all the above steps but my response remains same i.e pay ID and created_time... why so? and how will i know that the payment has happened? (will there be any mail sent or invoice to acknowledge my transfer) and i have already droped question in stack overflow regarding this(http://stackoverflow.com/questions/28043316/paypal-integration-android)... if you could help then it will be great thanks...

    ReplyDelete
  6. sir this is no doubt very nice article but when i start on emultor then it shows ur device is not registered

    ReplyDelete
    Replies
    1. I think this code will not work on emulator, try over the real phone.

      Delete
  7. "config cannot be resolved to a variable" Here you can't created 'config' variable.

    ReplyDelete
    Replies
    1. private static PayPalConfiguration config = new PayPalConfiguration()
      .environment(CONFIG_ENVIRONMENT)
      .clientId(CONFIG_CLIENT_ID)
      .acceptCreditCards(true)
      .languageOrLocale("EN")
      .rememberUser(true)
      .merchantName("xyz");

      Delete
  8. Any Tutorial For Payumoney integration??please help me. or any other tutorial for pay in ruppe???? suggest tutorial.thank u

    ReplyDelete
  9. Unauthorized Device
    payments from this device are not allowed.

    How can I solve this problem .

    ReplyDelete
  10. Unauthorized Device
    payments from this device are not allowed.

    How can I solve this problem .

    Tested in Real Device

    ReplyDelete
  11. for me unfortunately its closing

    ReplyDelete
    Replies
    1. Can you share crash report? And check your permissions in manifest file.

      Delete
  12. how can i integrate google wallet in android

    ReplyDelete
    Replies
    1. You can try below link-
      http://www.androidhub4you.com/2013/03/how-to-inegrate-in-app-purchase-billing.html

      Note: It is 2013 code so if Google have been changed their way to doing thing, please visit Google Developer Blogs.

      Delete
  13. Hi Manish, I am getting "The merchant does not accept payments of this type." while paying through MasterCard credit card.

    How can i solve this problem.

    ReplyDelete
    Replies
    1. Are you using sandbox mode or live? And please check the country if they accept the card payment through PayPal. For more detail visit PayPal developer blog.

      Delete
  14. Thanks for reply..!
    I am using production environment with client id of production and business account from Singapore.

    ReplyDelete
  15. hello sir please guide me that how can i start ios development on windows pc. i tried to find but still i fail in googling so please help me to any third party tool which can help me to start ios development on windows pc

    ReplyDelete
    Replies
    1. Legally you can't do that.Any how if you able to use xcode and developing the application but still you will not be able to upload your application on apple store.

      Delete
  16. Any Tutorial For Payumoney integration??
    please help me.
    Suggest me the proper solution or tutorial.

    Thanks
    Vaidehi

    ReplyDelete
  17. Hie manish sir can i get your client id for testing because with my client id it shows invalid client id please reply soon

    ReplyDelete
    Replies
    1. I am really sorry but I can't share client id because of security reason. Please try to debug your setting and see why you are getting this error.

      Delete