加盟店様向け TLS 1.2 接続試験環境のご案内

PAY.JP をより安全にご利用いただくために、PAY.JP とのすべての暗号通信に TLS 1.2 を採用し、古い TLS による接続の提供を終了させていただきます。 つきましては加盟店の皆様向けに、ご利用中のシステムが正常に TLS 1.2 を取り扱えることをご確認いただくための接続試験環境をご用意いたしました。

試験環境について

ドメイン
api-tls12test.pay.jp
ご利用いただける api endpoint
https://api-tls12test.pay.jp/v1/accounts
仕様
  • TLS 1.2 でのみ接続可能です
  • 本番環境とは隔離されたダミーアプリケーションです
  • 上記以外の api endpoint は動作しません
  • apikey による認証はなく、常に固定のレスポンスが返却されます

検証の方法

一部の PAY.JP SDK では API ベース URL の変更に対応しております*1。 はじめに、 Python の PAY.JP 公式ライブラリを Python シェル内で使用した検証の例を示します。

Python

>>> import payjp
>>> payjp.api_key = 'sk_test_anything'
>>> payjp.api_base = 'https://api-tls12test.pay.jp'  ### APIベースを変更します
>>> payjp.Account.retrieve()

期待されるレスポンスは次のとおりです。

<Account account id=acct_abcdefabcdefabcdefabcdefabc at 0x7faa0dd1b570> JSON: {
  "created": 1496141926,
  "email": "tls12-configuration-good@example.com",
  "id": "acct_abcdefabcdefabcdefabcdefabc",
  "merchant": {
    "bank_enabled": false,
    "brands_accepted": [],
    "business_type": null,
    "charge_type": null,
    "contact_phone": null,
    "country": null,
    "created": 1496141926,
    "currencies_supported": [
      "jpy"
    ],
    "default_currency": "jpy",
    "details_submitted": false,
    "id": "acct_mch_abcdefabcdefabcdefabcde",
    "livemode_activated_at": null,
    "livemode_enabled": false,
    "object": "merchant",
    "product_detail": null,
    "product_name": null,
    "product_type": null,
    "site_published": null,
    "url": null
  },
  "object": "account"
}

このように、アカウントオブジェクトが正常に取得されており、その email フィールドが tls12-configuration-good@example.com と示されていれば、お客様の環境では正常に TLS 1.2 をご利用になれています。

一方、 SSL や 1.2 未満の TLS で接続を試行した場合は SSLError となりますので、別途ご対応が必要となります。

Ruby および Node.js での検証方法は次のとおりになります。

Ruby

require "payjp"
Payjp.api_key = 'sk_test_anything'
Payjp.api_base = 'https://api-tls12test.pay.jp'
Payjp::Account.retrieve

Node.js

var payjp = require('payjp')('sk_test_anything', config={"apibase": "https://api-tls12test.pay.jp/v1"});
payjp.accounts.retrieve();

レスポンス中の email フィールドが tls12-configuration-good@example.com と表示されれば問題ございません。

PHP

payjp-php は apiBase をセットする手段がないため、コードを直接変更します。

この変更を加えたコードは PAY.JP API にいかなるアクセスも行わなくなるので、本番環境とは別の環境をご用意ください。

payjp-php をインストールした新たな環境*2を用意し、 vendor/payjp/payjp-php/lib/Payjp.php を次のように編集します。

diff --git a/lib/Payjp.php b/lib/Payjp.php
index 7e32d3f..a0fdcaa 100644
--- a/lib/Payjp.php
+++ b/lib/Payjp.php
@@ -8,7 +8,7 @@ class Payjp
     public static $apiKey;
 
     // @var string The base URL for the Payjp API.
-    public static $apiBase = 'https://api.pay.jp';
+    public static $apiBase = 'https://api-tls12test.pay.jp';
 
     // @var string|null The version of the Payjp API to use for requests.
     public static $apiVersion = null;

次に、 PHP Interactive shell を用いて次のようにコマンドを実行します。

php > require_once 'vendor/autoload.php';
php > \Payjp\Payjp::setApiKey('sk_test_anything');
php > echo \Payjp\Account::retrieve();

Java

payjp-java への影響は JRE のバージョンで異なります。

  • Java 1.6 (Java 6) はご利用いただけなくなります。 Java 1.7 (Java 7) 以上へアップデートしてください。
  • Java 1.7 (Java 7) をご利用の場合は、 payjp-java を 0.2.1 以上にアップデートし、次の起動パラメータを追加してください。
    -Dhttps.protocols=TLSv1.2
  • Java 1.8 (Java 8) をご利用の場合は、アップデートの必要はありません。

上記いずれの言語でも、SSLError がみられた場合は TLS 1.2 への対応が不十分であるおそれがありますので、今一度システム構成をお確かめください。

PAY.JPでは日々安全性の確保に努めてまいります。 ご要望・ご意見等ございましたらお問い合わせフォームよりご連絡いただければ幸いです。

*1:API ベースのオーバーライドは通常はご自身で行う必要がなく、公式ドキュメントには記載がございません。本記事中のスニペットをご利用ください。

*2:本番環境で使われるVMをコピーしたものなど、現行または将来の本番環境と同等のミドルウェア構成が望ましいです。