Paypal 交易后获取客户详细信息
我很难在Paypal NVP和REST API之间做出选择 RESTAPI似乎更新更好,但我找不到在事务发生后获取客户详细信息的方法 基本上,我想建立一个定期付款的计费计划,然后通过API获取客户详细信息,这样他们就不必通过我的网站输入 贝宝快捷结账似乎是我应该在这里使用的 NVPAPI提供了获取这些详细信息的方法 我没有为RESTAPI找到类似的东西 因为RESTAPI似乎也要通过快速签出,所以应该有一个解决方案Paypal 交易后获取客户详细信息,paypal,paypal-subscriptions,paypal-rest-sdk,Paypal,Paypal Subscriptions,Paypal Rest Sdk,我很难在Paypal NVP和REST API之间做出选择 RESTAPI似乎更新更好,但我找不到在事务发生后获取客户详细信息的方法 基本上,我想建立一个定期付款的计费计划,然后通过API获取客户详细信息,这样他们就不必通过我的网站输入 贝宝快捷结账似乎是我应该在这里使用的 NVPAPI提供了获取这些详细信息的方法 我没有为RESTAPI找到类似的东西 因为RESTAPI似乎也要通过快速签出,所以应该有一个解决方案 激活计费协议后如何获取客户详细信息?我在一个月前遇到了同样的问题,在阅读文档后,
激活计费协议后如何获取客户详细信息?我在一个月前遇到了同样的问题,在阅读文档后,目前无法使用REST API实现这一点。如果有办法的话,就没有记录 我发现实现这一点的唯一方法是使用NVP API,可能还有SOAP API。NVP API将返回您想要的大部分字段,但如果您为事务存储了自定义字段,它将只提供3个自定义字段,而不是全部(奇怪) 我没有尝试过NVP方法,但我已经使用了该方法。它会将交易详细信息返回给您。它返回您必须解析的文本块。每个字段都是URL编码的,并用符号分隔。以下是PHP中的一个示例:
<?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);
警告:
这仅适用于在PayPal交易中存储自定义字段的情况
PayPal的NVP API最多只能为一个事务返回3个自定义字段,即使在一个事务中最多可以存储7个自定义字段。更疯狂的是,它返回的一个自定义字段是第二个自定义字段的副本。至少当我试图从事务中检索自定义字段时是这样。经过一些研究,我发现REST API与以前的API不同。在您实际支付之前,您必须通过API生成自定义链接,并将用户重定向到该链接。在用户确认购买后,您必须通过他们的API手动执行付款,否则通过此响应发送的任何款项也将包含客户信息。是的。那很有用。所以你必须是处理客户贝宝付款的人?我希望有一种方法仅仅根据事务ID号检索事务信息。
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
)