Klarna による支払い方法を受け付ける
世界で普及している後払いの支払い方法である Klarna を受け付ける方法をご紹介します。
Klarna との統合項目
Klarna を導入する際に承認率を最適化するには、line_
データを含めて買い物客のカートの中身を表します。先行提供版については、支払い項目をご覧ください。
Stripe ユーザーは、Payment Intents API (サポートされている方法を使用して支払いを作成するための単一の組み込みパス) を使用して、Klarna のサポート対象の国の顧客から Klarna による支払いを受け付けることができます。
Klarna は、使用が 1 回限りの即時通知型の決済手段であり、顧客は支払いの認証を求められます。顧客は Klarna のページにリダイレクトされ、そこで複数の支払いオプション (即時の全額支払い、分割払い、後払い) から選択します。顧客が規約に同意すると、Klarna により顧客への資金提供が保証され、お客様の Stripe アカウントに送金されます。顧客は選択した支払いオプションに従って Klarna に返済します。
注
導入を開始する前に、支払い方法の設定に移動して、アカウントで Klarna が使用可能であることを確認してください。
PaymentIntent を作成するサーバー側
PaymentIntent は、顧客から支払いを回収する意図を表すオブジェクトであり、支払いプロセスのライフサイクルをステージごとに追跡します。最初に、サーバー上に PaymentIntent
を作成します。
Payment Intents API を使用した組み込みをすでにお持ちの場合には、klarna
を PaymentIntent
の決済手段タイプのリストに追加します。
Klarna で必要なのは顧客の通貨のみです。オプションの shipping パラメーターを渡す場合は、次のフィールドが定義され、空でないことを確認してください: name
、address.
、city
、country
、postal_
。
client secret を取得する
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
Stripe に支払いを送信するクライアント側
このステップでは、Stripe.js を使用してクライアントで Klarna の支払いを完了します。
Stripe.js を設定する
顧客が Klarna での支払いをクリックするときは、Stripe.js を使用してその支払いを Stripe に送信することをお勧めします。Stripe.js は、支払いフローを構築するための Stripe の基本的な JavaScript ライブラリです。これにより、以下で説明するリダイレクトなどの複雑な処理が自動的に行われ、今後、組み込みを他の支払い方法にも簡単に拡張できます。Stripe.js スクリプトを HTML ファイルのヘッダーに追加することで、決済ページにこのスクリプトを含めます。
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。
// Set your publishable key: remember to change this to your live publishable key in production // See your keys here: https://dashboard.stripe.com/apikeys var stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
PaymentIntent オブジェクト全体をクライアントに送信するのではなく、ステップ 2 で得た client secret を使用します。これは、Stripe API リクエストを認証する API キーとは異なります。
それでも、client secret は支払いを完了できるため、慎重に扱う必要があります。記録したり、URL に埋め込んだり、その顧客以外に公開されることがないようにしてください。
stripe.confirmKlarnaPayment を使用して、お客様のページからのリダイレクトを処理して決済を完了します。この機能に return_url を追加し、ユーザーが Klarna のウェブサイトまたはモバイルアプリで支払いを完了した後に Stripe がユーザをリダイレクトする場所を指示します。
Klarna の支払いページで、顧客は自身の市場で提供されている決済オプションから選択します。市場別の提供状況については、概要ページの表をご覧ください。Klarna の支払いページで決済オプションを制限したり、事前に選択したりすることはできません。この選択を消費者に任せることで、取引の機会が大いに広がります。
// Redirects away from the client const {error} = await stripe.confirmKlarnaPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}',{ return_url: 'https://example.com/checkout/complete', } ); if (error) { // Inform the customer that there was an error. }
顧客が支払いを送信すると、Stripe は顧客を return_
にリダイレクトし、以下の URL クエリーパラメーターを含めます。返品ページでは、これらを使用して PaymentIntent のステータスを取得し、顧客に支払いステータスを表示できます。
return_
を指定する際に、返品ページで使用する独自のクエリパラメーターを追加することもできます。
パラメーター | 説明 |
---|---|
payment_ | PaymentIntent の一意の識別子。 |
payment_ | PaymentIntent オブジェクトの client secret。サブスクリプションの実装の場合、この client_secret は confirmation_ を通じて Invoice オブジェクトでも公開されます |
顧客が自社のサイトにリダイレクトされたら、payment_
を使用して PaymentIntent をクエリし、顧客に取引ステータスを表示できます。
顧客が選択した Klarna 決済オプションの詳細は、payment_method_details プロパティの charge
で確認できます。使用可能な値は pay_
、pay_
、pay_
、pay_
の 4 種類です。これらのオプションの詳細については、Klarna の概要ページをご覧ください。
Klarna の支払いページを各地域に適応させるために使用されたロケールは、payment_method_details プロパティでも確認できます。
{ "charges": { "data": [ { "payment_method_details": { "klarna": { "payment_method_category": "pay_in_installments", "preferred_locale": "en-US" }, "type": "klarna" }, "id": "src_16xhynE8WzK49JbAs9M21jaR", "object": "source", "amount": 1099, "client_secret": "src_client_secret_UfwvW2WHpZ0s3QEn9g5x7waU",
Klarna の組み込みをテストする
下記では、現在対応している顧客の国のテストデータを特別に選択しています。サンドボックスでは、Klarna は指定されたメールアドレスに基づいて取引を承認または拒否します。
実働環境のテストのために、現地通貨の金額 3500
を使用して、融資以外のすべての Klarna 支払いオプションをテストできます。たとえば、イタリアでの「3 回払い」をテストする場合は、35.00 EUR の取引を使用できます。
2 段階認証
6 桁の数字であれば、2 段階認証コードとして有効です。999999
を使用すると、認証は失敗します。
返済方法
Klarna のフロー内では、以下のテスト値を使用し、さまざまな返済方法を試すことができます。
タイプ | 値 |
---|---|
口座引き落とし | DE11520513735120710131 |
銀行振込 | デモの銀行 |
クレジットカード |
|
デビットカード |
|
失敗した支払い
Klarna は、取引を受け付けるか拒否するかを決定する際に複数の要因を考慮します (買い手が Klarna を使用している期間、顧客が返済する必要のある未払い額、現在の注文の金額など)。
顧客が後払いを選択すると、Klarna は取引を受け付ける前にリスク評価を行います。Klarna は、リスク評価の結果が良好でなかったり、取引金額が大きかったり、顧客に多額の未払いの負債があったりすると、取引を拒否することがあります。そのため、決済フローに card
などの他の支払いオプションを提示することをお勧めします。このような場合、PaymentMethod は解除され、PaymentIntenオブジェクトのステータスは自動的に requires_
に変わります。
顧客は、Klarna のサイトにリダイレクトされてから 48 時間以内に決済を完了する必要があります。48 時間経過しても対応しなかった場合、PaymentMethod の関連付けが解除され、PaymentIntent オブジェクトのステータスは自動的に requires_
から requires_
に移行します。
このようなケースでは、決済フローに表示される別の支払いオプションで再試行するように顧客に通知します。
Klarna のレート制限
Klarna への API リクエストは、Stripe の API 全体のレート制限を超える追加のレート制限の対象となります。これらの制限は、実行する API リクエストのシェイプによって異なる場合があります。一般に、1 分間に約 360 回を超えるリクエストを行うと、HTTP ステータスコード 400
または 402
のレスポンスの形式でレート制限が発生することがあります。使用量がこれらのレベルに達することが懸念される場合は、詳細についてお問い合わせください。これらの制限はケースバイケースで Klarna により引き上げられる可能性があります。
エラーメッセージ
Klarna 支払いが失敗すると、通常、以下のエラーコードのいずれかが返されます。これらのコードは、last_payment_error API オブジェクトに表示されます。
注意
2023-08-16
API バージョンより前は、すべての Klarna エラーが payment_intent_authentication_failure として報告されていました。API バージョンが最新であることを確認して、以下のエラー詳細をご覧ください。
エラーコード | 説明 |
---|---|
payment_method_customer_decline | 顧客が Klarna のページで購入をキャンセルしました |
payment_method_provider_decline | Klarna が顧客の支払いを拒否しました |
payment_intent_payment_attempt_expired | 顧客が Klarna のページで購入を完了しないまま、支払いセッションの有効期限が切れました |
payment_method_not_available | Klarna を使用しようとしたときに予期しないエラーが発生しました |