トークンを使って注文を作成する

このガイドでは、トークンを使って注文を作成する方法を説明します。

Smartpay API を使用する

Smartpay トークンを作成したお客様に対して Smartpay API から請求する際は、そのトークンを使って注文を作成する必要があります。トークンとトークンを所有するお客様の両方が有効化されている必要があります。

トークンを使って注文を作成する

お客様に請求する準備ができたら、注文の作成 API エンドポイントを呼び出して注文を作成します。

支払いの承認は、トークンの作成時には行われないのでご注意ください。支払いの承認は、トークンを使った注文の作成時に行われます。つまり、トークンの承認に成功した場合でも、そのトークンを使った注文の処理では拒否される場合があります。注文の処理を開始する前に注文ステータスを確認してください。

各リクエストごとに注文が作成され、各注文ごとにお客様に請求が行われます。API の冪等性 を参照し、誤って二重請求を行わないよう注意してください。

引数の全リストは、支払いの作成 API エンドポイント を参照してください。以下のフィールドは必須項目です。

  • amount: 当該の注文により回収される予定金額です。通貨の最小単位の正の整数です。
  • currency: 大文字3文字の ISO 通貨コードです。サポートされている通貨である必要があります。
  • customerInfo: お客様情報です。ここで入力する詳細は、承認時に使用される場合があります。送信される情報量が多いほど、承認率が高まります。
  • items: お客様が注文した品目です。
  • shippingInfo: 注文の配送先情報です。
  • token: 各トークンの一意の識別子で、当該の注文の作成時に使用されます。
curl --request POST \
     --url https://api.smartpay.co/v1/orders \
     --header 'Authorization: Basic sk_test_cok3psbYJpZZX9x3yboLIH' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
     "amount": 1500,
     "currency": "JPY",
     "customerInfo": {
          "accountAge": 30,
          "address": {
               "line1": "虎ノ門1-17-1",
               "line2": "虎ノ門ヒルズビジネスタワー 15階",
               "line3": "string",
               "line4": "string",
               "line5": "string",
               "subLocality": "string",
               "locality": "港区",
               "administrativeArea": "東京都",
               "postalCode": "105-6415",
               "country": "JP"
          },
          "dateOfBirth": "2022-10-06",
          "emailAddress": "[email protected]",
          "firstName": "John",
          "firstNameKana": "ジョン",
          "lastName": "Doe",
          "lastNameKana": "ドエ",
          "legalGender": "male",
          "phoneNumber": "+818000000000",
          "reference": "my_customer_reference"
     },
     "items": [
          {
               "amount": 1000,
               "brand": "FARVALUE",
               "currency": "JPY",
               "description": "ニット セーター",
               "gtin": "682141169930",
               "images": [
                    "https://mystore.jp/images/image.png"
               ],
               "label": "string",
               "name": "セーター",
               "priceDescription": "string",
               "productDescription": "string",
               "quantity": 0,
               "reference": "string",
               "url": "https://mystore.jp/my-product/",
               "kind": "product"
          }
     ],
     "reference": "my_merchant_order_reference",
     "shippingInfo": {
          "address": {
               "line1": "虎ノ門1-17-1",
               "line2": "虎ノ門ヒルズビジネスタワー 15階",
               "line3": "string",
               "line4": "string",
               "line5": "string",
               "subLocality": "string",
               "locality": "港区",
               "administrativeArea": "東京都",
               "postalCode": "105-6415",
               "country": "JP"
          },
          "addressType": "home",
          "carrierName": "yamato",
          "reference": "1234-5678-9123",
          "feeAmount": 500,
          "feeCurrency": "JPY"
     },
     "token": "paytok_test_zAo001ZRfyjz1F4rMyYPnL"
}
'
$api = new \Smartpay\Api(getenv('SECRET_KEY'), getenv('PUBLIC_KEY'));

