web-dev-qa-db-ja.com

ストライプ支払い:トークンと顧客を保存し、後でトークンから支払いを行います

ストライプ支払いで可能ですか?

まず、ストライプを使用してクレジットカードを検証し、次にトークンを生成して顧客を作成します。データベースにクレジットカード情報ではなくトークンを保存し、後でクレジットカード情報ではなくトークンまたは顧客に基づいて顧客から支払いを行います。

Javscriptファイルでは、stripeResponseHandlerおよびfunction stripeResponseHandler(status, response)をどのように処理しますか?

を使用して既にトークンを生成しているため

Stripe.createToken({
            number: cardNumber,
            cvc: cardCVC,
            exp_month: $('#expiration-month').val(),
            exp_year: $('#expiration-year').val()
        }, stripeResponseHandler);

支払いステップでは、stripeResponseHandlerをどのように呼び出しますか?


要件を理解してください

1- トークンを保存します。クレジットカード情報を確認します。この場合、支払いは含まれません。金額/価格はゼロ(0)になります。

2-これをTokenをデータベースに保存しますが、このトークンは一度しか使用されません。これを使用するとToken後で機能しなくなります。

3- Create customerはstripe.comで顧客を作成し、データベースに保存することもできますが、理由はサイトからリチャージしないためです。stripe.comにログインしてリチャージする必要がありますそのサイトから。そのサイトからリチャージする場合、データベースにそのレコードを保存することはできません。また、顧客の作成時に、後者のリチャージを作成する必要があります。このクライアントを使用する場合もクレジットカードが必要です。これが主な問題です。

4-独自の関数stripeResponseHandlerを作成できます。これは、stripeResponseHandlerを介して、ストライプサーバーのstripe.jsでカードの検証を実行できるためです。

33
Shahzad

トークン自体を保存する代わりに、顧客を作成して顧客IDを保存することをお勧めします。その後、いつでも顧客に請求できます。 後ほどカードの詳細を保存する に関するドキュメントを参照してください。

Javscriptファイルで、stripeResponseHandlerと関数stripeResponseHandler(status、response)の処理方法。

関数を作成し、stripeResponseHandlerを呼び出すときにcreateTokenとして渡す必要があります。この関数で必要なことは、トークンをフォームに挿入して送信することだけです。その簡単な例がここにあります: https://Gist.github.com/boucher/1750375

36
brian

Stripeでは、カード(または銀行口座)を保存して後で請求するには、顧客を作成し、その顧客に支払い元(cardまたはbank_account)を追加する必要があります。

1つまたは複数の支払い元を持つ顧客を作成したら、請求を作成する3つのオプションがあります。

  1. デフォルトのソースを使用して顧客に請求します。

    Stripe::Charge.create(
        amount: 1000,
        currency: 'usd',
        customer: 'cus_xxxx'
    )
    
  2. クレジットカードを使用して顧客に請求する:

    Stripe::Charge.create(
        amount: 5000,
        currency: 'usd',
        customer: 'cus_xxxx',
        card: 'card_xxxx'
    )
    
  3. 銀行口座を使用して顧客に請求する:

    Stripe::Charge.create(
        amount: 8000,
        currency: 'usd',
        customer: 'cus_xxxx',
        bank_account: 'ba_xxxx'
    )
    
24

トークンを保存する代わりに、顧客オブジェクトを作成し、カードIDのみをローカルに保存します。支払いを行うときに、オプションで請求するカードを定義できます(顧客IDをstripe.charges.createに渡す場合)。その場合、トークンを渡す必要はありません。このアプローチを使用すると、デフォルトのカードを扱う必要もありません。

stripe.charges.create({
amount: 400,
currency: "usd",
card: "card_xxxxx", 
customer: "cus_xxxxxx", 
7
Ilker Baltaci

このコードを抜粋して使用すると、キャプチャを渡すことでトランザクションIDで支払いをキャプチャできます:true

token = params[:stripeToken]
    # Charge the user's card:
    charge = Stripe::Charge.create(
      :amount => 1000,
      :currency => "usd",
      :description => "Example charge",
      :capture => false,
      :source => token,
    )

詳細については、 link を参照してください。

capture:-オプション、デフォルトはtrueすぐに請求をキャプチャするかどうか。 falseの場合、請求は承認(または事前承認)を発行し、後で取得する必要があります。キャプチャされていない請求は7日間で期限切れになります。詳細については、 請求の承認と後での決済をご覧ください

私はあなたが直面している問題を解決すると思います

2
Rahul Sharma

トークンを作成するには、最初にstripe.comからstripe.jsを参照する必要があります

   <script src="https://js.stripe.com/v3/"></script>

次に、以下のコードを追加して、カード情報を追加し、トークンを生成します。

    var stripe = Stripe('Your stripe publisheable key');
  var elements = stripe.elements;

stripe.createToken(elements[0], additionalData).then(function (result) {
                example.classList.remove('submitting');

                if (result.token) {
                    // If we received a token, show the token ID.
                    example.querySelector('.token').innerText = result.token.id;
                    example.classList.add('submitted');
                }

ここで、顧客を作成するために必要なトークンを取得します。以下のコードを使用して顧客を作成します。私はC#.NETを使用しました

StripeConfiguration.SetApiKey("sk_test_JTJYT2SJCb3JjLQQ4I5ShDLD");

var options = new CustomerCreateOptions {
  Description = "Customer for [email protected]",
  SourceToken = "tok_amex"
};

var service = new CustomerService();
Customer customer = service.Create(options);

次に、以下のようにストライプから取得したカードトークンからこのユーザーの価格を引き下げることができます。

StripeConfiguration.SetApiKey("sk_test_JTJYT2SJCb3JjLQQ4I5ShDLD");

var options = new ChargeCreateOptions {
    Amount = 2000,
    Currency = "aud",
    Description = "Charge for [email protected]",
    SourceId = "tok_amex" // obtained with Stripe.js, }; var service = new ChargeService(); Charge charge = service.Create(options);
0