6

我正在使用 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
            ...

该文档指出:

付款人信息对象

  • 当 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');

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

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

4

1 回答 1

5

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

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

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

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

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

于 2014-05-20T11:44:18.890 回答