如何从PayPal移动支付库获取用户名,电话和电子邮件

时间:2013-04-30 11:14:22

标签: android android-intent paypal paypal-sandbox

我正在使用PayPal Mobile Payment Library让用户通过我的Android应用程序支付旅程费用。

当用户点击使用Paypal按钮付款时,登录屏幕显示,当用户登录时,他能够成功付款。这一切都适用于我的应用程序。我需要的是在用户完成/取消onActivityResult代码中的付款后获取用户详细信息。

请看下面我的代码,遗憾的是它没有从paypal帐户中获取详细信息,所以我想知道是否有另一种方法可以在登录后从paypal获取用户详细信息。

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        switch (requestCode)
        {
            case PAYPAL_REQUESTCODE:
            {
                Log.w("tag","jemail#"+ PayPal.getInstance().getAccountEmail());
                Log.w("tag","jname#"+ PayPal.getInstance().getAccountName());
                Log.w("tag","jphone#"+ PayPal.getInstance().getAccountPhone());
                Log.w("tag","jdialcode#"+ PayPal.getInstance().getAccountCountryDialingCode());

                switch(resultCode)
                {
                    case Activity.RESULT_OK:
                    {
                        String payKey = data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY);

                            Log.d("tag", "PayPal payment succeeded");
                            Log.d("tag", "PayPal payKey: " + payKey);

我所做的是登录,然后取消交易 这是我得到的日志

04-30 12:30:19.672: W/tag(24697): jemail#
04-30 12:30:19.672: W/tag(24697): jname#
04-30 12:30:19.672: W/tag(24697): jphone#+44
04-30 12:30:19.672: W/tag(24697): jdialcode#44

然后我点击我的应用程序,然后点击下一步再次转到付款页面,再次点击pay with paypal按钮,这次我已经登录,然后我取消交易

04-30 12:30:43.878: W/tag(24697): jemail#
04-30 12:30:43.878: W/tag(24697): jname#H.O.P.E
04-30 12:30:43.878: W/tag(24697): jphone#+44
04-30 12:30:43.878: W/tag(24697): jdialcode#44

2 个答案:

答案 0 :(得分:3)

此时您无法获得付款人信息,如电子邮件,姓名和电话等。您可能还注意到有相应的设置方法,如payPal.setAccountEmail(“payer@xyz.com”)。如果您已经拥有这些信息,它们的目的是预先填写PayPal对话框和付款人信息。

但是,您可以使用PayPal IPN(即时付款通知)在付款处理后从PayPal系统接听回电。从IPN消息中,您可以提取付款人信息。使用Pay Key从IPN消息中识别付款人。此外,您必须在调用PayPal活动时传递PayPalAdvancedPayment对象。请查看此文档PayPal Mobile implementation guide

调用程序如下:

    PayPalAdvancedPayment payment = new PayPalAdvancedPayment();
    payment.setIpnUrl("http://server/test");
    payment.setReceivers... // Receiver objects
    PayPal.getInstance().checkout(payment, this.getBaseContext());

答案 1 :(得分:3)

检查此项(OAuth): https://developer.paypal.com/webapps/developer/docs/integration/direct/log-in-with-paypal/#getStart

并且:https://developer.paypal.com/webapps/developer/docs/integration/direct/log-in-with-paypal/detailed/

使用HttpClientWebView进行身份验证并继续进行 - 此应用的WebFrame可能有点复杂,但这是我能立即想到的 - 除非您使用其他OAuth提供商的应用程序库< / p>

另见 - http://developer.android.com/reference/android/webkit/WebView.html