gpt4 book ai didi

android - Paypal 与 Android 集成

转载 作者:搜寻专家 更新时间:2023-11-01 09:06:52 26 4
gpt4 key购买 nike

我看到了一些相关的问题,但没有一个关注我遇到的具体问题:

我正在使用 PayPal MPL 库。

我构建我的 PayPalPayment 对象,然后创建要发生的结帐 Activity 。运行良好。我的问题是,在 ResultDelegate 上,我需要从我的 Activity 中调用一个函数,该函数发生在付款之后并进行一些更改(例如存储 SharedPreferences 等)。

所以像这样:

public class ResultDelegate implements PayPalResultDelegate, Serializable {
public void onPaymentSucceeded(String payKey, String paymentStatus) {
System.out.println("SUCCESS, You have successfully completed your transaction.");
System.out.println("PayKey: "+payKey);
System.out.println("PayStatus: "+paymentStatus);

callMyCustomAfterPaymentFunction();
}
...
}

现在的问题是,我尝试为接受我的 Activity 的 ResultDelegate 创建一个构造函数。我现有的代码是:

//On the activity class
public class MainMenuActivity extends Activity {
public void onCreate(Bundle savedInstanceState)
{
...
Button buy = (Button) findViewByID(R.id.buy_button);
buy.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
new PurchaseTask(activity).execute();
}
}
}
}

public class PurchaseTask extends AsyncTask <String, Void, String> {
protected String doInBackground()
{
...
PayPal pp = PayPal.getInstance();
CheckoutButton cb = pp.getCheckoutButton(...);
cb.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
ResultDelegate delegate = new ResultDelegate(myActivity);
Intent checkout = PayPal.getInstance().checkout(paument, activity, delegate);
activity.StartActivity(checkoutIntent);
}
}
}
}

//On the ResultDelegate class

public class ResultDelegate implements PayPalResultDelegate, Serializable {
private Activity myActivity;

public void onPaymentSucceeded(String payKey, String paymentStatus) {
System.out.println("SUCCESS, You have successfully completed your transaction.");
System.out.println("PayKey: "+payKey);
System.out.println("PayStatus: "+paymentStatus);

myActivity.performAfterPaymentOperations();
}
...
}

所以目标是从 ResultDelegate 调用 Activity 函数。或者更简单,只是为了能够在 ResultDelegate onPaymentSucceeded() 触发时存储一些 SharedPreference 更改。

但是我收到一个 NotSerializableException,指出我的 MyActivity 字段不是可序列化的。

所以,然后我将临时标识符添加到 ResultDelegate 中的 Activity 字段,但现在我得到一个 NullPointerException。

最佳答案

Paypal Mobile Chekout guide

paypal 网站上提供的实现与您的不同。他们正在执行 startActivityForResult() 以启动 PaypalActivity。当在 onActivityResult() 方法中时,他们正在检查 statusCode 以检查交易状态并采取相应行动。

按照该文档进行实现。

在您的代码中,我没有找到使用 AsyncTask 的要点。您的 ResultDelegateSerializableActivity 不是它抛出 NotSerializableException 的原因。

编辑:

既然您正在为 Google Android 平台开发,那么为什么不使用 Google Checkout In-App?

编辑:

此方法将在您的 PaypalActivity 完成时调用。该 Activity 会将 resultCode 传递给此 onActivityResult 方法。

@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.
}
}

问候,阿基夫·哈密

关于android - Paypal 与 Android 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com