2017-01-09 55 views
0

我遇到了這個問題,其中的Paypal API沒有加載到我的服務器上,但它在我的本地主機上加載完全正常。我真的不知道哪裏出了問題。一切和我從本地主機上傳文件到服務器一樣,沒有什麼變化,它是完全一樣的文件。PayPal API不會在服務器上完全加載,但在本地主機上加載

使用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();

通過所有的代碼都是一樣的我的本地主機,它的工作原理在我的本地主機上。 PayPal API也會上傳到我的服務器的確切位置(/ inc/lib/paypal /)。

回答

0

自動加載包含什麼內容。嘗試使用完整路徑EX:/var/www/test.my-domain.com/public_html使用自動加載或

+0

它會加載PayPal API ......它在我的本地主機上工作 – nodeffect

+0

我試過使用你建議的完整路徑,但它仍然顯示相同的錯誤 – nodeffect

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文件。

我希望這可以幫助那些遇到同樣問題的人像我一樣。

相關問題