【问题标题】:initWithAppID command crashedinitWithAppID 命令崩溃
【发布时间】:2011-08-29 11:07:12
【问题描述】:

我是 Android 编程新手,尤其是 PayPal。我得到了一个应用程序,该应用程序的任务是进行故障排除 - 尽管是 Android 新手,但在这一行崩溃了:

initWithAppID(this.getBaseContext(), appID, PayPal.ENV_SANDBOX);

首先,PayPal.ENV_SANDBOX 总是返回一个 0,我不确定它是否应该这样。其次,为什么它总是在那里崩溃?我在网上搜索了原因,人们说它是因为它没有完全初始化,这就是它失败的原因。现在我想知道如果我无法初始化这个库我需要做什么?

我正在使用 Eclipse IDE,在 Samsung Galaxy Tab Android 2.2 上进行测试

【问题讨论】:

    标签: android paypal-sandbox


    【解决方案1】:

    不知道这是否会有所帮助,但这就是我在使用 PayPal.ENV_NONE 进行测试时修复它的方式(来自https://github.com/phonegap/phonegap-plugins/blob/master/Android/PayPalPlugin/src/com/phonegap/plugin/mpl.java

    PayPal pp = PayPal.getInstance();
    if (pp == null) {
        try {
            pp = PayPal.initWithAppID(getApplicationContext(), "", PayPal.ENV_NONE);
        } catch (IllegalStateException e) {
            throw new RuntimeException(e);
        }
        pp.setShippingEnabled(false);
    }
    

    那么在创建按钮的时候:

    PayPal pp = PayPal.getInstance();
    CheckoutButton cb = pp.getCheckoutButton(
            getBaseContext(), 
            PayPal.BUTTON_194x37, 
            CheckoutButton.TEXT_PAY);
    cb.setOnClickListener(new OnClickListener() {
        PayPalPayment payment = new PayPalPayment();
        // set subtotal etc ...
        Intent i = PayPal.getInstance().checkout(payment,getApplicationContext());
        startActivityForResult(i, 1);
    });
    

    希望能有所帮助

    【讨论】:

    • 谢谢,我会看看在代码中如何以及在哪里实现这些语句,看看它是否有效。或者我可以改用PayPal.initWithAppID(getApplicationContext(), "", PayPal.ENV_NONE); 吗?
    • 顶部代码应将其初始化为 ENV_NONE。这是最容易开始工作的情况。当它起作用时,回到尝试让 ENV_SANDBOX 工作。崩溃时日志会说什么?
    • 关于空指针的东西,很难用这种方式查明问题。但是当我在运行时进行调试时,它在该行崩溃了......
    【解决方案2】:

    您能否指定有关此方法的更多信息?它是一种贝宝库方法吗? 我认为 PayPal.ENV_SANDBOX 是您必须设置的一些环境变量。顾名思义,此设置用于测试目的或开发(实际上不进行任何付款)。 我想您可能会在库文档中找到有关此方法的更多信息。 第二个问题是,您是否使用了正确的 appId?基础上下文是正确使用的上下文吗?也许你必须使用 getApplicationContext,见herehere

    【讨论】:

    • 大写表示ENV_SANDBOX是PayPal类的常量,不应该,甚至不能设置。因此,每次返回 0 都是设计使然,因为这显然是它的常数值。显然,在 PayPal 类中会有更多的 ENV_* 常量可以传递给 initWithAppID。
    • 是的。但我不知道 PayPal 库。可能有超过 1 个具有完全相同 API 的库可用。一个用于产品,一个用于开发,通过 PayPal.ENV_SANDBOX 告诉您使用哪一个。同样,我现在不知道这个常量的真正含义,但我想 PayPal 有它的文档。
    • 同一个库用于所有 ENV_* 类型。当您通过 ENV_SANDBOX 时,PayPal 将在其 Sandbox 服务器上执行所有操作(用于测试)。当您的应用准备好上线时,您可以传递 ENV_LIVE。您还可以传递 ENV_NONE 在这种情况下,库将在内部执行所有操作(模拟网络消息)。他们是 Sandbox 的一个 App ID (APP-80W284485P51943T)。您应该初始化它一次,然后通过 PayPal.getInstance() 检索它。我有同样的问题,只是想我会添加一些我知道的额外内容
    • 感谢您的所有回复。但不幸的是,我被抛出了这个项目,并被要求对发生的任何错误进行测试和故障排除。从而给我这个问题。但我相信 ENV_SANDBOX 是一个来自 PayPal 库的变量。我阅读了 Android PayPal 的文档,并在那里看到了它以及其他 2 个变量。
    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2017-02-11
    相关资源
    最近更新 更多