嘿我试图在Android上集成Paypal MPL API,但我有很多麻烦...... 我已完成所有https://www.x.com/developers/paypal/how-to-guides/how-accept-payments-android-app-using-mpl步骤,但是当我运行我的项目时,我收到此错误:
java.lang.NoClassDefFoundError:com.paypal.android.MEP.PayPalPayment
我已将mpl.jar文件集成到我的项目中。
以下是代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void initLibrary() {
PayPal pp = PayPal.getInstance();
if (pp == null) {
pp = PayPal.initWithAppID(this, "APP-80W284485P519543T", PayPal.ENV_NONE);
pp.setLanguage("en_US");
pp.setFeesPayer(PayPal.FEEPAYER_EACHRECEIVER);
pp.setShippingEnabled(true);
}
}
private void showPayPalButton() {
PayPal pp = PayPal.getInstance();
final CheckoutButton launchPayPalButton;
launchPayPalButton = pp.getCheckoutButton(this, PayPal.BUTTON_278x43, CheckoutButton.TEXT_PAY);
launchPayPalButton.setOnClickListener((OnClickListener) this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams (LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
params.bottomMargin = 10;
launchPayPalButton.setLayoutParams(params);
launchPayPalButton.setId(10);
((RelativeLayout) findViewById(R.id.rlayout)).addView(launchPayPalButton);
((RelativeLayout) findViewById(R.id.rlayout)).setGravity(Gravity.CENTER_HORIZONTAL);
}
public void PayPalButtonClick(View arg0) {
PayPalPayment payment = new PayPalPayment();
payment.setCurrencyType("USD");
payment.setRecipient("nons3nsedevelopment@gmail.com");
payment.setSubtotal(new BigDecimal(10));
payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS);
PayPalInvoiceData invoice = new PayPalInvoiceData();
invoice.setTax(new BigDecimal(5));
}
public void PayPalActivityResult(int requestCode, int resultCode, Intent intent) {
switch (resultCode) {
case Activity.RESULT_OK:
String payKey = intent.getStringExtra(PayPalActivity.EXTRA_PAY_KEY);
//this.paymentSucceeded(payKey);
break;
case Activity.RESULT_CANCELED:
//this.paymentCanceled();
break;
case PayPalActivity.RESULT_FAILURE:
String errorID = intent.getStringExtra(PayPalActivity.EXTRA_ERROR_ID);
String errorMessage = intent.getStringExtra(PayPalActivity.EXTRA_ERROR_MESSAGE);
//this.paymentFailed(errorID, errorMessage);
}
}
我在这里找不到错误......
答案 0 :(得分:1)
复制PayPal最新的SDK jar文件在项目中粘贴libs文件夹,然后右键单击jar文件添加到构建路径,
尝试以下代码。
公共类MainActivity扩展了Activity {
private static final String CONFIG_ENVIRONMENT = PayPalConfiguration.ENVIRONMENT_NO_NETWORK;
// note that these credentials will differ between live & sandbox environments.
private static final String CONFIG_CLIENT_ID = "AVLi6hDi_hTrqeVnADnRQ6jOF8VIj1b8nWbRof2ciyWhOKaOxnJr6wJKf7mi"; //"credential from developer.paypal.com";
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"));
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, PayPalService.class);
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
startService(intent);
}
public void onBuyPressed(View pressed) {
PayPalPayment thingToBuy = getThingToBuy(PayPalPayment.PAYMENT_INTENT_SALE);
Intent intent = new Intent(MainActivity.this, PaymentActivity.class);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
startActivityForResult(intent, REQUEST_CODE_PAYMENT);
}
private PayPalPayment getThingToBuy(String environment) {
return new PayPalPayment(new BigDecimal(String.valueOf(100)), "USD", "Android Mobile",
environment);
}
}
答案 1 :(得分:0)
MPL正在弃用。建议您改用新的PayPal Android SDK。