2016-06-23 4 views
0

Как видно из названия, я не могу сохранить свой идентификатор клиента в своей базе данных, используя Stripe. Я создаю регистрационную форму, поэтому, когда пользователь подписывается на сайт, у них будет идентификатор клиента Stripe, поэтому могут быть сделаны платежи в будущем. Однако, когда пользователь регистрируется, все данные будут сохранены в базе данных, кроме идентификатора клиента.Невозможно сохранить идентификатор клиента полосы.

 // Create a Customer 
     $customer = \Stripe\Customer::create(array(
      "source" => $token, 
      "description" => "Example customer") 
     ); 
     echo "customer ID is ".$customer->id; 
     $newCustomer = $customer->id; 
     // Charge the Customer instead of the card 
     \Stripe\Charge::create(array(
      "amount" => 250, // amount in cents, again 
      "currency" => "gbp", 
      "customer" => $customer->id) 
     ); 
} 
?> 
    <div class="container"> 
     <div class="login"> 
     <form action="register.php" method="POST"> 
     <div class="col-md-6 login-do"> 
      <div> 
     <select name="title" type="text" class="dropdown-select"> 
      <option value="">Title</option> 
      <option value="Mr">Mr</option> 
      <option value="Miss">Miss</option> 
      <option value="Mrs">Mrs</option> 
      <option value="Ms">Ms</option> 
     </select> 
    </div> 

     <div class="login-mail"> 
     <input name="first_name" type="text" placeholder="First Name" required="" oninvalid="this.setCustomValidity('Please Enter your first name')"/> 
     <i class="glyphicon glyphicon-user"></i> 
     </div> 
     <div class="login-mail"> 
     <input name="last_name" type="text" placeholder="Last Name" required="" oninvalid="this.setCustomValidity('Please Enter your last name')" /> 
     </div> 
     <div class="login-mail"> 
      <input name="email" type="text" placeholder="E-Mail" /> 
      <i class="glyphicon glyphicon-envelope"></i> 
     </div> 
     <div class="login-mail"> 
      <input name="pass" type="text" type="password" placeholder="Password" /> 
      <i class="glyphicon glyphicon-lock"></i> 
     </div> 
     <div class="login-mail"> 
      <input name="retyped_password" type="text" type="password" placeholder="Retype Password" /> 
     </div> 

     <a class="news-letter " href="#"> 
    <label class="checkbox1"><input type="checkbox" name="checkbox" ><i> </i>Forget Password</label> 
    </a> 
<label class="hvr-skew-backward"> 
<input type="submit" name="submit" value="Submit"> 
</label> 

</div> 
<div class="col-md-6 login-right"> 
<a href="login.html" class="hvr-skew-backward">Login</a> 

</div> 

<div class="clearfix"> </div> 
</form> 
</div> 

</div> 
     <?php 
     if(isset($_POST['submit'])){ 
     $title = $_POST['title']; 
     $first_name = $_POST['first_name']; 
     $last_name = $_POST['last_name']; 
     $email = $_POST['email']; 
     $password = $_POST['pass']; 
     $retyped_password = $_POST['retyped_password']; 
     $newCustomer = $_POST['newCus']; 
+0

Где '$ _POST [ 'newCus']' взялось? В форме нет такого поля. – Barmar

+0

Должен ли он содержать идентификатор клиента? Поместите его в скрытое поле. – Barmar

ответ

0

Откуда вы ожидаете, когда ID будет? Вы создаете клиента, но не включаете их ID в верхней части кода. Если он не будет там включен?

$customer = \Stripe\Customer::create(array(
    "source" => $token, 
    "description" => "Example customer", 
    "id" => "123") 
); 
+0

Сервер Stripe генерирует идентификатор, когда вы вызываете API 'create'. – Barmar

+0

Да, я понял, что - но вы, кажется, не включаете его в массив при создании нового массива $ customer, но затем вы вызываете $ curstomer aray, чтобы использовать его позже. а также в php-коде в конце вы не публикуете его, но это может быть потому, что вы показываете только часть этого кода. – gavgrif

+0

Как вы можете поместить его в звонок? Вы не знаете идентификатор, который Stripe присваивает клиенту до тех пор, пока вы не сделаете звонок. Это строка типа 'cus_5XoGngLVDGWhvH', которая возвращается как часть возвращаемых данных. – Barmar

0

Логика должна быть что-то вроде этого (только псевдо-код):

  1. Посмотрите пользователя в базе данных пользователя.
  2. Если у пользователя уже есть сохраненный идентификатор клиента Stripe, установите из него $ customer_id.
  3. Если нет:
    1. Вызов \Stripe\Customer::create()
    2. Обновление базы данных пользователей, чтобы добавить идентификатор клиента.
    3. Задайте $ customer_id из возвращаемого объекта клиента.
  4. Создать заряд, используя $ customer_id
Смежные вопросы