ストライプ支払いで可能ですか?
まず、ストライプを使用してクレジットカードを検証し、次にトークンを生成して顧客を作成します。データベースにクレジットカード情報ではなくトークンを保存し、後でクレジットカード情報ではなくトークンまたは顧客に基づいて顧客から支払いを行います。
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でカードの検証を実行できるためです。
トークン自体を保存する代わりに、顧客を作成して顧客IDを保存することをお勧めします。その後、いつでも顧客に請求できます。 後ほどカードの詳細を保存する に関するドキュメントを参照してください。
Javscriptファイルで、stripeResponseHandlerと関数stripeResponseHandler(status、response)の処理方法。
関数を作成し、stripeResponseHandler
を呼び出すときにcreateToken
として渡す必要があります。この関数で必要なことは、トークンをフォームに挿入して送信することだけです。その簡単な例がここにあります: https://Gist.github.com/boucher/1750375
Stripeでは、カード(または銀行口座)を保存して後で請求するには、顧客を作成し、その顧客に支払い元(cardまたはbank_account)を追加する必要があります。
1つまたは複数の支払い元を持つ顧客を作成したら、請求を作成する3つのオプションがあります。
デフォルトのソースを使用して顧客に請求します。
Stripe::Charge.create(
amount: 1000,
currency: 'usd',
customer: 'cus_xxxx'
)
クレジットカードを使用して顧客に請求する:
Stripe::Charge.create(
amount: 5000,
currency: 'usd',
customer: 'cus_xxxx',
card: 'card_xxxx'
)
銀行口座を使用して顧客に請求する:
Stripe::Charge.create(
amount: 8000,
currency: 'usd',
customer: 'cus_xxxx',
bank_account: 'ba_xxxx'
)
トークンを保存する代わりに、顧客オブジェクトを作成し、カードIDのみをローカルに保存します。支払いを行うときに、オプションで請求するカードを定義できます(顧客IDをstripe.charges.createに渡す場合)。その場合、トークンを渡す必要はありません。このアプローチを使用すると、デフォルトのカードを扱う必要もありません。
stripe.charges.create({
amount: 400,
currency: "usd",
card: "card_xxxxx",
customer: "cus_xxxxxx",
このコードを抜粋して使用すると、キャプチャを渡すことでトランザクション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日間で期限切れになります。詳細については、 請求の承認と後での決済をご覧ください
私はあなたが直面している問題を解決すると思います
トークンを作成するには、最初に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);