コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けリソース
概要
Stripe Payments について
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments
Payment Links を使用する
決済ページを構築
高度なシステムを構築
アプリ内実装を構築
    概要
    Payment Sheet
    Embedded Payment Element
    アプリ内購入のリンク
    住所を収集
    アメリカとカナダのカード
      認証なしのカードの保存
      認証を処理するためのアップグレード
決済手段
決済手段を追加
決済手段を管理
Link による購入の迅速化
支払いインターフェイス
Payment Links
Checkout
Web Elements
アプリ内 Elements
決済シナリオ
複数の通貨を扱う
カスタムの決済フロー
柔軟なアクワイアリング
オーケストレーション
店頭支払い
端末
決済にとどまらない機能
会社を設立する
仮想通貨
Financial Connections
Climate
ホーム支払いBuild an in-app integrationUS and Canadian cards

注

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

銀行の認証なしでカードを保存する

モバイルアプリでカード情報を収集し、後で顧客に請求します。

Stripe では、顧客のカード詳細を収集して後で請求できます。一部の地域では、銀行により、2 段階目の認証 (スマートフォンに送信されたコードの入力など) が要求されます。この追加ステップにより、顧客が Web サイトまたはアプリケーションをアクティブに使用していない場合は、購入の認証ができないためにコンバージョン率が低下します。

アメリカとカナダを中心にして事業を運営している場合は、銀行によって認証が要求されないため、より簡単なこの実装を使用できます。この実装は、カードの保存に認証が必要な国では非準拠となるため、この実装を構築すると、他の国に事業を拡大する場合や他の決済手段を追加する場合に、大幅な変更が必要になります。認証が必要なカード情報の保存方法をご確認ください。

法令遵守

お客様は、顧客の支払い情報を保存する際の該当する法律、規制、ネットワークのルールのすべてに準拠する責任を負います。たとえば、顧客がお客様のウェブサイトやアプリを積極的には使用していない時期に顧客に請求するなど、将来の利用に備えて顧客の支払い方法を保存する場合が該当します。支払い方法の保存をどのように計画しているかを示す規約をウェブサイトやアプリに追加し、顧客が許可できるようにします。顧客がオフラインのときに請求する予定である場合は、規約に以下の内容も含める必要があります。

  • 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することを許可するという、顧客からお客様への同意。
  • 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いなのか、サブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。
  • 支払い金額の決定方法。
  • 支払い方法をサブスクリプションサービスに使用する場合は、キャンセルに関するポリシー。

これらの規約に関する顧客の書面による同意の記録を必ず保管してください。

Stripe をセットアップする
サーバー側
クライアント側

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

組み込みを開始する前に、iOS とサーバーの Stripe SDK を設定します。

サーバー側

この組み込みには Stripe API と通信するエンドポイントがサーバー上に必要です。公式ライブラリを使用してください。

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

クライアント側

Stripe iOS SDK はオープンソースです。詳細なドキュメントが提供されており、iOS 13 以降をサポートするアプリと互換性があります。

SDK をインストールするには、以下のステップに従います。

  1. Xcode で、File (ファイル) > Add Package Dependencies… (パッケージ依存関係を追加) を選択し、リポジトリー URL として https://github.com/stripe/stripe-ios-spm を入力します。
  2. リリースページから最新のバージョン番号を選択します。
  3. StripePaymentsUI 製品をアプリのターゲットに追加します。

注

SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases (リリース) ページをご覧ください。リポジトリのリリースをウォッチして、新しいリリースの公開時に通知を受け取ることも可能です。

アプリの起動時に Stripe 公開可能キーを使用して SDK を設定します。これにより、アプリが Stripe API にリクエストを送信できるようになります。

