Coyney
Coyney

Reputation: 107

Stripe - PHP Fatal error: Class 'Stripe\Charge' not found

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 [email protected]"
));
?>

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"

Upvotes: 9

Views: 27532

Answers (2)

CWill
CWill

Reputation: 390

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.

Upvotes: 25

Matty B
Matty B

Reputation: 1068

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';
}

Upvotes: 14

Related Questions