Я работаю на сайте электронной коммерции, который использует PayPal Checkout, все работает хорошо, но для сохранения транзакции у меня есть класс PHP, который используется для обработки операций, связанных с API PayPal, но когда я запускаю код, я получаю это ошибка:
Trying to get property 'access_token' of non-object in Paypalclass.php on line 29
Пожалуйста, помогите, вот мой код:
class Paypal{
public $paypalEnv = 'production';
public $paypalURL = 'https://www.paypalobjects.com/api/checkout.js';//https://api.sandbox.paypal.com/v1/
public $paypalClientID = '##id##';
private $paypalSecret = '##secret##';
public function validate($paymentID, $paymentToken, $payerID, $productID){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->paypalURL.'oauth2/token');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $this->paypalClientID.":".$this->paypalSecret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$response = curl_exec($ch);
curl_close($ch);
if(empty($response)){
return false;
}else{
$jsonData = json_decode($response);
$curl = curl_init($this->paypalURL.'payments/payment/'.$paymentID);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $jsonData->access_token,
'Accept: application/json',
'Content-Type: application/xml'
));
$response = curl_exec($curl);
curl_close($curl);
// Transaction data
$result = json_decode($response);
return $result;
}
}
}