Stripe Elements と Charges API を使用して決済を受け付けるCharges API
アメリカ合衆国およびカナダの顧客からのオンライン決済を受け付けます。
レガシーの API
The content of this section refers to a Legacy feature. Use the Payment Intents API instead.
Charges API は、以下の機能をサポートしていません。これらの多くはクレジットカードのコンプライアンスのために必要となります。
Stripe の事前構築された UI コンポーネントを使用して支払いフォームを作成すると、機密データを処理することなく、顧客のカード詳細を安全に収集することができます。カード詳細は、それを示す Token に変換され、安全にサーバーに送信することができます。お客様のサーバーはそのトークンを使用して支払いを作成できます。
Stripe の設定クライアント側サーバ側
サーバ側
この組み込みには、Stripe API と通信するエンドポイントがサーバに必要です。サーバから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe Android SDK はオープンソースであり、詳細なドキュメントが提供されています。
To install the SDK, add stripe-android
to the dependencies
block of your app/build.gradle file:
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリのリリースを確認してください。
Stripe の公開可能キーを使用して SDK を設定し、 Application
サブクラスなどで、Stripe API へのリクエストを実行できるようにします。
独自の支払いフォームの作成クライアント側
カード番号、有効期限、セキュリティコード、郵便番号を収集する、SDK が提供するドロップイン UI コンポーネント、CardInputWidget を使用して、クライアント側でカード情報を安全に収集します。
CardInputWidget は、その時点で検証と形式の設定を行います。
以下を決済ページのレイアウトに追加し、カードコンポーネントのインスタンスを作成し、支払い ボタンを作成します。
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_checkout" tools:context=".CheckoutActivity"> <!-- ... --> <com.stripe.android.view.CardInputWidget android:id="@+id/cardInputWidget" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp"/> <Button android:text="Pay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/payButton" android:layout_marginTop="20dp" app:layout_constraintTop_toBottomOf="@+id/cardInputWidget" app:layout_constraintStart_toStartOf="@+id/cardInputWidget" app:layout_constraintEnd_toEndOf="@+id/cardInputWidget"/> <!-- ... --> </androidx.constraintlayout.widget.ConstraintLayout>
アプリを実行し、決済ページにカードコンポーネントと支払いボタンが表示されることを確認します。
トークンの作成クライアント側
ユーザーが支払いボタンをタップしたら、CardInputWidget
で収集されたカード情報を Stripe トークンに変換します。トークン化により、機密情報であるカードデータはお客様のサーバーを介することがなくなるため、お客様のシステムは PCI 準拠を維持できます。
以下のコードは、Stripe#createToken() の使用方法を示したものです。このメソッドは Card
インスタンスを最初のパラメータとして使用します。2 番目のパラメータは ApiResultCallback<Token> インスタンスで、成功または失敗時にクライアントによって呼び出されます。トークン化が成功したら、返されたトークン ID をサーバに送信します。
クライアントから、Token id をサーバーに送信します。
トークンでの支払いの作成サーバ側
支払いの作成の応答は、Charge (支払い) またはエラーコードを含む Error (エラー) のいずれかになります。応答が成功の場合は、顧客の注文のフルフィルメントを行い、成功ページを表示できます。それ以外の場合は、エラーを表示できます。
組み込みのテスト
カード Element にテストカードを入力したら、それをサーバに送信し、サーバが支払いを作成したかどうか確認します。これで組み込みは終了です。
カード決済の受け付けをすぐに開始できる Charges API 実装が作成されました。この API は、アメリカとカナダ以外の企業や顧客の規模拡大には対応していません。より堅牢でグローバルな決済ついては、Payment Intents API を使用した決済の受け付けをご確認ください。