【问题标题】: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 的顶部可能会解决问题。请阅读stackoverflow.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":"*"}} 对不起我从手机上写的“代码”

标签: php paypal paypal-sandbox paypal-rest-sdk


【解决方案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();
    }

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 2016-10-23
    • 1970-01-01
    • 2023-04-10
    • 2018-07-18
    • 2015-07-22
    • 2018-08-05
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多