2016-11-23 5 views
2

ストライプペイメントゲートウェイでも可能ですか?単一の顧客IDに複数のカードを追加し、ストライプを使用して直接送金するにはどうすればよいですか?

私たちは支払いのためにストライプを使用します、まず私はトークンを作成しています。

$result = Stripe_Token::create(
        array(
         "card" => array(
          "name" => $user['name'], 
          "number" => base64decrypt($user['card_number']), 
          "exp_month" => $user['month'], 
          "exp_year" => $user['year'], 
          "cvc" => base64decrypt($user['cvc_number']) 
         ) 
        ) 
       ); 

トークンを作成した後に、顧客保存カードを作成します。

$customer = \Stripe\Customer::create(array(
           "card" => $token, 
           "description" => "New customer", 
           "email" => $users->email 
            ) 
        ); 

を作成した後。

$charge = \Stripe\Charge::create(
       array('card' => $token->token, 
           'amount' => $token->amount * 100, 
           'currency' => 'usd', 
           ) 
      ); 

しかし、私は単一の顧客に複数のカードを保存することができません。 私を助けてください。

答えて

2

まず、本番環境でサーバー側のトークンを作成しないでください。 PCI SAQ Aの資格を得るには、CheckoutまたはStripe.jsを使用して、クライアント側にカードトークンを作成する必要があります。

あなたは、サーバー上のトークンを受け取ったら、あなたは、いくつかの異なる方法でそれを使用することができます。

  • あなたはトークンIDを渡すことによって、すべての顧客のオブジェクトを使用せずに、直接create a chargeそれを使用することができますsourceのパラメータ("tok_...")。この場合、カード情報は「失われている」ため、情報をもう一度収集し、新しいトークンを作成して、このカードを後で再度請求する必要があります。

  • create a new customerに使用できます。

  • add a card to an existing customerに使用できます。

creating chargesは、顧客のオブジェクトを、あなたはcustomerパラメータで顧客のID("cus_...")を渡す必要があり

sourceパラメータを渡さないと、顧客のデフォルトカードが使用されます。デフォルト以外のカードに課金する場合は、 customerパラメータに加えて、 sourceパラメータにカードのID( "card_...")も渡す必要があります。

Cf. this StackOverflow answer

+0

ありがとうございます@Ywain –

関連する問題