很遗憾,在撰写本文时,所有其他回答此问题的答案都是不正确的 - 如果您正在尝试更改托管按钮的价格;这就是问题所在。
以下是正确的方法:
重要提示:当您更新按钮详细信息时,它不仅会更新该用户会话中的信息,而且还会在您的PayPal帐户中更新 - 因此,新名称/价格等将影响所有尝试使用它的用户。
此外,请注意,在更改托管按钮的内容时,您需要将创建它时的所有按钮详细信息传递给它;例如,如果您省略传递项目名称,则项目名称将为空,并且PayPal将允许用户设置它。
在此基础上,我们将继续...
我个人从这个类开始:
<?php
class Paypal
{
protected $_errors = array();
protected $_credentials = array(
'USER' => 'seller_1297608781_biz_api1.lionite.com',
'PWD' => '1297608792',
'SIGNATURE' => 'A3g66.FS3NAf4mkHn3BDQdpo6JD.ACcPc4wMrInvUEqO3Uapovity47p',
);
protected $_endPoint = 'https://api-3t.sandbox.paypal.com/nvp';
protected $_version = '74.0';
public function request($method, $params = array())
{
$this->_errors = array();
if (empty($method)) {
$this->_errors = array('API method is missing');
return false;
}
$requestParams = array(
'METHOD' => $method,
'VERSION' => $this->_version
) + $this->_credentials;
$request = http_build_query($requestParams + $params);
$curlOptions = array(
CURLOPT_URL => $this->_endPoint,
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $request
);
$ch = curl_init();
curl_setopt_array($ch, $curlOptions);
$response = curl_exec($ch);
if (curl_errno($ch)) {
$this->_errors = curl_error($ch);
curl_close($ch);
return false;
} else {
curl_close($ch);
$responseArray = array();
parse_str($response, $responseArray);
return $responseArray;
}
}
}
?>
来源:https://www.smashingmagazine.com/2011/09/getting-started-with-the-paypal-api/
接着我进行了以下操作:
include(dirname(__FILE__) . '/includes/paypal.class.php');
$paypal = new Paypal();
$method = 'BMUpdateButton';
$params = array(
'HOSTEDBUTTONID' => 'your_button_id',
'BUTTONTYPE' => 'BUYNOW',
'BUTTONSUBTYPE' => 'SERVICES',
'L_BUTTONVAR0' => 'item_name=Your Description',
'L_BUTTONVAR1' => 'amount=999.00',
'L_BUTTONVAR2' => 'currency_code=AUD',
'L_BUTTONVAR3' => 'cancel_return=http://www.example.com/cancel.html',
'L_BUTTONVAR4' => 'return=http://www.example.com/success.html'
);
$result = $paypal->request($method, $params);
请注意,虽然Paypal表示
BUTTONSUBTYPE
是可选的,但如果您不包括它,可能会出现错误。
不幸的是,Paypal文档并不是很清晰,也没有提供最好的示例,因此我希望这可以为其他人节省我花费的许多时间来找出如何做到这一点。