コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けのツール

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

Source から Klarna を移行する

システムを Sources API から Payment Intents API に移行します。

Klarna では、Payment Methods API と Payment Intents API を使用する新しい決済プロセスが開始されます。このガイドでは、Stripe Checkout を使用したローコードオプションなど、Sources API による移行の推奨手段について概説します。

非推奨の機能

Stripe では Klarna での Sources API の使用を非推奨にしました。2024 年早期に完全に削除する予定です。現在も Sources API を使用して Klarna による支払いを処理している場合は、今すぐ PaymentMethods および PaymentIntents を使用するように移行してください。

PaymentIntents での Klarna 取引フローの開始

PaymentIntents で Klarna の支払いを開始する

PaymentIntents での Klarna 取引フローの完了

PaymentIntents で Klarna の支払いを完了する

重要な相違点

  • Klarna 製品の選択: 構築済みの Stripe システムで Klarna 製品の種類を指定する必要はありません。代わりに、顧客が Klarna のリダイレクトページで製品を選択します。決済サイトに、対応可能な Klarna 支払いオプションごとに個別のボタンを追加しないでください。Klarna ボタンを 1 つだけ追加してください。
  • Klarna SDK のインライン表示はサポート対象外: 顧客は、支払いを承認するために、支払いページから Klarna サイトにリダイレクトしなければならなくなりました。このため、Klarna SDK を読み込んだり、インラインコンポーネントをレンダリングする必要はありません。
  • 支払いの確認はすべての市場で同期的に行われる: これまでは、支払いが成功したかどうかの確認は、非同期で行われることがありました。顧客の承認後、直ちに支払いが成功したかどうかを検出できるようになりました。

注意

現在 Stripe の実装にプラグインを使用している場合、プラグイン開発者が PaymentMethods および PaymentIntents を使用するようにそのプラグインを移行する必要があります。Stripe またはプラグインの設定に変更を加える必要があるかどうかについては、プラグイン開発者にお問い合わせください。

決済フローを移行する

Klarna の導入をウェブ決済に移行するには、PaymentIntents API を使用できるようにサーバーとフロントエンドを更新する必要があります。典型的な実装オプションは次の 3 つです。

  • 決済フローの Stripe Checkout にリダイレクトする。
  • 自社の決済ページで Stripe の Payment Element を使用する。
  • 自社のフォームを作成し、Stripe JS SDK を使用して支払いを完了する。

Stripe Checkout または Payment Element を使用すると、コードを変更せずに Stripe ダッシュボードからほとんどの決済方法を追加したり管理したりできます。

以下は、以前の実装ステップと新しい実装ステップを大まかに比較したものです。

以前の実装Stripe CheckoutPayment Element自社のフォーム

複雑度: 低

複雑度: 中

複雑度: 高

フロントエンドまたはサーバー上に Source を作成するサーバー上に Checkout セッションを作成するサーバで PaymentIntent を作成するサーバで PaymentIntent を作成する

Klarna SDK を使用して Klarna ウィジェットを読み込み、支払いを承認する

OR

Klarna にリダイレクトして、支払いを承認する

不要

client secret をフロントエンドに渡し、Stripe JS SDK を使用して Payment Element をレンダリングし、支払いを完了する

client secret をフロントエンドに渡す。自社のフォームを使用して顧客から追加情報を収集し、Stripe JS SDK を使用して Klarna にリダイレクトする

Source が請求可能であることを確認し、請求する不要不要不要
charge.succeeded Webhook を使用して支払いが成功したことを非同期で確認するCheckout セッションが成功したことを payment_intent.succeeded Webhook で確認するPaymentIntent が成功したことを payment_intent.succeeded Webhook で確認するPaymentIntent が成功したことを payment_intent.succeeded Webhook で確認する

注意

PaymentIntent は、新しい実装で支払いを表すオブジェクトで、フロントエンドで支払いを確認すると Charge を作成します。これまでデータベースに Charge への参照を保存していた場合は、顧客が支払いを完了した後に PaymentIntent から Charge ID を取得することで、引き続き保存できます。ただし、PaymentIntent ID も保存しておくことをお勧めします。

オプション 1: Checkout セッションを使用する

