2016-09-08 4 views
1
SDK

Я установил PayPal SDK с композитором, но мой PHP файл CHECKOUT.php ошибка:Фатальная ошибка: Класс 'Paypal Api Плательщик' не найден ан Paypal

Fatal error: Class 'Paypal\Api\Payer' not found in C:\xampp\htdocs\pagos\checkout.php on line 23

checkout.php:

<?php 
require ("start.php"); 

use Paypal\Api\Payer; 
use Paypal\Api\Item; 

$payer = new Payer(); 
$payer->setPaymentMethod("paypal"); 

$item = new Item(); 
$item->setName($descripcion) 
    ->setCurrency('MXN') 
    ->setQuantity(1) 
    ->setPrice($precio); 
$itemList = new ItemList(); 
$itemList->setItems([$item]); 

start.php

<?php 
// 1. Autoload the SDK Package. This will include all the files and classes to your autoloader 
// Used for composer based installation 
require __DIR__ . '/vendor/autoload.php'; 
// Use below for direct download installation 
// require __DIR__ . '/PayPal-PHP-SDK/autoload.php'; 

$apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
     'ashdjkhaskdjhalksdfjhaglskjdfhlasdfasdfsdfgh',  // ClientID 
     'ejkhsdkjhakjdhakjshdkjashdkjashdkjaskjdhaskjh'  // ClientSecret 
    ) 
); 

$apiContext->setConfig([ 
'mode'=>'sandbox', 
'http.ConnectionTimeOut'=>30, 
'log.LogEnabled'=>false, 
'log.FileName'=>'', 
'log.LogLevel'=>'FINE', 
'validation.level'=>'log' 
]); 
+0

Добавление 'require __DIR__. '/vendor/autoload.php'; 'в верхней части' checkout.php', вероятно, решит проблему. Прочитайте http://stackoverflow.com/q/36577020/934739 и поймите, как работают функции 'include()' и 'require()', а также как [Автозагрузка композитора] (https://getcomposer.org/doc/01 -basic-usage.md # автозагрузка). –

+0

Не работает :(Я не понимаю, почему? Производитель/autoload.php работает нормально, ошибка только в checkout.php этот файл php не читает пространства имен. – Alexcode89

+0

'Paypal \ Api \ Payer' не существует. Возможно, автозагрузчик для него не определен или не испорчен. Вы используете https://github.com/paypal/PayPal-PHP-SDK? Покажите свой файл 'composer.json', попробовали ли вы восстановить автозагрузку композитора? [[ SDK] (https://github.com/paypal/PayPal-PHP-SDK/blob/master/composer.json), похоже, использует PSR-0. Убедитесь, что PSR-0 для пакета определяется сгенерированными автозагрузчиками композиторов Подсказка: 'vendor/composer/*'. –

ответ

1

Вместо:
use Paypal\Api\Payer;
use Paypal\Api\Item;

Изменить его:
use PayPal\Api\Payer;
use PayPal\Api\Item;

Просто заглавной второй "P" на слово "PayPal". Надеюсь, он работает :)

0

Я тоже сталкиваюсь с этой проблемой.

Мое решение было скопировать внутреннюю lib/PayPal папку,

от установки композитора или от прямого Загруженные файлы пакета в некоторый каталог в src, например, src/Components.

Когда оная требуется PayPal папка к композитору:

"psr-4" : { 

    "PayPal\\" : "src/Components/PayPal/", 
    "PayPal\\Api\\" : "src/Components/PayPal/Api/", 
    "PayPal\\Rest\\" : "src/Components/PayPal/Rest/", 
    "PayPal\\Auth\\" : "src/Components/PayPal/Auth/", 
    "PayPal\\Exception\\" : "src/Components/PayPal/Exception/" 
} 

запустить из командной строки composer dump-autoload.

Когда вы можете использовать классы во всем своем проекте.

use PayPal\Rest\ApiContext; 
use PayPal\Auth\OAuthTokenCredential; 
use PayPal\Api\Payer; 
use PayPal\Api\Amount; 
use PayPal\Api\Transaction; 
use PayPal\Api\RedirectUrls; 
use PayPal\Api\Payment; 
use PayPal\Exception\PayPalConnectionException; 



if (isset($_POST['ppalBtn'])) { 

    $apiContext = new ApiContext(
      new OAuthTokenCredential(
    'ClientID',  
    'ClientSecret'  
      ) 
    ); 



    $payer = new Payer(); 
    $payer->setPaymentMethod('paypal'); 

    $amount = new Amount(); 
    $amount->setTotal('1.00'); 
    $amount->setCurrency('USD'); 

    $transaction = new Transaction(); 
    $transaction->setAmount($amount); 

    $redirectUrls = new RedirectUrls(); 
    $redirectUrls->setReturnUrl("https://domain/redirect.php") 
     ->setCancelUrl("https://dcancel.php"); 

    $payment = new Payment(); 
    $payment->setIntent('sale') 
     ->setPayer($payer) 
     ->setTransactions(array($transaction)) 
     ->setRedirectUrls($redirectUrls); 

    try { 
     $payment->create($apiContext); 
     echo $payment; 

     echo "\n\nRedirect user to approval_url: " . $payment->getApprovalLink() . "\n"; 
    } 
    catch (\PayPal\Exception\PayPalConnectionException $ex) { 
     // This will print the detailed information on the exception. 
     //REALLY HELPFUL FOR DEBUGGING 
     echo $ex->getData(); 
    }