1
votes

I have added paypal android SDK under native/android package.Created native interface in main project structure(com.mycompany.myapp).Under native/android the implemented class is using the paypal sdk classes. My implemented class:

package com.mycompany.myapp;

import com.paypal.android.sdk.payments.PayPalConfiguration;
import com.paypal.android.sdk.payments.PayPalPayment;
import com.paypal.android.sdk.payments.PaymentActivity;
import android.content.Intent;
import android.net.Uri;
import android.app.Activity;
import com.codename1.impl.android.AndroidNativeUtil;
import com.codename1.impl.android.CodenameOneActivity;
import java.math.BigDecimal;

public class MyNativeImpl {
 // private static final String TAG = "paymentdemoblog";
/**
 * - Set to PaymentActivity.ENVIRONMENT_PRODUCTION to move real money.
 * 
 * - Set to PaymentActivity.ENVIRONMENT_SANDBOX to use your test credentials
 * from https://developer.paypal.com
 * 
 * - Set to PayPalConfiguration.ENVIRONMENT_NO_NETWORK to kick the tires
 * without communicating to PayPal's servers.
 */
// private static final String CONFIG_ENVIRONMENT =
// PayPalConfiguration.ENVIRONMENT_NO_NETWORK;
private static final String CONFIG_ENVIRONMENT = PayPalConfiguration.ENVIRONMENT_SANDBOX;

// note that these credentials will differ between live & sandbox
// environments.
private static final String CONFIG_CLIENT_ID = "Aeqc2X1rBIEUtDNqsaRNr0h1neFo9QnNmfgmpA3D32uSLaHpGJu9NV1KfMnFmy7O-_hV47I7ST0SXDW2";

private static final int REQUEST_CODE_PAYMENT = 1;
private static final int REQUEST_CODE_FUTURE_PAYMENT = 2;

private static PayPalConfiguration config = new PayPalConfiguration()
        .environment(CONFIG_ENVIRONMENT)
        .clientId(CONFIG_CLIENT_ID)
        // The following are only used in PayPalFuturePaymentActivity.
        .merchantName("Hipster Store")
        .merchantPrivacyPolicyUri(
                Uri.parse("https://www.example.com/privacy"))
        .merchantUserAgreementUri(
                Uri.parse("https://www.example.com/legal"));

PayPalPayment thingToBuy;
private static Activity activity() {
    return com.codename1.impl.android.AndroidNativeUtil.getActivity();
} 


public String payPalTest() {
 //Activity activity = AndroidNativeUtil.getActivity();      
thingToBuy = new PayPalPayment(new BigDecimal("10"), "USD",
                    "HeadSet", PayPalPayment.PAYMENT_INTENT_SALE);

            Intent intent = new Intent(activity(),PaymentActivity.class);

            intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
                            activity().startActivityForResult(intent,  REQUEST_CODE_PAYMENT);

    return "test";
}
public boolean isSupported() {
    return false;
}

}

I called the method from main class:

        MyNative my = (MyNative)NativeLookup.create(MyNative.class);
        if(my!= null){
          String aa =my.payPalTest();
          System.out.println("result::" + aa);
            System.out.println("paypalInt" + my.toString());
        }

the apk build successfully but getting below error while trigger the code: android.content.ActivityNotFound Exception:Unable to find explicit activity class{com.mycompany.myapp/com.paypal.android.sdk.paymentActivity....

It is searching the paypal sdk classes under main project folder structure.Do I need to add the SDK jar under the said structure? What I need to do to fix the issue.

1

1 Answers

1
votes

The code looks fine, I am guessing this is something in the configuration. Unable to find explicit activity class Payment activity with PayPal SDK in Xamarin on Android