定期課金の削除リクエストの仕様変更について

これまで定期課金(Subscription)を削除時にパラメーターを付与する場合、DELETE リクエストの body にパラメーターを付与してリクエストが行われていましたが、QueryString を用いる方法に変更されます。

現在すでに両方式でのリクエストに対応していますが、旧方式のリクエストは2018年10月3日中に廃止予定ですので、各SDKをご使用になられている場合はアップデートをお願いいたします。

なお、上記の変更は定期課金を使用していない場合は影響ありません。

変更前

curl https://api.pay.jp/v1/subscriptions/sub_19f6a2123363b514a743d1334109 \
-u sk_test_c62fade9d045b54cd76d7036: \
-d prorate=true \
-XDELETE

変更後

curl https://api.pay.jp/v1/subscriptions/sub_19f6a2123363b514a743d1334109?prorate=true \
-u sk_test_c62fade9d045b54cd76d7036: \
-XDELETE

各SDK をお使いの場合は、以下のバージョンにアップデートして頂きますようお願いいたします。

  • PHP SDK 1.0.0以上
  • Python SDK 0.0.5以上
  • Node SDK v1.3.1以上
  • Ruby SDK v0.0.6以上
  • Java SDK 0.3.0以上

お客様には大変ご不便ご迷惑をお掛けいたしますが、ご理解のほどよろしくお願いいたします。

今後ともPAY.JPをどうぞよろしくお願いいたします。

TLS 1.2 移行完了のお知らせ

本日 14:00 をもちまして、 PAY.JP とのすべての暗号通信に TLS 1.2 を採用し、古い TLS による接続の提供を終了いたしました。 加盟店の皆さまにおかれましては、ご対応まことにありがとうございました。

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

【お知らせ】管理画面の変更箇所に関して

PAY.JPをご利用のみなさま

いつもPAY.JPをご利用いただき誠にありがとうございます。 新しい管理画面では、ご利用者の皆さまによりわかりやすく情報をお伝えすることを目指し構成・デザインを見直すとともに内容を充実させました。

変更箇所は以下となります。

1. 新規機能 f:id:payjp:20180330170339p:plain


2. 配置変更 f:id:payjp:20180330164107p:plain

分かりやすい、使いやすいサービスを目指し、内容の充実を図って参ります。 今後もご愛顧のほど、よろしくお願いいたします。

payjp-announce.hatenablog.com

加盟店様向け 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をコピーしたものなど、現行または将来の本番環境と同等のミドルウェア構成が望ましいです。

Event オブジェクトのデータ保持期間を定めます

平素よりPAY.JPをご愛顧いただきまして誠にありがとうございます。

Event オブジェクトの保持期間について下記の通り変更を予定しています。

■ 変更前

保持期間について特に定めはありませんでした。アカウント作成以来すべてのEventオブジェクトを取得することができました。

■ 変更後

Event オブジェクトの保持期間を各データの 作成後3ヶ月間 とします。 保持期間を過ぎたデータについては、APIおよびダッシュボードから取得できることが保証されなくなります。

本変更の対象は Event オブジェクトのみで、適用は 2018年6月 を予定しております。

また、今後 Event 以外のオブジェクトにつきましても保持期間を設けさせていただく可能性がございます。 適用の際は本件同様にアナウンスブログでの周知を行いますので、ご理解ご協力のほど、よろしくお願いいたします。

上流接続先(CAFIS/CARDNET)障害による決済処理失敗の件につきまして

本日下記の時間帯において決済処理 (支払い作成、確定処理、返金)及びカード登録処理で部分的に失敗が発生いたしました。

  • 発生時刻

    • 2018年3月1日 10時00分 - 2018年3月1日 12時02分
  • 発生原因

    • 上流決済系(CAFIS/CARDNET)障害
  • 影響範囲

    • 障害発生時刻に行われた決済処理全般

ステータスページでご報告の通り、障害は既に復旧しております。

障害中、障害直後は安全のため定期課金を停止しておりました。その影響により障害発生時刻以降に課金予定であった定期課金が遅延しておりました。

定期課金は14:10頃に復旧済みです。


また、本障害の影響により、一部の定期課金においてカードが正常であるにもかかわらず異常カードと判別され、定期課金が停止状態となってしまう事象が確認されております。

  • 発生時刻

    • 2018年3月1日 10時00分 - 2018年3月1日 12時02分
  • 発生原因

    • 障害の影響により、上流決済系が正常なカードに対して「取扱できないカードである」旨のエラーレスポンスを返却したため
  • 影響範囲

    • 障害発生中に行われた定期課金の一部

こちらは不正に停止された定期課金を抽出し、再開する処理を本日(3/1)中に実施いたします。復旧まで今暫くお待ち下さい。

復旧された定期課金からは通常通りWebhook、Eventが作成、通知されます。

この度はお客様にご不便をおかけしまして誠に申し訳ございません。

管理画面のデザイン変更のお知らせ

平素よりPAY.JPをご愛顧いただきまして誠にありがとうございます。

本日ログイン後の管理画面をより見やすくわかりやすい構成に変更しました。

pay.jp

変更点や使い方の整理などは別途まとめてご案内いたします。

今後も管理画面の機能追加は予定されておりますので、引き続きどうぞ宜しくお願い申し上げます。