致命错误:在 sdk Paypal 中找不到类“Paypal\Api\Payer”
Posted
技术标签:
【中文标题】致命错误:在 sdk Paypal 中找不到类“Paypal\\Api\\Payer”【英文标题】:Fatal error: Class 'Paypal\Api\Payer' not found en sdk Paypal致命错误:在 sdk Paypal 中找不到类“Paypal\Api\Payer” 【发布时间】:2017-01-16 23:11:44 【问题描述】:我用 composer 安装了 PayPal SDK,但我的 php 文件 CHECKOUT.php 错误是:
致命错误:在 'Paypal\Api\Payer' 类中找不到 C:\xampp\htdocs\pagos\checkout.php 第 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'
]);
【问题讨论】:
将require __DIR__ . '/vendor/autoload.php';
添加到checkout.php
的顶部可能会解决问题。请阅读***.com/q/36577020/934739 并了解include()
和require()
的工作原理,以及Composer Autoloading 的工作原理。
没用 :( 我不明白为什么?vendor/autoload.php 工作正常,错误只在 checkout.php 这个 php 文件不读取命名空间。
Paypal\Api\Payer
不存在。也许它的自动加载器没有定义或损坏。您正在使用github.com/paypal/PayPal-PHP-SDK?显示您的composer.json
文件,您是否尝试过重新生成作曲家自动加载? SDK 似乎使用 PSR-0。检查包的 PSR-0 是否由生成的 composer 自动加载器定义。提示:vendor/composer/*
.
我正在使用 composer 的 PayPal sdk。我的 json 是: "requiere":"paypal-sdk-php":"*" 对不起我从手机上写的“代码”
【参考方案1】:
代替:use Paypal\Api\Payer;
use Paypal\Api\Item;
改成:use PayPal\Api\Payer;
use PayPal\Api\Item;
只需将“PayPal”一词的第二个“P”大写即可。希望它有效:)
【讨论】:
谢谢。多么糟糕的 API,他们甚至连公司的名字都不能一致!【参考方案2】:我也遇到过这个问题。
我的解决方案是复制内部 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();
【讨论】:
以上是关于致命错误:在 sdk Paypal 中找不到类“Paypal\Api\Payer”的主要内容,如果未能解决你的问题,请参考以下文章
为啥,致命错误:在...中找不到类“PHPUnit_Framework_TestCase”?
PHP 致命错误:在中找不到类“RemoteWebElement”