Stripe - PHP Fatal error: Class 'Stripe\Charge

2019-06-16 21:35发布

I've been following the Stripe documentation and I am unable to create a "charge".

Charge.php

require('/var/www/stripe-php-2.1.1/lib/Stripe.php');
\Stripe\Stripe::setApiKey("KEY_HERE");

\Stripe\Charge::create(array(
  "amount" => 400,
  "currency" => "usd",
  "source" => "TOKEN_HERE", // obtained with Stripe.js
  "description" => "Charge for test@example.com"
));
?>

I'm able to process the first command "\Stripe\Stripe::setApiKey("KEY_HERE");" but receive an error when processing the next and receive the following error: "Class 'Stripe\Charge' not found in /var/www/charge.php"

标签: php class
2条回答
男人必须洒脱
2楼-- · 2019-06-16 21:52

If you don't use composer to install the Stripe library you will need to manually include all of the Stripe classes.

Composer is the preferred way as it will handle the autoloading of classes. Here is a sample composer file:

{
  "require": {
    "stripe/stripe-php": "2.*"
  }
}

And then from a command line you would need to run composer update while in the directory for your project. Afterwards, just add require 'vendor/autoload.php'; to the top of your php file.

Otherwise, replace require('/var/www/stripe-php-2.1.1/lib/Stripe.php');with this code to include all of the classes:

$stripeClassesDir = __DIR__ . '/stripe-php-2.1.1/lib/';
$stripeUtilDir    = $stripeClassesDir . 'Util/';
$stripeErrorDir   = $stripeClassesDir . 'Error/';

set_include_path($stripeClassesDir . PATH_SEPARATOR . $stripeUtilDir . PATH_SEPARATOR . $stripeErrorDir);

function __autoload($class)
{
    $parts = explode('\\', $class);
    require end($parts) . '.php';
}
查看更多
霸刀☆藐视天下
3楼-- · 2019-06-16 22:00

Here is an updated answer to this question.

From Dana at Stripe:

If you prefer not to use Composer, our latest PHP bindings (>=2.x) include a init.php file that you can add to your project. Download and unzip the folder whereever you'd like, then include this init.php at the top of your scripts you use to communicate with the Stripe API, changing the path to the location of this file. Just like this: require_once('/path/to/stripe-php/init.php')

And that's what worked for me.

查看更多
登录 后发表回答