Stripe Checkout は、ローコードでホストされた決済ソリューションで、Klarna 決済だけでなく、Stripe がサポートするさまざまな支払い方法を受け付けることができます。現在、自社サイトで決済ページをホストしていて、それに代えて Stripe Checkout を使用する場合は、次を実行してください。

  1. Klarna がダッシュボードで有効になっていることを確認します。
  2. ご使用のサーバーで Checkout セッションを作成します。payment_method_types の 1 つとして klarna を明示的に設定するか、動的な支払い方法を使用できます。
  3. 物品を販売する場合は、配送先住所の収集を有効にするか、shipping_details ハッシュに配送先住所を含めます。
  4. 購入者の支払い準備ができたら、セッション URL にリダイレクトします。

オプション 2: Payment Element を使用する

Stripe Payment Element は、Klarna やその他の支払い方法をサポートする、支払いページ用の単一の埋め込み UI コンポーネントです。これは Stripe Checkout の機能を数多く提供しますが、自社の支払いページに表示できます。Payment Element を使用するには、次を実行してください。

  1. Klarna がダッシュボードで有効になっていることを確認します。
  2. お使いのサーバーで PaymentIntent を作成します。
Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "automatic_payment_methods[enabled]"=true \ -d amount=1099 \ -d currency=eur

Klarna を payment_method_types の 1 つとして設定して明示的に有効にすることができます。

  1. PaymentIntent の client secret をフロントエンドに渡し、Stripe Elements UI ライブラリを初期化します。
  2. Payment Element を作成し、ページに埋め込みます。この Element は、顧客が選択した支払い方法に必要な追加フィールドを自動的に収集します。
  3. ユーザーが支払いを送信するときに、Payment Element で confirmPayment を呼び出します。 必ず return_url を渡してください。

オプション 3: カスタムフォームを作成する

Stripe JS SDK を使用して、自社のフォームコンポーネントを構築し、Klarna の支払いを完了することができます。完全統合型のソリューションについてご確認ください。この方法で実装するには、次を実行します。

  1. Klarna がダッシュボードで有効になっていることを確認します。
  2. サーバーで PaymentIntent を作成します。
Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "automatic_payment_methods[enabled]"=true \ -d amount=1099 \ -d currency=eur

ダッシュボードで支払い方法を管理したくない場合は、Klarna を payment_method_types の 1 つとして設定して明示的に有効にすることができます。

  1. フォームを使用して、顧客のメールアドレスと請求先の国を収集します。
  2. 顧客が支払いを承認する準備ができたら、支払いページで Stripe.JS を初期化し、confirmKlarnaPayment を呼び出します。呼び出す際は、PaymentIntent の client secret を指定してください。billing_details[email] と billing_details[address][country] のフィールドにメールアドレスと請求先の国が存在することを確認してください。

フィールドマッピングリファレンス

Payment Element または自社のフォームを使用する場合は、以前に Source にあったフィールドを PaymentIntent にマッピングしなおす必要があります。以下の表は、以前のフィールドと新しいフィールドのマッピングです。物品を販売する場合は、配送先情報を渡すことをお勧めします。その他のフィールドはすべて任意で、Klarna がそのページで必要な追加情報を収集します。

以前の Source フィールド新しい PaymentIntent フィールド注
必須フィールド
typepayment_method_types[]これは PaymentIntents の配列です。支払い方法のリストを手動で作成する場合は、配列の要素の 1 つとして klarna を設定します。
amountamount
currencycurrency
owner[email]payment_method_data[billing_details][email]Payment Element を使用する場合は必須ではありません。自動的に収集されます。
owner[address][country]payment_method_data[billing_details][address][country]Payment Element を使用する場合は必須ではありません。自動的に収集されます。
物品を販売する場合に推奨
klarna[shipping_first_name]shipping[name]姓と名の両方を、空白で区切られた単一の文字列として入力します。
klarna[shipping_last_name]shipping[name]姓と名の両方を、空白で区切られた単一の文字列として入力します。
order[shipping][address]shipping[address]コンポーネントについては、API リファレンスをご覧ください。
order[shipping][carrier]shipping[carrier]
order[shipping][tracking_number]shipping[tracking_number]
order[shipping][phone]shipping[phone]
その他のオプションフィールド
klarna[purchase_country]payment_method_data[billing_details][address][country]
klarna[first_name]payment_method_data[billing_details][name]任意。姓と名の両方を、空白で区切られた単一の文字列として入力します。
klarna[last_name]payment_method_data[billing_details][name]任意。姓と名の両方を、空白で区切られた単一の文字列として入力します。
不要になりました
klarna[product]PaymentIntents には適用されません。顧客は Klarna のサイトで支払いを承認する際に Klarna の製品を選択します。
klarna[shipping_delay]適用されません。出荷の遅延が予想される場合は、オーソリとキャプチャーの分離を使用して、商品が出荷された後にのみ支払いをキャプチャーします。
source_orders[items]不要になりました。

