2015-08-15 2 views
0

Я создал очень простой веб-сайт, у которого есть стандартная проверка полосы, которая отправляется на загрузочную страницу. Я следил за инструкциями PHP на веб-сайте Stripe, и я совершенно смущен, почему он не работает. Страница Checkout работает отлично:Stripe not charge in PHP

<div class="container"> 
      <form action="charge.php" method="POST"> 
       <h6> amount </h6> 
       <input type="text" name="amount" /> 
       <h6> test-info </h6> 
       <br /> <input type="text" name="pubkey" /> 
       <script 
        src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
        data-key="pk_test_NC2CbWJLgm82SMzbxRX4JBLo" 
        data-amount="2000" 
        data-name="Demo Site" 
        data-description="2 widgets ($20.00)" 
        data-image="/128x128.png" 
        data-bitcoin="true"> 
       </script> 
      </form> 
     </div> 

Всех входы от проверки, таких как электронная почта, маркер и Публичные переносятся на страницу charge.php отлично. In charge.php:

<?php 
    require_once('config.php'); 

    $token = $_POST ['stripeToken']; 
    $email = $_POST['stripeEmail']; 
    $pubkey = $_POST['pubkey']; 
    $amount = $_POST['amount']; 
    ?> 
    <h3> Public key: <?php echo $pubkey; ?> </h3> 
    <h3> Token: <?php echo $token; ?> </h3> 
    <h3> Amount: <?php echo $amount; ?> </h3> 
    <h3> Email: <?php echo $email; ?> </h3> 

    <?php 
     try { 
      $charge = \Stripe\Charge::create(array(
       "amount" => 1000, // amount in cents, again 
       "currency" => "gbp", 
       "source" => $token, 
       "description" => "Example charge" 
      )); 
      } catch(\Stripe\Error\Card $e) { 

      } 


    ?> 

    <h6> You've been charged </h6> 

все переменные из представления формы распечатываются. Однако по какой-то причине фактическая зарядка не работает, и заголовок (т. Е. Вы заряжены) не распечатывается. Токен правильно, поэтому я действительно не уверен, как это возможно, чтобы он не заряжался. Почему я ошибаюсь и как я могу отладить это, чтобы узнать?

Config.php

<?php 
    require_once('vendor/autoload.php'); 
    $stripe = array(
     "secret_key" => "sk_test_**********************", 
     "publishable_key" => "pk_test_NC2CbWJLgm82SMzbxRX4JBLo" 
    ); 
    \Stripe\Stripe::setApiKey($stripe['secret_key']); 
    echo 'this is from config.php'; 

?> 
+0

Вы понимаете, что данные в вашей форме отличаются от данных вашего PHP try/catch. Вероятно, это различие заключается в том, что Stripe не завершает транзакцию. – Martin

+1

Кроме того, что делает вывод ошибки '$ e'? Это скажет вам, почему попытка try/catch не удалась. – Martin

+0

Данные в форме предназначены только для показа, на самом деле это не имеет значения, насколько мне известно (теперь, похоже, они работают иначе). – user2850249

ответ

0

Кажется, проблема была данных Bitcoin = "истина". Избавление от этого означало, что платежи прошли.

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