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

Dv_*_*_MH 9 android paypal paypal-sandbox android-intent

我正在使用PayPal 移动支付库让用户从我的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);
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

然后我点击我的应用程序,然后点击下一步再次转到付款页面,再次单击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
Run Code Online (Sandbox Code Playgroud)

Sha*_*med 3

此时您无法获取付款人信息,例如电子邮件、姓名和电话等。您可能还注意到有相应的设置方法,例如 payPal.setAccountEmail("payer@xyz.com")。它们的设计目的是在您已经拥有付款人信息的情况下预先填充 PayPal 对话框。

但是,您可以使用 PayPal IPN(即时付款通知)在付款处理完毕后从 PayPal 系统获得回电。您可以从 IPN 消息中提取付款人信息。使用 Pay Key 从 IPN 消息中识别付款人。此外,调用 PayPal Activity 时必须传递 PayPalAdvancedPayment 对象。请查看此文档,PayPal Mobile 实施指南

调用流程如下:

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

  • 是的,您可以获取 PayPal 用户个人资料信息,因为 PayPal 提供 OAuth2 标准。首先,您必须通过 PayPal 登录来登录用户并生成身份验证令牌。收到有效的身份验证令牌后,如果用户允许您的应用程序访问其个人资料数据 (https://identity.x.com/xidentity/resources/profile/me),则您可以调用用户个人资料数据。配置文件访问权限是在 OAuth 登录过程中授予的。该过程类似于 Facebook、Google 或其他 OAuth2 标准 (2认同)