【问题标题】:How do you get the shipping address back from an Adaptive Payment API call?您如何从 Adaptive Payment API 调用中取回送货地址?
【发布时间】:2025-12-19 02:55:11
【问题描述】:

您应该如何使用 PayPal 的自适应 API 系统从 Parallel Payment 获取送货信息?通常,当请求 IPN 脚本时,它会以 payer_country 等形式传回。然而,情况似乎并非如此。

下面是调用 IPN 脚本时传入的参数:

transaction[0].amount 
transaction[0].id 
verify_sign 
transaction[1].receiver 
reverse_all_parallel_payments_on_error 
transaction[1].pending_reason 
transaction[0].pending_reason 
transaction[1].id_for_sender_txn 
transaction[0].invoiceId 
payment_request_date 
test_ipn 
cancel_url 
charset 
return_url 
transaction[0].status_for_sender_txn 
ipn_notification_url 
transaction[1].is_primary_receiver 
transaction[1].status 
transaction_type 
transaction[1].amount 
transaction[0].status 
log_default_shipping_address_in_transaction 
transaction[0].receiver 
status 
transaction[0].id_for_sender_txn 
action_type 
fees_payer 
pay_key 
transaction[1].status_for_sender_txn 
transaction[0].paymentType 
transaction[1].invoiceId 
transaction[1].id 
sender_email 
notify_version 
transaction[1].paymentType 
transaction[0].is_primary_receiver 

如果我随后进行 PaymentDetails API 调用,我会得到以下内容:

$VAR1 = {
  'currencyCode' => 'USD',
  'responseEnvelope' => {
                          'correlationId' => '9944330ab9a8c',
                          'timestamp' => '2014-04-07T06:08:16.094-07:00',
                          'ack' => 'Success',
                          'build' => '10273932'
                        },
  'status' => 'COMPLETED',
  'senderEmail' => 'andy.aaaa@ultranerds.co.uk',
  'cancelUrl' => 'http://somesite.net/paypal/cancel.html',
  'paymentInfoList' => {
                         'paymentInfo' => [
                                            {
                                              'pendingRefund' => 'false',
                                              'receiver' => {
                                                              'accountId' => 'NY3AD33DD739C',
                                                              'email' => 'andy-xxx@ultranerds.com',
                                                              'amount' => '65.00',
                                                              'invoiceId' => '1022',
                                                              'primary' => 'false',
                                                              'paymentType' => 'GOODS'
                                                            },
                                              'transactionId' => '8E1114341X895213Y',
                                              'senderTransactionStatus' => 'COMPLETED',
                                              'senderTransactionId' => '5EV71352C33256006',
                                              'transactionStatus' => 'COMPLETED',
                                              'refundedAmount' => '0.00'
                                            },
                                            {
                                              'pendingRefund' => 'false',
                                              'receiver' => {
                                                              'accountId' => 'YYP5C69YWCMKE',
                                                              'email' => 'andy.yyy@gmail.com',
                                                              'amount' => '15.00',
                                                              'invoiceId' => '1023',
                                                              'primary' => 'false',
                                                              'paymentType' => 'GOODS'
                                                            },
                                              'transactionId' => '68H86656UP574062X',
                                              'senderTransactionStatus' => 'COMPLETED',
                                              'senderTransactionId' => '2XW88939LK1112523',
                                              'transactionStatus' => 'COMPLETED',
                                              'refundedAmount' => '0.00'
                                            }
                                          ]
                       },
  'feesPayer' => 'EACHRECEIVER',
  'actionType' => 'CREATE',
  'ipnNotificationUrl' => 'http://somesite.net/paypal/test_ipn.cgi',
  'sender' => {
                'useCredentials' => 'false',
                'accountId' => 'B74RBM5F6SLZG',
                'email' => 'andy.aaa@ultranerds.co.uk'
              },
  'returnUrl' => 'http://somesite.net/paypal/success.html',
  'payKey' => 'AP-4EK17906VB6613533',
  'reverseAllParallelPaymentsOnError' => 'false'
};

如您所见,根本没有提及收货地址。你应该如何取回这些信息?

更新:嗯,好吧,所以看起来 GetShippingAddresses 是我需要的 - 但由于某种原因,当我调用它时它什么也没回来:

{"requestEnvelope":{"errorLanguage":"en_US","detailLevel":"ReturnAll"},"key":"AP-1B1377463N9785350"} /GetShippingAddresses_API_Operation/

...简单地返回:

{
    'responseEnvelope' => {
                      'correlationId' => '3a4443aed09c9',
                      'timestamp' => '2014-04-07T06:40:35.460-07:00',
                      'ack' => 'Success',
                      'build' => '10273932'
                    }
}

我有点困惑为什么要这样做。有什么建议?

我在这里找到了一个报价:

http://go.developer.ebay.com/devzone/articles/using-paypals-adaptive-payments-and-google-app-engine-build-online-market-python-part-3

很遗憾,尽管这遵循了 PayPal的文档,它不起作用。目前有一个bug PayPal 的自适应支付实施。对于传统支付方式, 收货地址未收集;对于嵌入式支付, GetShippingAddresses 调用不返回送货地址。

PayPal 已承认该错误并表示它希望 这已在 2011 年 4 月修复。如果您现在需要送货地址, 建议是在您的网站上收集它们,而不是依赖 在 PayPal API 上。

那是从 2011 年开始的……但现在还是这样吗??

很抱歉,您有什么建议吗?

【问题讨论】:

    标签: paypal paypal-ipn paypal-adaptive-payments


    【解决方案1】:

    好的,我得到了答案 - 但不幸的是,这不是我所希望的:

    是的,很遗憾,此功能仅适用于嵌入式支付 流动。 https://developer.paypal.com/webapps/developer/docs/classic/adaptive-payments/ht_ap-embeddedPayment-curl-etc/

    如果您使用的是嵌入式支付流程,那么您可以检索 通过传入他们的 PayPal 帐户上的地址 senderOptions.requireShippingAddressSelection = true 期间 SetPaymentOption API 调用。然后您可以通过以下方式检索它 GetShippingAddresses API 调用。

    所以看起来我真的需要做的是要求用户在将其发送到贝宝之前提供他们的运输信息,然后将其存储。不理想 - 但我想你只需要使用你所拥有的!

    【讨论】:

    • 这是我现在的paypal api:(╯°□°)╯︵┻━┻