Curl пытается получить свойство access_token необъекта - PullRequest
1 голос
/ 20 апреля 2020

Я работаю на сайте электронной коммерции, который использует 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;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...