注意

現在、Source で klarna[attachment] パラメーターまたは order[items] パラメーターを使用している場合は、これらのパラメーターに関する詳細を Stripe からご連絡いたします。

購入後

支払いが完了した後、ご利用の実装ポイントに対して次の変更が必要です。

支払いステータスの確認

以前は、実装で API コールのたびに Source と Charge の両方のステータスを確認する必要がありましたが、2 つのステータスをチェックする必要はもうありません。フロントエンドでの確定後に、PaymentIntent または Checkout セッションのステータスを確認するだけで済みます。

payment_intent.status意味注
succeeded支払いが成功しました。
requires_payment_method支払いが失敗しました。
requires_action顧客は Klarna のサイトで支払いの承認を完了していません。顧客が 48 時間以内に支払いを完了しない場合、PaymentIntent は requires_payment_method に移行し、確定を再試行できるようになります。

PaymentIntent のステータスは、必ずサーバーで取得するか、サーバーで Webhook をリッスンして確認してください。PaymentIntent を確定する際に指定される return_url にユーザーが戻ることだけに依存しないでください。詳細については、こちらをご覧ください。

返金

PaymentIntent が作成した Charge を使用して、引き続き Refunds API を呼び出すことができます。Charge の ID は latest_charge パラメーターで確認できます。または、Refunds API に Charge の代わりに PaymentIntent ID を指定することもできます。

エラー処理

これまでは、Source が作成されたときにエラーを処理する必要がありました。PaymentIntents では、Source でエラーを確認する必要はなく、代わりにPaymentIntent の作成時と顧客が支払いを承認した後に PaymentIntent のエラーを確認する必要があります。PaymentIntent のエラーのほとんどは、無効なリクエストで返されたタイプフィールドに関するものです。

Source 作成時の以前のエラーコードPaymentIntent の作成または確認時の新しいエラータイプ注
payment_method_not_availableinvalid_request_error
processing_errorinvalid_request_error
missing_sku_item_quantity適用されません。PaymentIntent の作成時に、販売アイテムを指定する必要はありません。
country_currency_mismatchinvalid_request_error
country_not_supportedinvalid_request_error
invalid_currencyinvalid_request_error
invalid_emailinvalid_request_error
invalid_phone適用されません。このフィールドは必須ではなく、Klarna のページで収集されます。
invalid_address適用されません。このフィールドは必須ではなく、Klarna のページで収集されます。

Webhook

これまで Source イベントをリッスンしていた場合は、新しいイベントタイプをリッスンするように実装の更新が必要になる場合があります。 以下は、リッスンする新しいイベントタイプのリファレンスです。

以前の WebhookCheckout の新しい WebhookPaymentIntent の新しい Webhook注
source.chargeable適用外適用外
source.failed適用外適用外
source.canceled適用外適用外
charge.succeededcheckout.session.completedpayment_intent.succeededcharge.succeeded Webhook も送信されるため、新しい Webhook をリッスンするように実装を更新する必要はありません。
charge.failed適用されません。 顧客は有効期限が切れるまで同じ Checkout セッションで支払いを再試行でき、有効期限が切れた時点で checkout.session.expired イベントが届きます。payment_intent.payment_failedcharge.failed Webhook も送信されるため、新しい Webhook をリッスンするように実装を更新する必要はありません。
charge.dispute.createdcharge.dispute.createdcharge.dispute.created
このページはお役に立ちましたか。
はいいいえ
お困りのことがございましたら 、サポートにお問い合わせください。
早期アクセスプログラムにご参加ください。
変更ログをご覧ください。
ご不明な点がございましたら、お問い合わせください。
LLM ですか?llms.txt を読んでください。
Powered by Markdoc