2015-07-13 2 views
2

Я получаю это сообщение об ошибке, когда я нажимаю кнопку отправки платежа.Я получаю сообщение об ошибке «Класс» Stripe «не найден»

Fatal error: Class 'Stripe' not found in /opt/lampp/htdocs/stripe-php/stripe_api.php on line 10

Но я включаю файл Stripe.php в свой код внутри require 'init.php'. Так почему я получаю такую ​​ошибку, пожалуйста, предложите мне?

Мой код здесь

stripe_api.php : 

<?php 

    //require(dirname(__FILE__) . '/init.php'); 
    require 'init.php'; 

    $error = ''; 
    $success = ''; 

    if ($_POST) { 
    Stripe::setApiKey("pk_test_knsJUL8pXsPgKOPIrVtleSab"); 

    try { 
     if (!isset($_POST['stripeToken'])) 
      throw new Exception("The Stripe Token was not generated correctly"); 
     Stripe_Charge::create(array("amount" => 5, 
           "currency" => "usd", 
           "card" => $_POST['stripeToken'])); 
      $success = 'Your payment was successful.'; 
    } 
    catch (Exception $e) { 
     $error = $e->getMessage(); 
    } 
} 

код здесь

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
    <title>payment</title> 
    <script type="text/javascript" src="https://js.stripe.com/v1/">    </script> 
     <!-- jQuery is used only for this example; it isn't required to use Stripe --> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">  </script> 
    <script type="text/javascript"> 
     // this identifies your website in the createToken call below 
     Stripe.setPublishableKey('pk_test_knsJUL8pXsPgKOPIrVtleSab'); 

     function stripeResponseHandler(status, response) { 
      if (response.error) { 
       // re-enable the submit button 
       $('.submit-button').removeAttr("disabled"); 
       // show the errors on the form 
       $(".payment-errors").html(response.error.message); 
      } else { 
       var form$ = $("#payment-form"); 
       // token contains id, last4, and card type 
       var token = response['id']; 
       // insert the token into the form so it gets submitted to the server 
       form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />"); 
       // and submit 
       form$.get(0).submit(); 
      } 
     } 

     $(document).ready(function() { 
      $("#payment-form").submit(function(event) { 
       // disable the submit button to prevent repeated clicks 
       $('.submit-button').attr("disabled", "disabled"); 

       // createToken returns immediately - the supplied callback submits the form if there are no errors 
       Stripe.createToken({ 
        number: $('.card-number').val(), 
        cvc: $('.card-cvc').val(), 
        exp_month: $('.card-expiry-month').val(), 
        exp_year: $('.card-expiry-year').val() 
       }, stripeResponseHandler); 
       return false; // submit from callback 
      }); 
     }); 
    </script> 
    </head> 
<body> 
    <h1>Charge $10 with Stripe</h1> 
    <!-- to display errors returned by createToken --> 
    <span class="payment-errors"><?= $error; ?></span> 
    <span class="payment-success"><?= $success; ?></span> 
    <form action="" method="POST" id="payment-form"> 
     <div class="form-row"> 
      <label>Card Number</label> 
      <input type="text" size="20" autocomplete="off" class="card-number" /> 
     </div> 
     <div class="form-row"> 
      <label>CVC</label> 
      <input type="text" size="4" autocomplete="off" class="card-cvc" /> 
     </div> 
     <div class="form-row"> 
      <label>Expiration (MM/YYYY)</label> 
      <input type="text" size="2" class="card-expiry-month"/> 
      <span>/</span> 
      <input type="text" size="4" class="card-expiry-year"/> 
     </div> 
     <button type="submit" class="submit-button">Submit Payment</button> 
    </form> 
</body> 

content of init.php file

