コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けリソース
概要
Stripe Payments について
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments を使用する
Payment Links を使用する
事前構築済みの決済ページを使用する
Elements を使用したカスタム統合の構築
アプリ内実装を構築
決済手段
決済手段を追加
    概要
    支払い方法の導入オプション
    ダッシュボードで支払い方法を管理
    決済手段のタイプ
    カード
    Stripe 残高で支払う
    ステーブルコインでの支払い
    銀行口座引き落とし
    銀行へのリダイレクト
    銀行振込
    クレジットトランスファー (Sources)
    後払い
    リアルタイム決済
    店舗支払い
    ウォレット
      Alipay
      Amazon Pay
      Apple Pay
      Cash App Pay
      Google Pay
      GrabPay
      Link
      MB WAY
      MobilePay
      PayPal
        PayPal ボタン
        PayPal 支払いを有効化
        決済を受け付ける
        将来の支払いを設定する
        売上処理の設定を選択
        不審請求が申請された支払い
        入金の照合
        保存した PayPal の支払い方法をインポートする
      PayPay
      Revolut Pay
      Satispay
      Secure Remote Commerce
      Vipps
      WeChat Pay
    国ごとに現地の支払い方法を有効化
    カスタムの決済手段
決済手段を管理
Link による購入の迅速化
支払いインターフェイス
Payment Links
Checkout
Web Elements
アプリ内決済
決済シナリオ
複数の通貨を扱う
カスタムの決済フロー
柔軟なアクワイアリング
オーケストレーション
店頭支払い
端末
決済にとどまらない機能
会社を設立する
仮想通貨
エージェント型ワークフロー
Financial Connections
Climate
不正利用について
Radar の不正防止
不審請求の申請の管理
本人確認
ホーム支払いAdd payment methodsWalletsPayPal

注

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

PayPal による支払いを受け付ける

ヨーロッパの企業に広く普及しているデジタルウォレットである PayPal の決済を受け付ける方法をご紹介します。

Stripe を設定する
サーバー側

まず、Stripe アカウントが必要です。今すぐご登録ください。

アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

PaymentIntent を作成する
サーバー側

Stripe では、PaymentIntent (支払いインテント) と呼ばれる支払いオブジェクトを使用して、支払いの完了まですべてのステータスを追跡および処理します。サーバーで PaymentIntent を作成し、回収する金額と通貨を指定します。すでに Payment Intents API を使用したシステムがある場合は、paypal を PaymentIntent の決済手段タイプリストに追加します。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=paypal

返される PaymentIntent には client secret が含まれます。これを使用することで PaymentIntent オブジェクト全体を渡すことなく安全に支払いプロセスを完了できます。以降のステップで使用できるように、クライアントに client secret を送り返します。

カスタムの説明を含める

デフォルトでは、PayPal ユーザの購入アクティビティページの注文詳細には、注文金額が表示されます。description プロパティでカスタムの説明を指定することで、これを変更することができます。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d description="A sample description" \ -d "payment_method_types[]"=paypal

利用するロケールをカスタマイズする

デフォルトでは、PayPalのオーソリページは加盟店の国などの変数に基づいて各地域に適応されます。これを顧客の希望するロケールに設定するには、preferred_locale プロパティを使用します。この値は、2文字の小文字の言語コードの後にハイフン (-) を続け、その後に2文字の大文字の国コードを続ける必要があります。例えば、ベルギーのフランス語ユーザーに対する値は、fr-BE となります。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=paypal \ -d "payment_method_options[paypal][preferred_locale]"=fr-BE

preferred_locale プロパティを使用して、顧客の希望するロケールにPayPalオーソリページを設定できます。対応するロケールについては、次の表を参照してください:

値ロケール国
cs-CZチェコ語チェコ共和国
da-DKデンマーク語デンマーク
de-ATドイツ語オーストリア
de-DEドイツ語ドイツ
de-LUドイツ語ルクセンブルク
el-GRギリシャ語ギリシャ
en-GB英語イギリス
en-US英語アメリカ合衆国
es-ESスペイン語スペイン
fi-FIフィンランド語フィンランド
fr-BEフランス語ベルギー
fr-FRフランス語フランス
fr-LUフランス語ルクセンブルク
hu-HUハンガリー語ハンガリー
it-ITイタリア語イタリア
nl-BEオランダ語ベルギー
nl-NLオランダ語オランダ
pl-PLポーランド語ポーランド
pt-PTポルトガル語ポルトガル
sk-SKスロバキア語スロバキア
sv-SEスウェーデン語スウェーデン

