2015-04-18 6 views
0

У меня проблема с Stripe. Все работает нормально, когда я пишу в Cardnumber, CVC и т. Д.Stripe Custom Field

Но мне нужно добавить настраиваемое поле, чтобы оно могло работать, когда я пишу $ _POST ['ImeiNum'] в файле charge.php.

Вот мой код HTML и JQuery (index.html)

<script type="text/javascript"> 
     // this identifies your website in the createToken call below 
     Stripe.setPublishableKey('pk_test_d34534'); 


     function processStripeResponse(status, response){ 
      var form = $('#payment-form<?php echo $row['product_id']; ?>'); 

      if(response.error){ 
      form.find('.errors').text(response.error.message); 
      form.find('button').prop('disabled', false); 
      }else{ 
      var token = response.id; 
      form.append($('<input type="hidden" name="stripeToken" />').val(token)); 
      form.get(0).submit(); 
      } 
     }; 

     $(function(){ 
      $('#payment-form<?php echo $row['product_id']; ?>').submit(function(event) { 
      var form = $(this); 
      form.find('button').prop('disabled', true); 

      Stripe.card.createToken(form, processStripeResponse); 

      return false; 
      }); 
     }); 
    </script> 


    <form action="charge.php" method="POST" id="payment-form<?php echo $row['product_id']; ?>"> 


     <input type="hidden" name="ImeiNum" value="0987654321"> 


      <div> 
      <label for="card-number">Card Number</label> 
      <input type="text" size="20" data-stripe="number" id="card-number" name="card-number"> 
      </div> 

      <div> 
      <label for="cvc">Security Code</label> 
      <input type="text" size="4" data-stripe="cvc" id="cvc" name="cvc"> 
      </div> 

      <div> 
      <label>Expiration (MM/YYYY)</label> 
      <input type="text" data-stripe="exp-month" name="exp-month"> 
      <span>/</span> 
      <input type="text" data-stripe="exp-year" name="exp-year"/> 
      </div> 

      <input type="submit" name="pay" value="Pay"> 

     <div class="errors"></div> 

    </form> 

И вот мой код PHP (charge.php)

<?php 
require_once('/storage/content/88/200388/vendor/autoload.php'); 

    \Stripe\Stripe::setApiKey('pk_test_APId34534'); 

    $token = $_POST['stripeToken']; 

    $IMEI = $_POST['ImeiNum']; 

    try { 
     $charge = \Stripe\Charge::create(array(
      "amount" => 1000, 
      "currency" => "usd", 
      "source" => $token, 
      "description" => $email, 
      "metadata" => array("IMEI" => $IMEI)) 
     ); 

     print_r($charge); 
    }catch(\Stripe\Error\Card $e){ 
     echo $e->getMessage(); 
    } 


?> 

Как отправить пользовательское поле to charge.php?

+0

Вопрос не ясен. Вы хотите отправить это настраиваемое поле в Stripe? или вы просто хотите прочитать это значение в charge.php? – Choma

+0

Я хочу прочитать это значение в charge.php :) Из этого Johan

+0

Ну .. также, чтобы полоса, но там, где я использую "метаданные "для – Johan

ответ

0

Ваш код выглядит правильно для меня. Я предлагаю положить линию сразу после определения $IMEI как так:

<?php echo "IMEI == ".$IMEI; ?> 

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

Бит примечание стороны - Одна вещь, которая очень важно, чтобы удалить name атрибуты из области кредитных карт в вашей форме! Точка использования Stripe.js для этого заключается в том, что ваши требования к соблюдению PCI значительно сокращаются. Наличие атрибутов name в таких полях, как cvc и card-number, приводит к тому, что по мере того, как значения будут отправлены на ваш сервер.

+0

Okey, у меня это в петле. Но когда у меня его нет, он работает так, как я хочу ... так что может быть проблема? – Johan

+0

@ Johan Я не уверен, что вы имеете в виду, извините. Если код, который у вас есть, не работает, отличается от кода в вопросе, я предлагаю обновить вопрос кодом, который демонстрирует проблему. – rfunduk