PayPal REST API 未返回 payment_info

Posted

技术标签:

【中文标题】PayPal REST API 未返回 payment_info【英文标题】:PayPal REST API not returning payment_info 【发布时间】:2013-06-26 12:09:42 【问题描述】:

我正在使用 REST API 来授权 PayPal 交易,当它返回确认并执行付款时,我想从他们的 PayPal 帐户中检索并显示付款人信息,例如姓名、地址、电话等结帐订单确认页面。 (为了避免他们必须输入所有账单/送货地址信息,因为这应该可以从 PayPal 获得。)

目前退货仅向付款人显示:

PayPal\Api\Payment Object
(
    [_propMap:PayPal\Common\PPModel:private] => Array
        (
            [id] => PAY-2EC51985XH550123JKHG3C4Y
            [create_time] => 2013-06-28T15:53:23Z
            [update_time] => 2013-06-28T15:53:23Z
            [state] => created
            [intent] => sale
            [payer] => PayPal\Api\Payer Object
                (
                    [_propMap:PayPal\Common\PPModel:private] => Array
                        (
                            [payment_method] => paypal
                        )

                )

            [transactions] => Array
            ...

文档说明:

payer_info 对象

当 payment_method 为 paypal 时,此对象由 PayPal 预填充。

(见https://developer.paypal.com/webapps/developer/docs/api/#payerinfo-object)

即使在执行付款后,我仍然没有收到来自 PayPal 的 payer_info 对象。我想知道 PayPal 是否只是在将用户发送到 PayPal 之前返回我预先填充的信息?例如:

$payer = new Payer();
$payer->setPayment_method('paypal');

有没有办法使用 REST API 来检索用户的姓名/地址/电话/等(我希望从 Payment::get($pay_id)->getPayer()->getPayerInfo()->getShipping_address() 获得的信息)?

或者我是否必须让用户重复他们的工作并在我的结帐页面上输入地址信息?我当然希望不会,因为这是使用 PayPal 作为付款方式的一大优势。

【问题讨论】:

也许这正是 Express Checkout 的用途?或者 REST API 可能还不存在? 付款后“payer_info”应返回买家信息。您提供的完整写出没有“payer_info”类别。我现在要进一步研究。 REST 的东西在某些方面仍然非常新且不完整——在执行之前捕获买家信息就是其中之一。但是我们经常为它引入新功能。经典的 API 调用已经解决了所有问题并且运行良好。 我查看了 Express Checkout 令牌 (EC-76L38216UH578922K) 并注意到从未发生过执行。我找不到交易 ID 或此尝试失败。 所以 REST 最终会像 Express Checkout 一样,在执行前返回所有买家信息?是否知道该行为何时可用?还是我现在应该改用经典 API? 我们确实有针对 REST 推出该功能的内部计划,但我无法详细说明。我建议您使用 Classic APIs for Express Checkout - 特别是如果您需要在付款完成之前获取买家信息。对不起。 【参考方案1】:

我想我会发布一个答案,以防其他人有这个问题。

REST API 似乎在大多数情况下都无法返回运输信息。尤其是在使用 GET /payments/payment 端点时。但是我之前看到它从POST /payments/payment/<PAYMENT_ID>/execute 端点返回运输信息。

无论如何,按照上面的 cmets,看起来 OP 放弃了 REST API 并返回到 Express Checkout。如果您想提前获取运输数据,这已经足够公平了。

但是,如果您将 PayPal IPN 与 REST API 结合使用,它将在回调中提供运输和账单信息。所以你可以在那个时候收集信息。

我看到这样做的唯一问题是您无法向用户确认地址是否正确。然而,PayPal 会在用户付款时向他们显示此信息,并允许他们在必要时进行更改。所以我相信可以安全地假设数据是准确的。

【讨论】:

是的,我需要在确认付款之前显示地址,而 Express Checkout 最终可以很好地满足我的需求。令人惊讶的是,将近一年后,REST API 仍然不提供此功能。看起来很基本的功能。 现在 8 月有同样的问题。

以上是关于PayPal REST API 未返回 payment_info的主要内容,如果未能解决你的问题,请参考以下文章

Paypal Refund Sale REST API 返回:远程服务器返回错误:(404)未找到

通过 PHP SDK 的 PayPal REST API 返回“传入的 JSON 请求未映射到 API 请求”

如何使用rest api将paypal Single Payment集成到移动应用程序中

PayPal REST API - 沙盒为 API 请求返回 401 但访问令牌成功

Paypal Rest API 未触发 webhook

PayPal REST API 创建协议:传入 JSON 请求未映射到 API 请求