PayPal での明細書表記

買い手の銀行明細書に表示される表記は PayPal によって設定され、デフォルトでは PAYPAL *YOUR_BUSINESS_NAME になります。PaymentIntent の作成時に statement_descriptor を設定した場合、合計 22 文字を上限として、その値が PayPal によって設定された値に付加されます。

たとえば、PayPal のビジネス名が BUSINESS であり、statement_descriptor に order_id_1234 を設定する場合、買い手の銀行口座明細書には PAYPAL *BUSINESS order と表示されます。

Stripe に支払いを送信する
クライアント側

顧客が PayPal での支払いをクリックしたときに、Stripe.js を使用してその支払いを Stripe に送信します。Stripe.js は、決済フローを構築するための基本的な JavaScript ライブラリです。このライブラリにより、以下で説明するリダイレクトなどの複雑な処理が自動的に行われ、他の決済手段にも対応できるように実装を拡張できます。Stripe.js スクリプトを決済ページに含めるには、HTML ファイルの head にこのスクリプトを追加します。

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>

決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。

client.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 const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

クライアント側で支払いを作成するには、ステップ 2 で作成した PaymentIntent オブジェクトの client secret を渡します。client secret は、 Stripe API リクエストを認証する API キーとは異なります。client secret は支払いを完了できるため、慎重に取り扱う必要があります。記録したり、URL に埋め込んだり、当該の顧客以外に漏洩することがないようにしてください。

PayPal 支払いを確定する

stripe.confirmPayPalPayment を呼び出し、顧客を PayPal にリダイレクトして支払いを完了します。return_url を追加して、支払い完了後に Stripe が顧客をリダイレクトする場所を指定する必要があります。新しい PayPal の決済手段に return_url を追加することもできますが、SetupIntent で以前に設定された PayPal の決済手段、または setup_future_usage を含む PaymentIntent を使用する場合、追加は必須ではありません。

client.js
// Redirects away from the client const {error} = await stripe.confirmPayPalPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/checkout/complete', } ); if (error) { // Inform the customer that there was an error. }

PayPal の売上を PayPal で処理する場合、支払いに関連付けられた取引残高の金額は、支払い額に関係なくゼロになります。取引は Stripe 残高における入出金を表すものですが、PayPal では、売上が PayPal 残高で処理され、Stripe 残高に資金が移動しません。この場合の取引残高には、取引に伴う手数料も含まれます。売上処理の設定に関するその他の重要事項については、こちらで詳細をご覧ください。

リダイレクトを処理する

Stripe が顧客を return_url にリダイレクトする際に、以下の URL クエリパラメータが提供されます。

パラメータ説明
payment_intentPaymentIntent の一意の識別子。
payment_intent_client_secretPaymentIntent オブジェクトの client secret。

return_url を指定する際に、独自のクエリパラメータを追加することもできます。このクエリパラメータは、リダイレクトプロセスの始めから終わりまで存続します。return_url は、支払いのステータスを提供する Web サイトのページと一致している必要があります。戻りページをレンダリングするときに、PaymentIntent のステータスを確認してください。確認するには、Stripe.js の retrievePaymentIntent 関数を使用し、payment_intent_client_secret を渡します。

