Setup Intents API を使用して、事前に決済手段の詳細を収集し、後から最終的な金額や支払い日を決定できます。次の場合に使用します。
決済手段の詳細を収集して、すぐに保存された決済手段に請求する場合は、Payment Intents API を使用します。
Amazon Pay で支払うサブスクリプションを設定 し、Checkout で決済手段を保存した後に継続支払いを作成する方法をご紹介します。
まず、Stripe アカウントが必要です。今すぐ登録してください 。
アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
将来の使用に備えて顧客の支払い方法を保存する場合は、顧客の許可を得る必要があります。あらかじめ契約 (同意書とも呼ばれます) を作成しておくことで、顧客の支払い情報を保存し、顧客がウェブサイトやアプリを能動的に使用していないときでも請求できるようになります。
顧客の支払い方法の保存をどのように計画しているかを示す規約をウェブサイトやアプリに追加し、顧客が許可できるようにします。顧客がオフラインのときに請求する予定である場合は、規約に以下の内容も含める必要があります。
指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始するための顧客の許可 予測される支払い頻度 (1 回限り、継続支払い) とタイミング 支払い金額の決定方法 サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー これらの規約に関する顧客の書面による同意の記録を必ず保管してください。
今後の支払いに備えて Amazon Pay の支払い方法を保存するには、これを Customer に関連付ける必要があります。
ビジネスで顧客がアカウントを作成した後に Customer オブジェクトを作成します。Customer オブジェクトの ID を独自の内部的な顧客の表記に関連付けることにより、後から保存済みの支払い方法情報を取得して使用できます。顧客がアカウントを作成していない場合でも Customer オブジェクトを作成して、後で顧客のアカウントの内部表記に関連付けることができます。
curl https://api.stripe.com/v1/customers \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
- -data -urlencode description = "My First Test Customer (created for API docs)" 将来のオフセッション の支払いに備え、顧客の Amazon Pay の認証情報を保存してアカウントに請求できるようにします。PaymentIntent や SetupIntent を確定する前に、カスタムの決済フォームに書面による承認の通知を表示する必要があります。
許可を表示する必要があるのは、顧客の Amazon Pay の認証情報を初めて保存した後のみです。
カスタムの決済フォームでは以下のテキストを使用することをお勧めします。
続行すると、Rocket Rides の利用規約に従って、この許可が取り消されない限り、お客様は今回の支払いおよび今後の支払いを、Amazon Pay のアカウントから引き落とすことを Rocket Rides に許可したものとみなされます。
Setup Intents API を使用して支払い方法を保存する
Payment Intents API を使用して支払い方法を保存する
Setup Intents API を使用して事前に決済手段の詳細を収集し、後から最終的な金額や支払い日を決定します。次の場合に使用します。
以降の購入時に認証せずにすむように顧客の支払い方法を保存する サブスクリプション の無料トライアルを開始するSetupIntent は、将来の支払いに備えて顧客の決済手段を設定するという意図を示すオブジェクトです。SetupIntent は、この設定プロセスの手順を追跡します。payment_method_types を amazon_ pay に設定してサーバーで SetupIntent を作成し、Customer の ID と usage=off_session または usage=on_ session を指定します。
curl https://api.stripe.com/v1/setup_intents \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
-d "payment_method_types[]" = amazon_pay \
-d "payment_method_data[type]" = amazon_pay \
-d usage = off_session \
-d customer = {{CUSTOMER_ID}} client secret を取得する SetupIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
ブラウザーの fetch 関数を使用して、サーバーのエンドポイントから client secret を取得します。この方法は、クライアント側が 1 ページのアプリケーションで、特に React などの最新のフロントエンドフレームワークで構築されている場合に最適です。client secret を処理するサーバーのエンドポイントを作成します。
get '/secret' do
intent =
{ client_secret : intent . client_secret } . to_json
end
その後、クライアント側で JavaScript を使用して client secret を取得します。
( async ( ) => {
const response = await fetch ( '/secret' ) ;
const { client_secret : clientSecret } = await response . json ( ) ;
} ) ( ) ;
次に、Stripe.js を使用してクライアントに Amazon Pay を保存します。
Stripe.js スクリプトを決済ページに含めるには、このスクリプトを HTML ファイルの head に追加します。
顧客が Amazon Pay での支払いをクリックしたときに、Stripe.js を使用してその支払いを Stripe に送信します。Stripe.js は、決済フローを構築するための基本的な JavaScript ライブラリです。このライブラリにより、以下で説明するリダイレクトなどの複雑な処理が自動的に行われ、他の決済手段にも対応できるように実装を拡張できます。Stripe.js スクリプトを決済ページに含めるには、HTML ファイルの head にこのスクリプトを追加します。
決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。
const stripe = Stripe ( 'pk_test_TYooMQauvdEDq54NiTphI7jx'
) ; stripe. confirmAmazonPaySetup を使用し、return_url と mandate_data を指定して、クライアント側で setupIntent を確定します。return_url を使用して、SetupIntent の成功後に顧客を特定のページにリダイレクトします。
const { error } = await stripe . confirmAmazonPaySetup (
'{{SETUP_INTENT_CLIENT_SECRET}}' ,
{
return_url : 'https://example.com/setup/complete' ,
mandate_data : {
customer_acceptance : {
type : 'online' ,
online : {
infer_from_client : true
}
}
} ,
}
) ;
if ( error ) {
}
オプション Amazon Pay のリダイレクトを手動で処理する
Stripe.js を使用すると、実装を他の支払い方法に拡張することができます。ただし、お客様のサーバーに顧客を手動でリダイレクトすることもできます。
タイプが amazon_ pay の PaymentIntent を作成し確定 します。payment_ method_ data を指定すると、PaymentMethod が作成され、PaymentIntent ですぐに使用されます。 また、顧客が支払いを完了した後にリダイレクトされる先の URL を return_ url フィールドに指定する必要があります。独自のクエリパラメータをこの URL に指定することもできます。これらのパラメータは、リダイレクトフロー完了時の最終的な URL に含められます。
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
-d amount = 1000 \
-d currency = usd \
-d "payment_method_types[]" = amazon_pay \
-d "payment_method_data[type]" = amazon_pay \
- -data -urlencode return_url = "https://example.com/checkout/complete " \
-d confirm = true PaymentIntent のステータスが requires_ action であることと、next_ action のタイプが redirect_ to_ url であることを確認します。next_ action. redirect_ to_ url. url プロパティで指定された URL に顧客をリダイレクトします。ここでのコード例はおおまかなものであり、リダイレクト方法は、お客様のウェブフレームワークによって異なることがあります。if payment_intent . status == 'requires_action' && payment_intent . next_action . type == 'redirect_to_url'
url = payment_intent . next_action . redirect_to_url . url
redirect ( url )
end
支払いプロセスが完了すると、顧客は return_ url にリダイレクトされます。payment_ intent および payment_ intent_ client_ secret URL クエリパラメーターは、お客様独自のクエリパラメーターと併せて含まれています。支払いのステータスをプログラムで確認するために、Webhook エンドポイント を設定することをお勧めします。
PaymentMethod を作成した後、PaymentIntent を作成して確定すると、それ以降 Amazon Pay による決済を受け付けられるようになります。PaymentIntent を確定する際は、以前の SetupIntent オブジェクトまたは PaymentIntent オブジェクトと同じ決済手段 ID を使用します。顧客がこの PaymentIntent の決済フロー内にいない場合は、off_ session 値も true に設定する必要があります。
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
-d "payment_method_types[]" = amazon_pay \
-d payment_method = {{PAYMENT_METHOD_ID}} \
-d amount = 1000 \
-d currency = usd \
-d customer = {{CUSTOMER_ID}} \
-d statement_descriptor = test_statement \
-d capture_method = automatic \
-d confirm = true \
-d off_session = true