首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >交易后获取客户详细信息

交易后获取客户详细信息
EN

Stack Overflow用户
提问于 2016-06-23 00:56:46
回答 1查看 476关注 0票数 1

我正在努力在Paypal NVP和REST API之间做出选择。

REST API似乎更新更好,但我找不到一种在交易发生后获取客户详细信息的方法。

基本上,我想设置一个定期付款的账单计划,然后通过API获得客户的详细信息,这样他们就不必通过我的网站输入他们。

Paypal Express checkout似乎是我应该在这里使用的。

NVP提供了一个GetExpressCheckoutDetails方法来获取这些详细信息。

我没有找到与REST API类似的东西。

既然REST API似乎也通过了Express Checkout,那么就应该有一个解决方案。

开通计费协议后如何获取客户详细信息?

EN

回答 1

Stack Overflow用户

发布于 2016-08-03 01:19:54

我在一个月前遇到了同样的问题,在阅读了文档后,目前还没有办法使用REST API来实现这一点。如果有一种方法,那就是没有文档化。

我发现要做到这一点,唯一的方法是使用NVP API,可能还有SOAP API。NVP API将返回您想要的大多数字段,但如果您存储了事务的自定义字段,它将只给您3个自定义字段,而不是全部(奇怪)。

我没有尝试过NVP方法GetExpressCheckoutDetails,但我使用了GetTransactionDetails方法。它将向您返回交易详细信息。它返回一个您必须解析的文本块。每个字段都是URL编码的,并用“与”号分隔。下面是一个用PHP编写的示例:

代码语言:javascript
代码运行次数:0
运行
复制
<?php

// Get cURL resource
$ch = curl_init();

// Set url
curl_setopt($ch, CURLOPT_URL, 'https://api-3t.paypal.com/nvp/');

// Set method
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

// Set options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Set headers
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/x-www-form-urlencoded; charset=utf-8",
    ]
);
// Create body
$body = [
    "VERSION" => "204.0",
    "METHOD" => "GetTransactionDetails",
    "USER" => "nvp_api_username_here",
    "PWD" => "nvp_api_password_here",
    "SIGNATURE" => "nvp_api_signature_here",
    "TRANSACTIONID" => "some_paypal_transaction_id_here",
];
$body = http_build_query($body);

// Set body
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);

// Send the request and save response to $resp
$resp = curl_exec($ch);

if(!$resp) {
    die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
} else {
    parse_str($resp, $formated_response);
    print_r($formated_response);
}

// Close request to clear up some resources
curl_close($ch);

下面是格式化后的返回体:

代码语言:javascript
代码运行次数:0
运行
复制
Array
(
    [RECEIVERBUSINESS] => paypal_account_owner_email_address_here@test.com
    [RECEIVEREMAIL] => paypal_account_owner_email_address_here@test.com
    [RECEIVERID] => 1111111111111
    [EMAIL] => buyers_email_address_here@test.com
    [PAYERID] => 55551
    [PAYERSTATUS] => verified
    [COUNTRYCODE] => US
    [BUSINESS] => buyers_business_name_here
    [ADDRESSOWNER] => PayPal
    [ADDRESSSTATUS] => None
    [SALESTAX] => 0.00
    [SHIPAMOUNT] => 0.00
    [SHIPHANDLEAMOUNT] => 0.00
    [SHIPDISCOUNT] => 0.00
    [INSURANCEAMOUNT] => 0.00
    [GIFTRECEIPT] => 0
    [TIMESTAMP] => 2016-08-02T17:04:58Z
    [CORRELATIONID] => 55552
    [ACK] => Success
    [VERSION] => 204.0
    [BUILD] => 22386173
    [FIRSTNAME] => Foo
    [LASTNAME] => Bar
    [TRANSACTIONID] => 55553
    [TRANSACTIONTYPE] => webaccept
    [PAYMENTTYPE] => instant
    [ORDERTIME] => 2016-08-01T20:49:28Z
    [AMT] => 1.00
    [TAXAMT] => 0.00
    [CURRENCYCODE] => USD
    [PAYMENTSTATUS] => Completed
    [PENDINGREASON] => None
    [REASONCODE] => None
    [SHIPPINGMETHOD] => Default
    [PROTECTIONELIGIBILITY] => Ineligible
    [PROTECTIONELIGIBILITYTYPE] => None
    [L_QTY0] => 0
    [L_TAXAMT0] => 0.00
    [L_SHIPPINGAMT0] => 0.00
    [L_HANDLINGAMT0] => 0.00
    [L_CURRENCYCODE0] => USD
    [L_OPTIONSNAME0] => first_custom_field_label_here
    [L_OPTIONSVALUE0] => first_custom_field_value_here
    [L_OPTIONSNAME1] => second_custom_field_label_here
    [L_OPTIONSVALUE1] => second_custom_field_value_here
    [L_OPTIONS1NAME0] => second_custom_field_label_here_duplicate
    [L_OPTIONS1VALUE0] => second_custom_field_value_here_duplicate
    [L_TAXABLE0] => false
    [L_TAXRATE0] => 0.0
    [L_AMT0] => 1.00
    [INSURANCEOPTIONSELECTED] => 0
    [SHIPPINGOPTIONISDEFAULT] => 0
)

警告:

这仅适用于在PayPal事务中存储自定义字段的情况。

PayPal的NVP API只返回一个事务的最多3个自定义字段,即使您可以在一个事务中存储最多7个自定义字段。更疯狂的是,它返回的其中一个自定义字段是second自定义字段的副本。至少在我尝试从事务中检索自定义字段时是这样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37974187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档