如何在PayPal REST API中获取用户信息

时间:2017-07-24 15:41:17

标签: java rest api paypal paypal-rest-sdk

我正在从NVP / SOAP PayPal API集成转向更新的REST API。

我的旧网站代码使用了“快速结账”流程。

简而言之:

  • 您会看到“购物车”摘要页面,其中包含要购买的产品列表;

  • 点击“Pay with PayPal”按钮(无需填写用户数据表格);

  • 网站发起付款,用户重定向到PayPal;

  • 用户登录并确认已启动的付款;

  • 用户被重定向到网站,该网站呼叫PayPal以获取用户个人信息以保存在交易记录中(例如姓名,地址......);

    < / LI>
  • 付款最终执行;

我在这里查看了集成模式:https://developer.paypal.com/demo/checkout/#/pattern/server

...但无法弄清楚如何使用新API实现完全相同的工作流程。

我的意思是,在 onAuthorize 回调方法中,我确实有用户授权付款的paymentID和payerID,等待执行..但是没有他的个人数据,我的订单要保存

是否有某种调用来检索该数据?或者将其包含在回复中?

1 个答案:

答案 0 :(得分:1)

首先,请让我知道你希望我去细节的深度。如果您想了解工作流,伪代码或代码示例的一般概述,我会尽力提供这些。现在,我将坚持参考概述。

查看Paypal参考文档中的Identity API call。这是一个 GET 请求,它返回一个“userinfo”对象,该对象又包含用户配置文件属性,如名称,地址等。

但是,我怀疑您会想要使用Invoice API,以防您的买家指定与其个人资料不同的详细信息。在这种情况下,您应该实施 GET / v1 / invoicing / invoices / invoice_id 请求,该请求会将您的发票ID作为参数并返回用户指定的地址,名称等。它还包含为了执行它而需要构建的请求的模板。

编辑:我已经对它进行了更多调查,我认为我找到了更好的解决方案。您可以通过调用return actions.payment.get().then(function(data)并指定所需数据,从Paypal按钮回调中返回任何交易详情。我提供了我在下面找到的例子:

onAuthorize: function(data, actions) {

        // Get the payment details

        return actions.payment.get().then(function(data) {

            // Display the payment details and a confirmation button. You may want to save the queried data to your server, make sure to do this here

            var shipping = data.payer.payer_info.shipping_address;

            document.querySelector('#recipient').innerText = shipping.recipient_name;
            document.querySelector('#line1').innerText     = shipping.line1;
            document.querySelector('#city').innerText      = shipping.city;
            document.querySelector('#state').innerText     = shipping.state;
            document.querySelector('#zip').innerText       = shipping.postal_code;
            document.querySelector('#country').innerText   = shipping.country_code;

            document.querySelector('#paypal-button-container').style.display = 'none';
            document.querySelector('#confirm').style.display = 'block';

            // Listen for click on confirm button

            document.querySelector('#confirmButton').addEventListener('click', function() {

                // Button click event code

                // Execute the payment

                return actions.payment.execute().then(function() {

                    // payment executed code
                    // display confirmation, thank you notes and whatnot
                });
            });
        });
    }

通过这种方式,您可以自动获得所需的信息,而无需创建额外的(并且不必要的)大量请求。