Question

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.

Was it helpful?

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("my@email.com");
        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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top