AppDelegate.swift
Swift
import UIKit import StripePaymentsUI @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { StripeAPI.defaultPublishableKey =
"pk_test_TYooMQauvdEDq54NiTphI7jx"
// do any other necessary launch configuration return true } }

注

テストおよび開発時にはテストキーを使用し、アプリの公開時には本番環境キーを使用します。

カード詳細を収集する
クライアント側

まず、顧客に支払いフォームを表示します。カード番号、有効期限、セキュリティコード、郵便番号を収集する SDK が提供するドロップイン UI コンポーネントである STPPaymentCardTextField を使用して、顧客からカード詳細を収集します 。

STPPaymentCardTextField は、その時点で検証と形式の設定を行います。

カード詳細を createPaymentMethod に渡し、PaymentMethod を作成します。

CheckoutViewController.swift
Swift
class CheckoutViewController: UIViewController { lazy var cardTextField: STPPaymentCardTextField = { let cardTextField = STPPaymentCardTextField() return cardTextField }() @objc func pay() { // Collect card details on the client STPAPIClient.shared.createPaymentMethod(with: cardTextField.paymentMethodParams) { [weak self] paymentMethod, error in guard let paymentMethod = paymentMethod else { // Display the error to the user return } let paymentMethodId = paymentMethod.stripeId // Send paymentMethodId to your server for the next steps } } }

結果として得られた PaymentMethod ID をお客様のサーバーに送信し、残りの手順に従って顧客にカードを保存し、将来そのカードに対して請求します。

カードを保存する
サーバー側

PaymentMethod を Customer に関連付けることでカードを保存します。Customer オブジェクトを使用して、顧客に関する他の情報 (配送の詳細、メールアドレスなど) を格納できます。

Command Line
cURL
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d payment_method={{PAYMENT_METHOD_ID}}

既存の Customer がある場合は、代わりにそのオブジェクトに PaymentMethod を関連付けることがきます。

Command Line
cURL
curl https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/attach \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
{{CUSTOMER_ID}}

この時点で、顧客の内部的な独自の表記がある場合は、この表記に Customer オブジェクトの ID と PaymentMethod の ID を関連付けます。

保存されたカードに請求する
サーバー側

顧客に請求する準備ができたら、請求する PaymentMethod ID を検索します。これは、両方の ID をお客様のデータベースに格納するか、顧客 ID を使用して顧客の使用可能なすべての PaymentMethod を検索することで実行できます。

Command Line
cURL
curl -G https://api.stripe.com/v1/payment_methods \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
{{CUSTOMER_ID}}
\ -d type=card

PaymentMethod ID と顧客 ID を使用して新しい PaymentIntent を作成します。error_on_requires_action を true に設定して、2 段階認証など、顧客のアクションを必要とする支払いは拒否します。

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d customer=
{{CUSTOMER_ID}}
\ -d payment_method={{PAYMENT_METHOD_ID}} \ -d error_on_requires_action=true \ -d confirm=true

支払いが失敗すると、リクエストも 402 HTTP ステータスコードで失敗し、Stripe からエラーが返されます。アプリケーションに戻って支払いを完了するように (アプリ内通知を送信するなどして) 顧客に通知する必要があります。Stripe API ライブラリから発生したエラーのコードを確認するか、PaymentIntent の last_payment_error.decline_code を確認し、カード発行会社が支払いを拒否した理由を調べます。

カードエラーを処理する

支払いが失敗したことを顧客に通知し、ステップ 1 でお客様が作成した決済フォームに顧客を転送します。顧客はそこで新しいカード詳細を入力できます。その新しい PaymentMethod ID をお客様のサーバーに送信して、Customer オブジェクトに関連付けし、再度支払いを行います。

別の方法として、既に作成済みの Customer がある場合は、PaymentIntent の作成とカードの保存を、すべて 1 回の API コールで実行できます。

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d customer=
{{CUSTOMER_ID}}
\ -d payment_method={{PAYMENT_METHOD_ID}} \ -d error_on_requires_action=true \ -d confirm=true \ -d setup_future_usage=on_session

setup_future_usage を on_session に設定すると、不要な認証をトリガーせずに今後のためにカードを保存することを Stripe に対して示します。

組み込みをテストする

Stripe は、サンドボックスで使用してさまざまなカードの機能をシミュレーションできるテストカードを提供しています。これらのカードを、任意のセキュリティコード、郵便番号、将来の有効期限とともに使用してください。

番号説明
成功し、支払いがすぐに処理されます。
常に支払い拒否コード insufficient_funds で失敗します。
認証が必要なため、この組み込みでは、authentication_required というコードで拒否されます。

オプションセキュリティコードを再収集する

カード認証を処理するために組み込みをアップグレードする

この組み込みでは、支払い時に認証を必要とするカードは拒否されます。ダッシュボードに多くの支払いが Failed としてリストされるようになった場合は、組み込みのアップグレードが必要なタイミングです。Stripe のグローバルな組み込みは、そのような支払いを自動的に拒否するのではなく処理します。

このページはお役に立ちましたか。
はいいいえ
お困りのことがございましたら 、サポートにお問い合わせください。
早期アクセスプログラムにご参加ください。
変更ログをご覧ください。
ご不明な点がございましたら、お問い合わせください。
LLM ですか?llms.txt を読んでください。
Powered by Markdoc