2017-09-21 29 views
2

我想让我们的客户添加多张卡到他们的账户。所以在结帐时,他们可以选择使用哪张卡或添加一张新卡。条纹PHP - 如何检索新添加的卡的ID?

我可以通过调用选择已经添加卡片ID为:

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

但我需要检索的卡ID或新添加的卡。

//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 
)); 

回答

1

card creation request将返回新创建card object,所以你可以简单地抓住从那里ID:

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

$new_card_id = $new_card->id; 

注意条纹将与发卡银行将新卡时,确认卡如果验证失败,可能会返回card_error。您应该将卡创建请求包装在try/catch区块中,以handle possible errors