Master CardはVISAと並んでシェアの大きいクレジットカードブランドです。
この2つのカードブランドだけで、発行済のクレジットカードの過半数を占めるとも言われており、大抵の国で利用することができます。

また、カード決済をECサイトで新たに始める場合でも、この2ブランドに対しての審査とそれ以外のブランドへの審査の厳しさが異なることが多々あります。同様に決済手数料についてもこの2ブランドのほうが割安に設定されていることが多いようです。

さて、そんな2大ブランドの一翼を担っているMaster Cardですが、最近発行されたカードがMagentoを利用したサイトで利用できないケースがあることが報告されています。

新たに発行され始めたMaster Cardブランドのカードとは

一般的なMaster Cardブランドのカードは、以下のような番号のパターンを持つカードとして定義されてきました(参考:Wikipedia)。

5[1-5][0-9]{14}

このパターンでは、

  • 先頭1桁は5で始まる
  • 2桁目は1から5のいずれか
  • 3桁目から16桁目は0から9の数字

となっています。従来はこのパターンで対応することで、Master Cardブランドのカードであることを確認できていました。

新たに追加されたパターンとは

2016年4月、Master Cardは新たなカード番号のパターンを発表しました(公式発表記事)。
この記事によると、以下のような番号のパターンが新たに追加されたことになります。

2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12})

このパターンでは、

  • 先頭1桁は2で始まる
  • 2桁目以降は幾つかのパターンに分けられた番号

と言う形式になります。

この新しいパターンのカードは2017年7月から発行を開始するとされています。

Magentoで起こり得る問題とは

さて、Magentoではこのようなカード番号体系に変更・追加が起きるとどのような問題が起きるのでしょうか?
(そもそも全く問題がないのであれば本件は取り上げるほどではないのですが)

カード番号のチェック処理

Magentoでは大きく分けてサーバー側とブラウザ側でカード番号のチェックを行っています。
1系の初期バージョンではJCBの番号がチェックパターンにないという不具合があったこともありましたが、現在はほぼすべてのカード番号が網羅されています。
ただし、1系の大半のバージョンではこのチェック処理が新しいMaster Cardの番号に対応していないため、カード決済が利用できない可能性があります。

影響を受ける決済方法

以下の決済方法に影響があるおそれがあると言われています。

  • PayPal PayFlow Pro
  • PayPal Website Payments Pro
  • Authorize.Net
  • Authorize.Net Direct Post
  • Authorize.Net CIM
  • カード番号をDBに保存(原則使用禁止です)
  • 及びその他のサードパーティ製決済エクステンション

影響を受けるバージョン

以下のバージョンが影響を受けます。

  • Community Edition 1.9.3.0およびEnterprise Edition 1.14.3.0以前のMagento1
  • 2.0.0から2.0.13および2.1.0から2.1.2までのMagento2

1.9.3.0および1.14.3.0以降及び2.1.3以降についてはこの影響を受けません。

Magento公式の対応について

Magentoはこの問題について、Magento1系にはパッチをリリースしています。Magento公式サイトのダウンロードページでSUPEE-8967をダウンロードし、適用することで対策ができます。
Magento2系は2.1.3以降を使っていただくことが最善の対策です。

弊社製エクステンションへの影響について

今回のMaster Card発行のクレジットカードの番号体系変更に対し、弊社製のエクステンションの対応状況は以下のとおりです。

Magento1系

すべてのエクステンションで、サーバー側・ブラウザ側ともにカード番号の形式チェックは行っていません。

Magento2系

およびは決済サービス側でカード番号を入力する仕様となっているため、影響を受けません。

およびではMagento2標準のカード番号からカードブランドを判定する処理を使用しています。Maegnto自体のバージョンを2.1.3以降にアップデートしていただくことを強く推奨いたします。

おわりに

本件に関し、英文での記事を執筆されたParadoxlabs様と、記事の共有を頂いたMax Pronko氏に深く感謝を致します。