Androidでの利用

PAY.JP Android SDK はPAY.JPをAndroidアプリに導入するためのSDKです。

SDKの提供する「カード情報のトークン化」機能を利用することで、カード情報を事業者さまのサーバで扱うことなく支払い処理をおこなうことができます。

ここではアプリにSDKを組み込み、クレジットカード情報をトークン化する方法について説明します。

なお、以下のサンプルコードはKotlinによって記述されています。Javaのサンプルコードはgithubのリポジトリを参照ください。

payjp/payjp-android: PAY.JP Android SDK

インストール

build.gradle のdependenciesに下記を追加します。バージョンは最新のものにします。

implementation "jp.pay:payjp-android:$latest_version"

SDKの初期化

PayjpToken クラスのオブジェクトを生成します。アプリ内でシングルトンで扱うことを推奨します。PayjpToken.init(String) で初期化すると、PayjpToken.getInstance() でシングルトンオブジェクトを扱うことができます。

以下のように、android.app.Application クラスを継承したアプリケーションクラスの onCreate() でSDKを初期化します。

このときPAY.JPのパブリックキーを設定してください。

class SampleApplication: Application() {

    override fun onCreate() {
        super.onCreate()
        PayjpToken.init(PayjpTokenConfiguration.Builder("pk_test_0383a1b8f91e8a6e3ea0e2a9")
                .setDebugEnabled(BuildConfig.DEBUG)
                .build())
    }
}

PayjpTokenはコンストラクタで生成しアプリで管理することも可能です。

カード情報からトークンを生成する

トークンを生成するには以下のカード情報が必要になります。

  • クレジットカード番号(例: 4242424242424242
  • CVC(例: 123
  • 有効期限(月)(例: 02
  • 有効期限(年)(例: 2020

必須ではないですが以下の情報を設定することもできます。(※SDKバージョン0.3.0以上)

  • カード保有者名(例: TARO YAMADA

PayjpToken#createTokenを上記のカード情報を引数に呼び出します。 Task<Token> オブジェクトは同期/非同期でトークンの生成処理を実行し、返り値またはコールバックで生成結果を取得できます。

fun startCreateToken() {
  PayjpToken.getInstance().createToken(
      number = "4242424242424242", 
      cvc = "123", 
      expMonth = "02", 
      expYear = "2020",
      name = "TARO YAMADA")
      .enqueue(object : Task.Callback<Token> {
          override fun onSuccess(data: Token) {
              Log.i("PAY.JP", "token => $data")
          }

          override fun onError(throwable: Throwable) {
              Log.e("PAY.JP", "failure creating token", throwable)
          }
      })
}

生成済みのトークン情報を取得する

トークンIDを利用してすでに生成済みのトークンには、PayjpToken#getTokenを呼び出します。

fun getTokenById(tokenId: String) {
  PayjpToken.getInstance().getToken(id = tokenId)
      .enqueue(object : Task.Callback<Token> {
          override fun onSuccess(data: Token) {
              Log.i("PAY.JP", "token => $data")
          }

          override fun onError(throwable: Throwable) {
              Log.e("PAY.JP", "failure getting token", throwable)
          }
      })
}

トークン情報を利用する

生成したトークンは支払いを始め、各種処理に利用することができます。 トークンオブジェクト(Token)には例として下記のような情報が含まれます。

fun display(token: Token) {
    Log.d("PAY.JP", """
token.id = ${token.id}
token.card.id = ${token.card.id}
token.card.last4 = ${token.card.last4}
token.card.exp = ${token.card.expirationMonth}/${token.card.expirationYear}
token.card.name = ${token.card.name}
""")
// output => 
// token.id = tok_5ca06b51685e001723a2c3b4aeb4
// token.card.id = car_e3ccd4e0959f45e7c75bacc4be90
// token.card.last4 = 4242
// token.card.exp = 2/2020
// token.card.name = TARO YAMADA
}

詳細なトークンオブジェクト(PAYJP.Token)については APIリファレンスを御覧ください。

ソースコード・サンプルコード

SDKはgithubで公開されています。 SDKのソースコードのほか、Java/Kotlinのサンプルコードをご覧になれます。

payjp/payjp-android: PAY.JP Android SDK