Search code examples
androidandroid-intentpaypalpaypal-nvp

How to integrate paypal to android app using webview


I want to integrate paypal into my apps. I was close to getting there until i saw this : https://developer.paypal.com/webapps/developer/support/faq#non-US-dev Paypal does not allow non-US developer to use the REST API. So the choice that I am left with is the classic api. That is where the problem comes in. I do not know how to use them.

I am planning to use NVP api. I have no clue how to do it but below is my flow chart of the way I am planning to do. I need to set the item number, description, price, etc at checkout.java which will send to www.domain.com/setsessions.php

I am not sure if it will work though. But even if it can, then I wonder how can the new 'intent' detect whether user has made payment successfully, fail payment or cancel payment.

App paypal flow

I need help with this. It is really frustrating..have been trying to integrate paypal for almost 2 weeks. Feel so unproductive..

Is this even okay? Or is there a better method? My requirement is to set the invoice no.,item no,description,price, location, all these are required from the app.


Solution

  • MainActivity.java

    public class PizzaMain extends Activity implements OnClickListener {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            PayPal ppObj = PayPal.initWithAppID(this.getBaseContext(), "APP-80W284485P519543T", PayPal.ENV_NONE);
    
            CheckoutButton launchPayPalButton = ppObj.getCheckoutButton(this, PayPal.BUTTON_152x33, CheckoutButton.TEXT_PAY);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    
            params.addRule(RelativeLayout.CENTER_HORIZONTAL);
    
            launchPayPalButton.setLayoutParams(params);
            launchPayPalButton.setOnClickListener(this);
    
            ((RelativeLayout) findViewById(R.id.mRlayout1)).addView(launchPayPalButton);
        }
    
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            PayPalPayment newPayment = new PayPalPayment();
            char val[] = { '5', '0' };
            BigDecimal obj_0 = new BigDecimal(val);
            newPayment.setSubtotal(obj_0);
            newPayment.setCurrencyType("USD");
            newPayment.setRecipient("[email protected]");
            newPayment.setMerchantName("My Company");
            Intent paypalIntent = PayPal.getInstance().checkout(newPayment, this);
            this.startActivityForResult(paypalIntent, 1);
        }
    
        @SuppressWarnings("unused")
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (resultCode) {
                case Activity.RESULT_OK:
                // The payment succeeded
                String payKey = data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY);
                // Tell the user their payment succeeded
                break;
                case Activity.RESULT_CANCELED:
                // The payment was canceled
                // Tell the user their payment was canceled
                break;
                case PayPalActivity.RESULT_FAILURE:
                // The payment failed -- we get the error from the EXTRA_ERROR_ID
                // and EXTRA_ERROR_MESSAGE
                String errorID = data.getStringExtra(PayPalActivity.EXTRA_ERROR_ID);
                String errorMessage = data.getStringExtra(PayPalActivity.EXTRA_ERROR_MESSAGE);
                // Tell the user their payment was failed.
                break;
            }
        }
    }
    

    And give below permissions into your AndroidManifest.xml file.

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

    And add Activity into your AndroidManifest.xml file.

    <activity
        android:name="com.paypal.android.MEP.PayPalActivity"
        android:configChanges="keyboardHidden|orientation"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    

    Add PayPal_MPL.jar Jar File as a Reference Library into your application