我已经看过Stack Overflow上这个问题的几个答案,但是解决方案并没有对我有用。我在测试Stripe API时收到以下错误
未找到类'Stripe \ StripeCharge'
这是我正在使用的代码:
require_once( '应用程序/的init.php');
\Stripe\Stripe::setApiKey($stripe['private']);
if(isset($_POST['stripeToken'])){
$token = $_POST['stripeToken'];
try {
\Stripe\StripeCharge::create(array(
"amount" => 2000,
"currency" => "gbp",
"card" => "$token",
"description" => $Email
));
} catch(Stripe_CardError $e){
//Error Payment
}
}
echo $_POST['stripeToken'];
/* Stripe Vairables */
$stripe = [
'publishable' => 'hidden',
'private' => 'hidden'
];
我没有使用composer来提取它,因为它适用于“init”文件的包含(据说)。任何帮助都会很棒!
答案 0 :(得分:1)
该类的正确名称为\Stripe\Charge
,而非\Stripe\StripeCharge
。您可以在API文档中查看费用创建请求的示例:https://stripe.com/docs/api/php#create_charge
此外,card
参数已在2015-02-18 API版本中重命名为source
。
另一个问题是您在最后为$stripe
数组分配了API密钥。您需要先分配它,然后才能在\Stripe\Stripe::setApiKey()
的调用中使用它。
还有其他一些小错误。以下是您的代码的更正版本:
require_once('app/init.php');
/* Stripe variables */
$stripe = [
'publishable' => 'hidden',
'private' => 'hidden'
];
\Stripe\Stripe::setApiKey($stripe['private']);
if(isset($_POST['stripeToken'])) {
$token = $_POST['stripeToken'];
$email = $_POST['stripeEmail'];
try {
$charge = \Stripe\Charge::create(array(
"amount" => 2000,
"currency" => "gbp",
"source" => $token,
"description" => $email
));
// echo $charge->id;
} catch(\Stripe\Error\Card $e) {
// Card error
}
}