我遇到这个问题,而Paypal API没有在我的服务器上加载,但它在我的localhost上加载完全正常。我真的不知道它出了什么问题。一切都与我从本地主机上传文件到服务器一样,没有任何变化,而且文件完全相同。
使用Paypal REST API进行付款时,我的服务器上出现此错误,但我的本地主机上没有此错误。
Fatal error: Class 'PayPal\Api\item' not found in /var/www/test.my-domain.com/public_html/controllers/credits.php on line 24
我的代码如下:
require_once('./inc/lib/paypal/autoload.php');
$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
'hidden-clientid',// ClientID
'hidden-secret'// ClientSecret
)
);
if (isset($_POST['checkout'])) {
$payer = new \PayPal\Api\Payer();
$payer->setPaymentMethod('paypal');
$item = new \PayPal\Api\item();
$item->setName('Top Up')
->setDescription('My account.')
->setCurrency('USD')
->setQuantity(1)
->setTax(0)
->setPrice(10);
$itemList = new \PayPal\Api\itemList();
$itemList->setItems(array($item));
$details = new \PayPal\Api\details();
$details->setShipping("0")
->setTax("0")
->setSubtotal(10);
$amount = new \PayPal\Api\amount();
$amount->setCurrency("USD")
->setTotal(10)
->setDetails($details);
$transaction = new \PayPal\Api\transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Top up account")
->setInvoiceNumber(uniqid());
$redirectUrls = new \PayPal\Api\RedirectUrls();
$redirectUrls->setReturnUrl("http://".$_SERVER["HTTP_HOST"].$web_path."credits/done?status=success");
$redirectUrls->setCancelUrl("http://".$_SERVER["HTTP_HOST"].$web_path."credits/done?status=cancel");
$payment = new \PayPal\Api\Payment();
$payment->setIntent('sale');
$payment->setPayer($payer);
$payment->setRedirectUrls($redirectUrls);
$payment->setTransactions(array($transaction));
$response = $payment->create($apiContext);
$redirectUrl = $response->links[1]->href;
header( "Location: $redirectUrl" );
奇怪的部分是它经过$payer->setPaymentMethod('paypal');
但它没有通过$item = new \PayPal\Api\item();
所有代码都与我的localhost相同,并且可以在我的localhost上运行。 Paypal API也会在我的服务器上的确切位置上传(/ inc / lib / paypal /)。
答案 0 :(得分:0)
自动加载包含什么。使用自动加载或
时,请尝试使用完整路径EX:/var/www/test.my-domain.com/public_html答案 1 :(得分:0)
我通过逐个包含API文件解决了这个问题。
我在下面列出了以下几行:
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/Item.php');
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/ItemList.php');
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/Details.php');
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/Amount.php');
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/Transaction.php');
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/RedirectUrls.php');
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/Payment.php');
require_once('./inc/lib/paypal/paypal/rest-api-sdk-php/lib/PayPal/Api/PaymentExecution.php');
这解决了这个问题。我认为这不是最好的解决方案,但它确实有效。我不知道为什么我仍然需要逐个包含这些内容,否则autoload.php应该包含所有这些API文件。
我希望这有助于遇到像我一样遇到同样问题的其他人。