2014-01-04 15 views
0

Я определенно PHP noob, поэтому, пожалуйста, несите меня. Я пытаюсь создать простой способ оплаты пожертвований для моего веб-сайта по сбору средств. У меня есть опция paypal, но я хотел бы добавить опцию stripe.Проблема с установкой полос

Я использую там простой процесс проверки для сбора информации о карте и настройки маркера полосы. Я установил файл pay.php для обработки информации о карте на сервере.

<!DOCTYPE html> 
<html> 
<body> 

<?php 
// secret key 
***Stripe::setApiKey("sk_test_##########");*** 

// Get the credit card details submitted by the form 
$token = $_POST['stripeToken']; 

//Create the charge on Stripe's servers 
try { 
$charge = Stripe_Charge::create(array(
"amount" => 500, // amount in cents, again 
"currency" => "aud", 
"card" => $token, 
"description" => "[email protected]") 
); 
} catch(Stripe_CardError $e) { 
// card decline 
} 
?> 

</body> 
</html> 

Очевидно, что я использую секретный ключ, я только что заблокировал его здесь. Кажется, что все работает с формой, но когда она POSTS to pay.php, она вызывает эту ошибку.

Фатальная ошибка: Class 'Stripe' не найден в /home/munkeychunk/public_html/pay.php на линии 8

линии 8, как отмечено выше, является ключевым компонентом секретный ключ/API. Как я уже сказал, я немного начинаю PHP, и я не уверен, как или как установить класс «Stripe»!

Большая часть PHP поднимается прямо из собственной документации по полосе, но она, похоже, не работает прямо из коробки. Моя попытка решить была попытка сделать 'include Stripe.php', используя внешнюю страницу stripe.php, которая используется, если вы обрабатываете платежи, используя javascript/jquery, а не опцию проверки полосы.

Любая помощь будет принята с благодарностью - будьте любезны с вашими комментариями!

+0

'include Stripe.php' должно быть' include 'Stripe.php''. –

+0

Это так же просто, как отсутствующий/нераспакованный файл на сервере? – munkeychunks

+0

Спасибо - у меня есть «Stripe.php» в фактическом документе - я глупо не ввел его прямо в мой вопрос. Сожалею. – munkeychunks

ответ

0

Я предполагаю, что вы не включили библиотеку Stripe, как указано в документации по полосе. Так оно и должно быть, как

<!DOCTYPE html> 
<html> 
<body> 

<?php 
//Include stripe library first before doing anything related to stripe here 
require_once('./lib/Stripe.php'); 
// secret key 
***Stripe::setApiKey("sk_test_##########");*** 

// Get the credit card details submitted by the form 
$token = $_POST['stripeToken']; 

//Create the charge on Stripe's servers 
try { 
$charge = Stripe_Charge::create(array(
"amount" => 500, // amount in cents, again 
"currency" => "aud", 
"card" => $token, 
"description" => "[email protected]") 
); 
} catch(Stripe_CardError $e) { 
// card decline 
} 
?> 

</body> 
</html> 

Документация: https://stripe.com/docs/checkout/guides/php

Примечание: PHP> = 5.2 среда требуется

Библиотека загрузок: https://code.stripe.com/stripe-php-latest.zip

+0

Спасибо Абхишек. Я думаю, что вызов require_once работал там, где его не было - страница перестала бы загружаться, где бы я не включил php. – munkeychunks

+0

Рад, что это помогло :) – Abhishek

+0

У меня все еще есть проблема. Я отредактирую свой оригинальный вопрос. – munkeychunks

1

У меня была такая же проблема, но тогда я installed Stripe using Composer. Тогда в моем PHP файл я require_once файл autoload.php и который, казалось, тянуть в библиотеке полоской

<?php 
 
// Set your secret key: remember to change this to your live secret key in production 
 
// See your keys here https://dashboard.stripe.com/account 
 
require_once('/home2/username/vendor/autoload.php'); 
 
\Stripe\Stripe::setApiKey("sk_test_########"); 
 

 
// Get the credit card details submitted by the form 
 
$token = $_POST['stripeToken']; 
 

 
// Create the charge on Stripe's servers - this will charge the user's card 
 
try { 
 
$charge = \Stripe\Charge::create(array(
 
    "amount" => 1000, // amount in cents, again 
 
    "currency" => "usd", 
 
    "source" => $token, 
 
    "description" => "[email protected]") 
 
); 
 
} catch(\Stripe\Error\Card $e) { 
 
    // The card has been declined 
 
}; 
 

 
?>

0

Для тех из вас, кто все еще получаю сообщение об ошибке

Class 'Stripe' not found in /home/munkeychunk/public_html/pay.php on line 8

Я с тобой. Я обошел эту проблему, выполнив require_once для всех необходимых файлов Stripe в/lib /. Заказать вопросы, вот что работал для меня

require_once ('./stripe-php-2.1.1/lib/Stripe.php') ; 
require_once ('./stripe-php-2.1.1/lib/Util/Set.php') ; 
require_once ('./stripe-php-2.1.1/lib/Util/RequestOptions.php') ; 
require_once ('./stripe-php-2.1.1/lib/Util/Util.php') ; 
require_once ('./stripe-php-2.1.1/lib/Error/Base.php') ; 
require_once ('./stripe-php-2.1.1/lib/Error/InvalidRequest.php') ; 
require_once ('./stripe-php-2.1.1/lib/Object.php') ; 
require_once ('./stripe-php-2.1.1/lib/ApiRequestor.php') ; 
require_once ('./stripe-php-2.1.1/lib/ApiResource.php') ; 
require_once ('./stripe-php-2.1.1/lib/SingletonApiResource.php') ; 
require_once ('./stripe-php-2.1.1/lib/Charge.php') ; 

$files = glob('./stripe-php-2.1.1/lib/*.php'); 
foreach ($files as $file) { 
    require_once($file); 
} 

$files = glob('./stripe-php-2.1.1/lib/Error/*.php'); 
foreach ($files as $file) { 
    require_once($file); 
} 

$files = glob('./stripe-php-2.1.1/lib/Util/*.php'); 
foreach ($files as $file) { 
    require_once($file); 
} 
1
require_once('/home2/username/vendor/autoload.php'); 

Вместо autoload.php использования init.php

В зависимости от того, где ваши нашивки файлы, вы, возможно, придется изменить операторы пути на каждой строке init.php

Использование autoload.php предназначено для использования Stripe с Composer. Если вы хотите использовать Stripe с ручной установкой, используйте init.php, где разработчики Stripe предоставили все функции, содержащиеся в ответе выше.

+0

Вы, сэр, спасли мою жизнь! Еще больше походило на то, что я действительно счастлив в 4 часа ночи после битвы. Я еще не человек композитора, и я загружал Stripe.php, даже не думая о init.php. Возможно, это не то, что нужно OP, но это определенно решение, которое мне нужно слишком долго. Приветствия! – acarito

Смежные вопросы