(async () => { const url = new URL(window.location); const clientSecret = url.searchParams.get('payment_intent_client_secret'); const {paymentIntent, error} = await stripe.retrievePaymentIntent(clientSecret); if (error) { // Handle error } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment } })();

payment_method_details プロパティには、支払い者の氏名、メールアドレス、支払人 ID、取引 ID が含まれています。

フィールド値
payer_emailPayPal アカウントの支払人のメールアドレス。
payer_namePayPal アカウントの支払人の名前。
payer_id支払人の PayPal アカウントの一意の ID。
transaction_idPayPal によって生成された一意の取引 ID。
{ "charges": { "data": [ { "payment_method_details": { "paypal": { "payer_id": "H54KFE9XXVVYJ", "payer_email": "jenny@example.com", "payer_name": "Jenny Rosen", "transaction_id": "89W40396MK104212M" }, "type": "paypal" }, "id": "src_16xhynE8WzK49JbAs9M21jaR", "object": "source", "amount": 1099, "client_secret": "src_client_secret_UfwvW2WHpZ0s3QEn9g5x7waU", "created": 1445277809, "currency": "eur", "flow": "redirect",

オプション支払い後のイベントを処理する

支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。ダッシュボード、カスタム Webhook、またはパートナーソリューションを使用してこれらのイベントを受信し、また、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。

クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があります。また、悪意を持つクライアントがレスポンスを不正操作する恐れもあります。非同期型のイベントをリッスンするよう構築済みのシステムを設定することで、これ以降はより多くの決済手段を簡単に受け付けられるようになります。サポートされているすべての決済手段の違いをご確認ください。

イベントを受信し、ビジネスアクションを実行する

ビジネスアクションを受信して実行するためのいくつかのオプションがあります。

手動

Stripe ダッシュボードは、すべての Stripe での支払いの確認、メール領収書の送信、入金処理、または失敗した支払いの再試行に使用できます。

  • ダッシュボードでテスト支払いを確認する

カスタムコード

Webhook ハンドラを作成してイベントをリッスンし、非同期型のカスタムの支払いフローを作成します。Stripe CLI を使用して、ローカルで Webhook 組み込みのテストとデバッグを行います。

  • カスタム Webhook を作成する

事前構築のアプリ

オートメーションやマーケティングとセールスなどの一般的なビジネスイベントを、パートナーアプリケーションとの連携によって処理します。

オプションPayPal リダイレクトを手動で処理する

Stripe.js を使用すると、実装を他の支払い方法に拡張することができます。ただし、お客様のサーバーに顧客を手動でリダイレクトすることもできます。

  1. タイプが paypal の PaymentIntent を作成し、確定します。payment_method_data を指定すると、PaymentMethod が作成され、PaymentIntent ですぐに使用されます。

また、顧客が支払いを完了した後にリダイレクトされる先の URL を return_url フィールドに指定する必要があります。独自のクエリパラメータをこの URL に指定することもできます。これらのパラメータは、リダイレクトフロー完了時の最終的な URL に含められます。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=paypal \ -d "payment_method_data[type]"=paypal \ --data-urlencode return_url="https://example.com/checkout/complete" \ -d confirm=true
  1. PaymentIntent のステータスが requires_action であることと、next_action のタイプが redirect_to_url であることを確認します。
Response
{ "status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", ... }
  1. next_action.redirect_to_url.url プロパティで指定された URL に顧客をリダイレクトします。ここでのコード例はおおまかなものであり、リダイレクト方法は、お客様のウェブフレームワークによって異なることがあります。
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
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 エンドポイントを設定することをお勧めします。

オプション支払いをオーソリし、後でキャプチャ

PayPal は、オーソリとキャプチャーの分離に対応しています。Stripe での売上処理を選択した場合オーソリは 10 日間有効です。Stripe は自動的に支払いを再度オーソリして、オーソリ期間をさらに 10 日間延長します。これにより有効期限は合計 20 日間になります。再オーソリが機能しない場合、Stripe は支払いを 10 日後すぐに期限切れにします。オーソリ期間の終了を把握するには、charge.expired Webhook をリッスンします。

PayPal での売上処理を選択した場合、オーソリは 3 日間有効なままになります。Stripe はオーソリ期間をさらに 3 日間延長します。最大 10 日間の延長されたオーソリの保証期間 (PayPal では「引受期間」と呼ばれます) については、PayPal サポートにお問い合わせください。

オーソリのみ行うように Stripe に指示する

オーソリとキャプチャーの分離を指定するには、PaymentIntent の作成時に capture_method を manual に設定します。このパラメーターは、顧客の PayPal アカウントの金額のみをオーソリするように Stripe に指示します。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d capture_method=manual \ -d "payment_method_types[]"=paypal \ -d "payment_method_data[type]"=paypal \ -d confirm=true \ --data-urlencode return_url="http://example.com"

オーソリが成功すると、Stripe は payment_intent.amount_capturable_updated イベントを送信します。詳細については、イベントガイドをご確認ください。

売上をキャプチャする

オーソリが完了すると、PaymentIntent のステータス は requires_capture に移行します。オーソリ済みの売上をキャプチャーするには、PaymentIntent のキャプチャーリクエストを作成します。デフォルトではオーソリ済みの総額がキャプチャーされます。これを超える金額をキャプチャーすることはできませんが、これより少ない金額をキャプチャーすることは可能です。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/capture \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount_to_capture=750

任意オーソリをキャンセルする

オーソリをキャンセルする必要がある場合は、PaymentIntent をキャンセルしてください。

オプションPayPal で非同期の支払い方法の使用を有効にする

デフォルトでは、Stripe は PayPal を使用した同期型の決済手段のみ許可します。これにより、各支払いの成功または失敗に関する即時通知を確実に受け取ることができます。非同期型の決済手段を許可すると、一部の支払いで通知の遅延が発生することがあります。このような支払いの成功または失敗に関する通知を受け取るには、Webhook エンドポイントを使用します。

PayPal で非同期型の支払いを有効にするには、Stripe サポートにお問い合わせください。

オプションエラーコード

これらは、PayPal を導入する際の一般的なエラーコードと対応する詳細です。PayPal API リクエストがエラーを返す場合、エラーにはリクエストの PayPal 問題コードとデバッグ ID が含まれます。サポートが必要な場合は、デバッグ ID を使用して PayPal サポートにお問い合わせいただけます。

エラーコード詳細
country_code_invalid配送先住所で指定された国コードが無効です。
incorrect_address指定した配送先住所が無効です。このエラーは、指定された国が追加で市区町村または郵便番号を必要とする場合にも発生します。詳細については、エラーメッセージを確認し、Debug ID と PayPal issue を使用して PayPal サポートにお問い合わせください。
payment_method_not_availablepaypal 支払い方法は、現在利用できません。このエラーは、PayPal API に接続する際のタイムアウトまたはサーバーの問題によって引き起こされる場合があります。
payment_method_provider_decline取引が PayPal によって拒否されています。これは一般的に、加盟店の PayPal における不正防止設定、準拠違反、または支払人が選択された資金供給手段での支払いを実行できないことが原因で発生します。詳細については、エラーメッセージを確認し、Debug ID と PayPal issue を使用して PayPal サポートにお問い合わせください。
payment_method_provider_timeoutPayPal でリクエストがタイムアウトしました。多くの場合、これは一時的なエラーなので、しばらく経ってからリクエストを再試行できます。
payment_method_unactivatedStripe アカウントで paypal の支払い方法が有効になっていません。
payment_method_unexpected_statePayPal でのリクエストが失敗しました。これは、加盟店のビジネス用口座が PayPal によってロック、制限、閉鎖されているとき、または支払人の PayPal アカウントが制限されているときに発生する可能性があります。詳細については、エラーメッセージを確認し、Debug ID と PayPal issue を使用して PayPal サポートにお問い合わせください。

オプションPayPal の組み込みをテストする

PayPal の導入で支払いの成功をテストするには、テスト API キーを使用して、リダイレクトページを表示します。このページには、テストシナリオとしてユーザー認証のオーソリまたは失敗のオプションが表示されます。Authorize test payment (テスト支払いをオーソリする) を選択すると、PaymentIntent は requires_action から succeeded に移行します。

ユーザーが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページで Fail test payment (テスト支払い失敗) をクリックします。PaymentIntent が、requires_action から requires_payment_method に変化します。

PayPal 支払いで最も一般的な導入と失敗シナリオをシミュレーションするには、PaymentIntent の作成時に、請求詳細の一部として、テストシナリオで説明されているパターンと一致する email 値を渡します。たとえば、サーバー側で PaymentIntent を確定する際に、PayPal によって拒否される取引をシミュレーションするリクエストは以下のようになります。

Command Line
cURL
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=paypal \ -d "payment_method_data[type]"=paypal \ --data-urlencode "payment_method_data[billing_details][email]"="transaction_refused@example.com"

テストシナリオ

メールアドレスのパターンシナリオ説明
.*payee_account_restricted@.*制限対象の加盟店アカウント加盟店アカウントが PayPal によって制限されている場合、支払いのキャプチャーまたはオーソリは、payment_method_unexpected_state エラーで失敗します。オーソリ時にこのパターンに一致するメールアドレスを指定して、オーソリを失敗させます。
.*transaction_refused@.*拒否された取引取引が PayPal によって拒否された場合、支払いのキャプチャーは、payment_method_provider_decline エラーで失敗します。
.*instrument_declined@.*拒否された支払い方法指定された支払い方法が代行業者または銀行によって拒否されたか、この支払いには使用できない場合、支払いのキャプチャーは、payment_method_provider_decline エラーで失敗します。
.*authorization_expired@.*オーソリ済みの支払いを手動でキャプチャーするオーソリがすでに期限切れになっている場合、オーソリ済みの支払いのキャプチャーは、capture_charge_authorization_expired エラーで失敗します。
このページはお役に立ちましたか。
はいいいえ
  • お困りのことがございましたら 、サポートにお問い合わせください。
  • 早期アクセスプログラムにご参加ください。
  • 変更ログをご覧ください。
  • ご不明な点がございましたら、お問い合わせください。
  • LLM ですか?llms.txt を読んでください。
  • Powered by Markdoc