2014-10-15 10 views
8

Ho il check-out a strisce con php. Crea clienti e li carica. Voglio creare un modulo di donazione in cui se lo stesso cliente torna e fornisce lo stesso indirizzo email che Stripe non crea un altro cliente ma addebita al cliente esistente pagamenti aggiuntivi. È possibile? Oppure il checkout crea sempre nuovi clienti con un nuovo ID cliente?Striscia che fa più clienti con lo stesso indirizzo e-mail

Ecco il mio charge.php

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

    $token = $_POST['stripeToken']; 

    if($_POST) { 
     $error = NULL; 

     try{ 
     if(!isset($_POST['stripeToken'])) 
      throw new Exception("The Stripe Token was not generated correctly"); 
      $customer = Stripe_Customer::create(array(
       'card' => $token, 
       'email' => $_POST['stripeEmail'], 
       'description' => 'Thrive General Donor' 
      )); 

      $charge = Stripe_Charge::create(array(
       'customer' => $customer->id, 
       'amount' => $_POST['donationAmount'] * 100, 
       'currency' => 'usd' 
      )); 
     } 
     catch(Exception $e) { 
     $eror = $e->getMessage(); 
     } 


    } 

?> 
+0

puoi pubblicare parte del tuo codice? – Alex

+0

sicuro, ho appena aggiunto il charge.php –

+0

Presumibilmente è possibile cercare via e-mail ora, ma Stripe ancora stupidamente consente a più clienti con la stessa e-mail, quindi avremo bisogno di gestire i duplicati nei risultati: https://stackoverflow.com/a/40482496/470749 – Ryan

risposta

6

Sarà necessario conservare il rapporto tra indirizzo email e Stripe ID cliente in un database. Ho determinato questo guardando Stripe's API on Customers.

In primo luogo, quando si crea un nuovo cliente ogni campo è facoltativo. Questo mi porta a credere che ogni volta che si POST a /v1/customers, sarà "[creare] un nuovo oggetto cliente".

Inoltre, quando si recupera un cliente, l'unico campo disponibile è il id. Questo mi porta a credere che non è possibile recuperare un cliente in base a un indirizzo email o altro campo.


Se può non memorizzare queste informazioni in un database, è sempre possibile elencare tutti i clienti con GET /v1/customers. Questo richiederà di impaginare e controllare tutti gli oggetti del cliente finché non ne trovi uno con un indirizzo email corrispondente. Puoi vedere come questo sarebbe abbastanza inefficiente se fatto ogni volta che provavi a creare un cliente.

+0

Memorizzate le informazioni sui clienti tramite webhook e memorizzate nel vostro database? –

+0

Potresti potenzialmente utilizzare un webhook; tuttavia, salvi personalmente le informazioni non appena crei l'oggetto cliente (nel tuo codice, '$ customer = Stripe_Customer :: create (array (...));'). Ciò restituisce l'oggetto cliente, dal quale è possibile recuperare l'ID striscia per collegarsi al proprio database all'indirizzo e-mail inviato. – Sam

+0

È sicuro salvare l'ID del token da stripe a mysql o qualsiasi tipo di database durante il processo di invio? o semplicemente salvare l'ID cliente su mysql? –

Problemi correlati