2017-09-21 1 views
2

J'aimerais permettre à nos clients d'ajouter plusieurs cartes à leurs comptes. Ainsi, à la caisse, ils peuvent choisir quelle carte utiliser ou en ajouter une nouvelle.Stripe PHP - Comment récupérer l'identifiant de la carte nouvellement ajoutée?

je peux sélectionner les ID de cartes déjà ajoutées en appelant:

$cardid = $customer->sources->data[0]->id; 
$cardid = $customer->sources->data[1]->id; 
$cardid = $customer->sources->data[2]->id; 
etc... 

Mais je dois récupérer l'ID de la carte ou la carte nouvellement ajoutée.

//Create Token 
try { 
$token = \Stripe\Token::create(
       array(
         "card" => array(
         "name" => $_POST['ccname'], 
         "number" => $_POST['ccnum'], 
         "exp_month" => $_POST['ccxpm'], 
         "exp_year" => $_POST['ccxpy'], 
         "cvc" => $_POST['cccvc']) 
)); } 
catch(\Stripe\Error\Card $e) { 
    $body = $e->getJsonBody(); 
    $err = $body['error']; 
    $status = $err['message']; 
}  


// Add new Card to Custid 
$customer = \Stripe\Customer::retrieve($_POST['custid']); 
$customer->sources->create(
       array(
         "source" => $token['id'] 
)); 

$cardid = $customer->sources->data[]->id; ??? 

// Charge CustID 
$mysum = $_POST['amount']*100; 

$charge = \Stripe\Charge::create(array(
'customer' => $customer, 
'amount' => $mysum, 
'currency' => 'usd', 
'card' => $cardid 
)); 

Répondre

1

Le card creation request retournera le nouveau card object, de sorte que vous pouvez simplement saisir l'ID de là:

$new_card = $customer->sources->create(array(
    "source" => $token['id'] 
)); 

$new_card_id = $new_card->id; 

Notez que Stripe validera la carte avec la banque émettrice lors de l'ajout de la nouvelle carte à le client, et peut renvoyer un card_error si la validation échoue. Vous devez placer la demande de création de carte dans un bloc try/catch à handle possible errors.