我们使用 SetExpressCheckout 代表第三方处理付款。即使第三方未授予我们权限,它似乎也能正常工作。我们做得对吗?
据我了解,为了处理第三方的付款,第三方应该在他们的 PayPal 帐户中转到工具 > API 凭据 > 授予 API 权限,并向我们的 API 用户名授予权限使用 Express Checkout 处理付款。但是,我们注意到两个问题:
- 如果第三方 PayPal 账户只是个人账户(而非企业账户),则没有授予 API 权限的选项
- 即使非企业第三方 PayPal 帐户未授予此权限,我们仍然可以将付款存入他们的帐户。
所以问题是,第三方是否真的有必要授予我们此权限,以便我们能够处理记入其 PayPal 帐户的付款?
如果您需要更多信息,这里是我们用来启动 SetExpressCheckout 请求的 PHP 代码的简化版本。我们使用请求的SUBJECT参数指定第三方,该参数填写第三方PayPal账户的邮箱地址。
// Parameters for SetExpressCheckout
$requestParams = array(
'METHOD' => 'SetExpressCheckout',
'VERSION' => $this->_version,
'PAYMENTREQUEST_0_DESC' => "Order number",
'PAYMENTREQUEST_0_AMT' => 10,
'PAYMENTREQUEST_0_CURRENCYCODE' = 'EUR',
'PAYMENTREQUEST_0_ITEMAMT' => 10,
'RETURNURL' => "http://SUCCESS_URL_TO_RETURN_TO",
'CANCELURL' => "http://FAILURE_URL_TO_RETURN_TO",
'USER' => 'OUR_API_USERNAME',
'PWD' => 'OUR_API_PASSWORD',
'SIGNATURE' => 'OUR_API_SIGNATURE',
'SUBJECT' => 'THIRD_PARTY_EMAIL'
);
// Options for curl
$curlOptions = array (
CURLOPT_URL => 'https://api-3t.paypal.com/nvp',
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => 'cacert.pem', //CA cert file
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($requestParams)
);
// Send the curl request
$ch = curl_init();
curl_setopt_array($ch,$curlOptions);
$response = curl_exec($ch);
// Handle possible errors
if (curl_errno($ch)) {
//Handle errors
} else {
// Handle success
}
curl_close($ch);
如果第三方帐户不需要授予我们权限,那么我们可以通过简单地询问他们的 PayPal 帐户的电子邮件地址来简化 PayPal 的设置,而不必麻烦他们授予权限。
非常感谢您提供的任何信息。
最佳答案
有两种方法可以代表他人进行 API 调用。 1) 将商家 PayPal 帐户的 API 权限授予 API 调用者或 2) 使用带有商家 PayPal 帐户电子邮件地址的 SUBJECT NVP 变量('SUBJECT' => 'THIRD_PARTY_EMAIL')。
因此,您只需使用带有商家 PayPal 帐户电子邮件地址的 SUBJECT NVP 变量即可代表商家进行 API 调用,此处商家无需向您授予 API 权限。
关于api - 第三方使用 SetExpressCheckout 是否需要 PayPal 许可?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43074481/