$payment = $api->createOrder([
  'amount' => 1500,
  'currency' => 'JPY',
  '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'
  ],
  'items' => [
    [
      'amount' => 1000,
      'brand' => 'FARVALUE',
      'currency' => 'JPY',
      'description' => 'ニット セーター',
      'gtin' => '682141169930',
      'images' => [
        'https://mystore.jp/images/image.png'
      ],
      'name' => 'セーター',
      'quantity' => 1,
      'reference' => 'my_merchant_product_reference',
      'url' => 'https://mystore.jp/my-product/'
    ]
  ],
  'locale' => 'ja',
  'reference' => 'my_merchant_order_reference',
  'shippingInfo' => [
    'address' => [
      'line1' => '虎ノ門1-17-1',
      'line2' => '虎ノ門ヒルズビジネスタワー 15階',
      'locality' => '港区',
      'administrativeArea' => '東京都',
      'postalCode' => '105-6415',
      'country' => 'JP',
    ],
    'feeAmount' => 500,
    'feeCurrency' => 'JPY',
  ],
  'token' => 'paytok_test_zAo001ZRfyjz1F4rMyYPnL'
]);
Smartpay.configure do |config|
  config.public_key = ENV['PUBLIC_KEY']
  config.secret_key = ENV['SECRET_KEY']
end

session = Smartpay::Api.create_order({
  amount: 1500,
  currency: 'JPY',
  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',
  },
  items: [
    {
      amount: 1000,
      brand: 'FARVALUE',
      currency: 'JPY',
      description: 'ニット セーター',
      gtin: '682141169930',
      images: [
        'https://mystore.jp/images/image.png'
      ],
      label: null,
      metadata: {},
      name: 'セーター',
      priceDescription: null,
      priceMetadata: {},
      productDescription: null,
      productMetadata: {},
      quantity: 1,
      reference: 'my_merchant_product_reference',
      url: 'https://mystore.jp/my-product/'
    }
  ],
  reference: 'my_merchant_order_reference',
  shippingInfo: {
    address: {
      line1: '虎ノ門1-17-1',
      line2: '虎ノ門ヒルズビジネスタワー 15階',
      locality: '港区',
      administrativeArea: '東京都',
      postalCode: '105-6415',
      country: 'JP',
    },
    feeAmount: 500,
    feeCurrency: 'JPY',
  },
  token: 'paytok_test_zAo001ZRfyjz1F4rMyYPnL',
})
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_order({
    "amount": 1500,
    "currency": "JPY",
    "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",
    },
    "items": [
        {
             "amount": 1000,
             "brand": "FARVALUE",
             "currency": "JPY",
             "description": "ニット セーター",
             "gtin": "682141169930",
             "images": [
                  "https://mystore.jp/images/image.png"
             ],
             "label": null,
             "metadata": {},
             "name": "セーター",
             "priceDescription": null,
             "priceMetadata": {},
             "productDescription": null,
             "productMetadata": {},
             "quantity": 1,
             "reference": "my_merchant_product_reference",
             "url": "https://mystore.jp/my-product/"
        }
    ],
    "reference": "my_merchant_order_reference",
    "shippingInfo": {
        "address": {
            "line1": "虎ノ門1-17-1",
            "line2": "虎ノ門ヒルズビジネスタワー 15階",
            "locality": "港区",
            "administrativeArea": "東京都",
            "postalCode": "105-6415",
            "country": "JP",
          },
        "feeAmount": 500,
        "feeCurrency": "JPY",
    },
    "token": "paytok_test_zAo001ZRfyjz1F4rMyYPnL",
})

注文が作成されると、Smartpay がその取引の審査を行います。その結果に応じて、注文は成功または拒否となります。

成功した場合

Smartpay が注文を承認すると、自動キャプチャをご使用の場合(デフォルト)は、返される注文は succeeded ステータスになり、手動キャプチャの場合(注文の作成リクエストで captureMethod = manual と指定)は、requires_capture ステータスになります。注文の処理を開始してください。

拒否された場合

お客様アカウントやトークンが有効ではないなどの理由で Smartpay が注文を拒否した場合、返される注文のステータスは rejected になります。お客様に連絡し、他の支払い方法を選択するよう依頼してください。