code here 
    <?php 

    // Stripe singleton 
    require(dirname(__FILE__) . '/lib/Stripe.php'); 

    // Utilities 
    require(dirname(__FILE__) . '/lib/Util/RequestOptions.php'); 
    require(dirname(__FILE__) . '/lib/Util/Set.php'); 
    require(dirname(__FILE__) . '/lib/Util/Util.php'); 

    // HttpClient 
    require(dirname(__FILE__) . '/lib/HttpClient/ClientInterface.php'); 
    require(dirname(__FILE__) . '/lib/HttpClient/CurlClient.php'); 

    // Errors 
    require(dirname(__FILE__) . '/lib/Error/Base.php'); 
    require(dirname(__FILE__) . '/lib/Error/Api.php'); 
    require(dirname(__FILE__) . '/lib/Error/ApiConnection.php'); 
    require(dirname(__FILE__) . '/lib/Error/Authentication.php'); 
    require(dirname(__FILE__) . '/lib/Error/Card.php'); 
    require(dirname(__FILE__) . '/lib/Error/InvalidRequest.php'); 
    require(dirname(__FILE__) . '/lib/Error/RateLimit.php'); 

    // Plumbing 
    require(dirname(__FILE__) . '/lib/Object.php'); 
    require(dirname(__FILE__) . '/lib/ApiRequestor.php'); 
    require(dirname(__FILE__) . '/lib/ApiResource.php'); 
    require(dirname(__FILE__) . '/lib/SingletonApiResource.php'); 
    require(dirname(__FILE__) . '/lib/AttachedObject.php'); 
    require(dirname(__FILE__) . '/lib/ExternalAccount.php'); 

    // Stripe API Resources 
    require(dirname(__FILE__) . '/lib/Account.php'); 
    require(dirname(__FILE__) . '/lib/AlipayAccount.php'); 
    require(dirname(__FILE__) . '/lib/ApplicationFee.php'); 
    require(dirname(__FILE__) . '/lib/ApplicationFeeRefund.php'); 
    require(dirname(__FILE__) . '/lib/Balance.php'); 
    require(dirname(__FILE__) . '/lib/BalanceTransaction.php'); 
    require(dirname(__FILE__) . '/lib/BankAccount.php'); 
    require(dirname(__FILE__) . '/lib/BitcoinReceiver.php'); 
    require(dirname(__FILE__) . '/lib/BitcoinTransaction.php'); 
    require(dirname(__FILE__) . '/lib/Card.php'); 
    require(dirname(__FILE__) . '/lib/Charge.php'); 
    require(dirname(__FILE__) . '/lib/Collection.php'); 
    require(dirname(__FILE__) . '/lib/Coupon.php'); 
    require(dirname(__FILE__) . '/lib/Customer.php'); 
    require(dirname(__FILE__) . '/lib/Event.php'); 
    require(dirname(__FILE__) . '/lib/FileUpload.php'); 
    require(dirname(__FILE__) . '/lib/Invoice.php'); 
    require(dirname(__FILE__) . '/lib/InvoiceItem.php'); 
    require(dirname(__FILE__) . '/lib/Plan.php'); 
    require(dirname(__FILE__) . '/lib/Recipient.php'); 
    require(dirname(__FILE__) . '/lib/Refund.php'); 
    require(dirname(__FILE__) . '/lib/Subscription.php'); 
    require(dirname(__FILE__) . '/lib/Token.php'); 
    require(dirname(__FILE__) . '/lib/Transfer.php'); 
    require(dirname(__FILE__) . '/lib/TransferReversal.php'); 
?> 
+1

Вы можете разместить содержимое init.php? –

+0

** Содержимое файла init.php ** –

+0

не может видеть содержимое файла init.php, внесите свой вопрос –

ответ

2

PHP не может найти Stripe класс.

Возможные причины:

  1. Вы не включили его. Для загрузки класса необходимо использовать оператор include или require или использовать автозагрузчик. В любом случае, этот код, вероятно, войдет в ваш init.php, который вы нам не показали, поэтому я не могу быть уверен в том, что вы сделали до сих пор.

  2. я знаю, что классы Stripe в одном пространстве имен, так что если вы планируете ссылаться на него непосредственно, как Stripe, то вам необходимо иметь use заявление в верхней части вашего кода, чтобы определить ссылку.

    Что-то вроде этого:

    use Stripe\Stripe; 
    use Stripe\Charge; 
    

    Вы должны были бы эти строки в каждом файле кода, где вы используете ссылки на названия класса нашивки. Кроме того, ссылайтесь на них в своем коде с полным пространством имён.

    например \Stripe\Stripe::setApiKey('....');

+0

спасибо !!! @ Симба –

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