トークンを作成する

このガイドでは、Smartpay トークンを作成する方法を説明します。トークンの作成後は、お客様による Smartpay チェックアウトが不要になり、そのトークンを使って請求することができます。

1. トークンの作成を開始する

チェックアウトセッションの作成 エンドポイントを呼び出し、サーバーからチェックアウトセッションを作成します。この呼び出しにより、作成されたチェックアウトセッションとトークンがそれぞれの ID とお客様をリダイレクトする URL と一緒に返されます。返された token.id は、後で注文を作成したり、トークンを管理(無効化や削除など)する際に必要なため、システムに保存してください。

チェックアウトセッションの作成は貴社のサーバーから行う必要があり、秘密 API キーが必要です。それにより、悪意あるユーザーによる改ざんを防ぐことができます。

引数の全リストは、[チェックアウトセッションの作成 API エンドポイント]を参照してください。以下のフィールドはトークン固有の項目です。

  • mode: token に設定し、トークンの作成ではチェックアウトセッションを使うように指定します。
  • この呼び出しで注文金額と購入商品を送信する必要はありません。トークンに金額の制限はなく、作成したトークンを使って注文を作成する時に商品と金額を指定します。
curl --request POST \
     --url https://api.smartpay.co/v1/checkout-sessions \
     --header 'Accept: application/json' \
     --header 'Authorization: Basic sk_test_abcdef12345678' \
     --header 'Content-Type: application/json' \
     --data '
{
     "cancelUrl": "https://mystore.jp/cancel",
     "customerInfo": {
          "accountAge": 30,
          "address": {
               "line1": "虎ノ門1-17-1",
               "line2": "虎ノ門ヒルズビジネスタワー 15階",
               "locality": "港区",
               "administrativeArea": "東京都",
               "postalCode": "105-6415",
               "country": "JP"
          },
          "dateOfBirth": "2019-08-24",
          "emailAddress": "[email protected]",
          "firstName": "John",
          "firstNameKana": "ドエ",
          "lastName": "Doe",
          "lastNameKana": "ドエ",
          "legalGender": "male",
          "phoneNumber": "+818000000000",
          "reference": "string"
     },
     "locale": "ja",
     "mode": "token",
     "reference": "my_merchant_token_reference",
     "successUrl": "https://mystore.jp/success",
     "tokenType": "recurring"
}
'
$api = new \Smartpay\Api(getenv('SECRET_KEY'), getenv('PUBLIC_KEY'));

$checkoutSession = $api->checkoutSession([
  'cancelUrl' => 'https://mystore.jp/cancel',
  'customerInfo' => [
    'accountAge' => 30,
    'address' => [
      'line1' => '虎ノ門1-17-1',
      'line2' => '虎ノ門ヒルズビジネスタワー 15階',
      'locality' => '港区',
      'administrativeArea' => '東京都',
      'postalCode' => '105-6415',
      'country' => 'JP'
    ],
    'dateOfBirth' => '2019-08-24',
    'emailAddress' => '[email protected]',
    'firstName' => 'John',
    'firstNameKana' => 'ドエ',
    'lastName' => 'Doe',
    'lastNameKana' => 'ドエ',
    'legalGender' => 'male',
    'phoneNumber' => '+818000000000',
    'reference' => 'string'
  ],
  'locale' => 'ja',
  'mode' => 'token',
  'reference' => 'my_merchant_token_reference',
  'successUrl' => 'https://mystore.jp/success',
  'tokenType' => 'recurring'
]);
Smartpay.configure do |config|
  config.public_key = ENV['PUBLIC_KEY']
  config.secret_key = ENV['SECRET_KEY']
end

session = Smartpay::Api.create_checkout_session({
  cancelUrl: 'https://mystore.jp/cancel',
  customerInfo: {
    accountAge: 30,
    address: {
      line1: '虎ノ門1-17-1',
      line2: '虎ノ門ヒルズビジネスタワー 15階',
      locality: '港区',
      administrativeArea: '東京都',
      postalCode: '105-6415',
      country: 'JP',
    },
    dateOfBirth: '1985-06-30',
    email: '[email protected]',
    firstName: '田中',
    lastName: '太郎',
    firstNameKana: 'たなか',
    lastNameKana: 'たろう',
    legalGender: 'male',
    phoneNumber: '+818000000000',
    reference: 'my_merchant_consumer_reference',
  },
  locale: 'ja',
  mode: 'token',
  reference: 'my_merchant_token_reference',
  successUrl: 'https://mystore.jp/success',
  tokenType: 'recurring',
})
SECRET_KEY = os.environ.get('SECRET_KEY', '<YOUR_SECRET_KEY>')
PUBLIC_KEY = os.environ.get('PUBLIC_KEY', '<YOUR_PUBLIC_KEY>')

smartpay = Smartpay(SECRET_KEY, public_key=PUBLIC_KEY)

session = smartpay.create_checkout_session({
    "cancelUrl": "https://mystore.jp/cancel",
    "customerInfo": {
        "accountAge": 30,
        "address": {
          "line1": "虎ノ門1-17-1",
          "line2": "虎ノ門ヒルズビジネスタワー 15階",
          "locality": "港区",
          "administrativeArea": "東京都",
          "postalCode": "105-6415",
          "country": "JP",
        },
        "dateOfBirth": "1985-06-30",
        "email": "[email protected]",
        "firstName": "田中",
        "lastName": "太郎",
        "firstNameKana": "たなか",
        "lastNameKana": "たろう",
        "legalGender": "male",
        "phoneNumber": "+818000000000",
        "reference": "my_merchant_consumer_reference",
    },
    "locale": "ja",
    "mode": "token",
    "reference": "my_merchant_order_reference",
    "successUrl": "https://mystore.jp/success",
    "tokenType": "recurring",
})

2. お客様を Smartpay チェックアウトにリダイレクトする

チェックアウトセッション作成の呼び出しにより返される URL でお客様を Smartpay チェックアウトのページにリダイレクトします。

3. お客様が Smartpay チェックアウトを完了する

お客様が Smartpay チェックアウトを完了すると、加盟店様の Web サイトに戻ります。

  1. お客様が支払いを確定すると、Smartpay がトークンを有効化し、お客様は加盟店様が指定した成功 URL にリダイレクトされます。
  2. お客様がキャンセルした場合は、加盟店様が指定したキャンセル URL にリダイレクトされます。

有効なトークン

お客様がチェックアウトに成功すると、チェックアウトセッションで設定された成功 URL にリダイレクトされます。お客様に確認ページを表示してください。その後はそのトークンを使って注文を作成することができます。

トークンは、リスト表示、無効化、有効化、または削除することができます。詳細については、トークンを管理する を参照してください。

トークンのキャンセル

お客様がチェックアウトセッションをキャンセルした場合、チェックアウトセッションで設定されたキャンセル URL にリダイレクトされます。お客様に適切なメッセージを表示し、他の支払い方法を選択するよう依頼してください。

役立つ知識

  • 支払いの承認は、トークンの作成時ではなくトークンを使った注文の作成時に行われます。つまり、トークンの承認に成功した場合でも、そのトークンを使った注文の処理では拒否される場合があります。
  • トークンは失効しないため、不要になったトークンは 無効化 または 削除 してください。
  • お客様は1つの加盟店様に対して複数のトークンを持つことができます。