支払いシステムは支払いリーダと、マーチャントデバイスと、支払いサーバと、を含んでもよい。支払いリーダは、EMVチップカードや磁気ストライプカードやNFC支払いデバイスなどの支払いデバイスから支払い情報を受信する。マーチャントデバイスは、マーチャントのためのユーザインタフェースを提供し、かつ、支払いリーダおよび支払いサーバとの通信するポイントオブセールアプリケーションを有する。支払いサーバは、マーチャントデバイスから受信した他の情報(例えば、支払額、マーチャント、位置など)と支払い情報とに基づいてトランザクションを処理し、マーチャントデバイスに支払い結果(例えば、許否)を伝達する。
支払いリーダは、異なるタイプの支払いデバイスと相互作用する支払いインタフェースや、マーチャントデバイスと通信するための無線インタフェース(例えば、ブルートゥースローエナジーインタフェース)や、異なる機能(例えば、汎用処理や動作、支払い処理や動作、暗号化)を扱うための複数のプロセッサなどの種々のコンポーネントを有する。これらのコンポーネントのうちのいくつかは、メモリに保持されるインストラクションを実行するひとつ以上のプロセッサを含んでもよく、そのようなインストラクションのうちのいくつかは例えばファームウエアとしてメモリに半永久的に保持されてもよい。一般に、これらのインストラクションは支払いリーダのコンポーネントが、支払いリーダの種々のコンポーネントの動作を実行するかそうでなければ制御することを可能とする。
支払いリーダは、マーチャントデバイスなどの他のデバイスから、ひとつ以上のコンポーネントに保持されるファームウエアのバージョンについての情報の要求を、ときどき受信してもよい。支払いリーダはこの情報を集めてファームウエアマニフェストを生成してもよい。一例として、支払いリーダはファームウエアを実行する各コンポーネントに現在保持されるファームウエアのバージョンを決定してもよい。支払いリーダは、この情報を含むマニフェストを生成し、例えばブルートゥースローエナジーなどのセキュアな無線インタフェースを通じて、マーチャントデバイスにそれを送信してもよい。マーチャントデバイスは、ファームウエアマニフェストを受信し、インターネットなどのネットワークを介して支払いサーバにそれを送信してもよい。
支払いサーバは、ファームウエアマニフェストを現行のファームウエアバージョンの既知のリスト(例えば、ファームウエアリリースバンドル)と比較し、この比較に基づいて、支払いリーダのひとつ以上のコンポーネントについてファームウエアの更新が必要かを判定してもよい。支払いサーバは、必要なファームウエアの更新を表すデータにアクセスしてもよい。ファームウエアの更新は、支払いサーバのデータベースから、データのブロックとしてアクセスされてもよい。支払いサーバは、次いで、それぞれを圧縮し、ファームウエア更新ブロックを暗号化する。支払いサーバは、また、元々の非圧縮ファームウエア更新ブロックのそれぞれからのデータと、圧縮ファームウエア更新ブロックのメモリ位置と、を関連付けるオフセットテーブルを生成してもよい。
支払いサーバは、マーチャントデバイスに、圧縮ファームウエア更新ブロックとオフセットテーブルとを送信してもよい。マーチャントデバイスは、圧縮ファームウエア更新ブロックとオフセットテーブルとを受信し、それらをそのメモリに格納してもよい。マーチャントデバイスは、次いで、支払いリーダに、圧縮ファームウエア更新ブロックの第1部分を送信してもよく、支払いリーダは圧縮ファームウエア更新ブロックの第1部分を受信し、次いでそれらを解凍してもよい。支払いリーダは、メモリ(例えば、フラッシュメモリ)に、解凍されたファームウエア更新ブロックの第1部分を格納し、そのメモリの検査(例えば、巡回冗長検査(CRC))を行うことで、解凍されたファームウエア更新のうちのどの程度のデータのメモリへの格納が成功したかを判定してもよい。支払いリーダは、格納されたデータのこの総量と、ファームウエア更新のデータの総量(例えば、マーチャントデバイスを介して支払いサーバから提供されてもよい)と、を比較してもよい。ファームウエア更新の全部を受信したというわけではない場合、支払いリーダは格納に成功したデータの量に基づく部分的ファームウエアオフセットを決定してもよい。支払いリーダは、次いで、マーチャントデバイスに部分的ファームウエアオフセットを送信することで、ファームウエア更新を完了するためのファームウエアの残りを要求してもよい。
マーチャントデバイスは、支払いリーダから、部分的ファームウエアオフセットを受信し、圧縮ファームウエア更新ブロックの第2部分を取得し、部分的ファームウエアオフセットとオフセットテーブルの値との比較に基づいて支払いリーダに送ってもよい。支払いリーダに送信されなければならない重複情報の量を最小化するよう圧縮ファームウエア更新ブロックの第2部分を選択してもよく、その結果、支払いリーダは部分的ファームウエアオフセットに関連付けられたメモリ位置からファームウエアの更新を続けてもよい。マーチャントデバイスは、支払いリーダに、圧縮ファームウエア更新ブロックの第2部分を送信してもよく、支払いリーダはそれらを解凍し、メモリに格納してもよい。ファームウエア更新の全体が受信され、解凍され、メモリに格納されると、支払いリーダはファームウエア更新を適切なコンポーネントに移送し、そのファームウエアを更新してもよい。
図1は、本開示のある実施の形態に係る、支払いシステム1の説明的ブロック図を示す。ある実施の形態では、支払いシステム1は、支払いデバイス10と、支払い端末20と、ネットワーク30と、支払いサーバ40と、を含む。例示的な実施の形態では、支払いサーバ40は、支払いサービスシステム50や銀行サーバ60などの異なる主体により運用される複数のサーバを含んでもよい。支払いシステム1のこれらのコンポーネントは、マーチャントと顧客との間の電子支払いトランザクションを促進する。
マーチャントと顧客との間の電子的やりとりは、顧客の支払いデバイス10とマーチャントの支払い端末20との間で生じる。顧客は、磁気ストライプを有するクレジットカードや、EMVチップを有するクレジットカードや、支払いアプリケーションを実行するスマートフォンなどのNFC可能電子デバイスなどの支払いデバイス10を有する。マーチャントは支払い端末や他の電子デバイスなどの支払い端末20を有する。そのような他の電子デバイスは支払い情報(例えば、暗号化された支払いカードデータおよびユーザ認証データ)およびトランザクション情報(例えば、購入量およびポイントオブパーチェイス情報)を処理することができ、例えば支払いアプリケーションを実行するスマートフォンやタブレットである。
ある実施の形態(例えば、廉価トランザクションやNFCまたはEMV支払いデバイス10によって示される支払い上限よりも少ない支払いトランザクションについてのもの)では、支払いトランザクションの初期処理および承認は支払い端末20において処理されてもよい。他の実施の形態では、支払い端末20はネットワーク30を介して支払いサーバ40と通信してもよい。支払いサーバ40が単一の主体により運用されてもよいが、ある実施の形態では、支払いサーバ40は任意の適切な主体により運用される任意の適切な数のサーバを含んでもよいこと、例えば支払いサービスシステム50ならびにマーチャントおよび顧客のひとつ以上の銀行(例えば、銀行サーバ60)を含んでもよいこと、は理解されるべきである。支払い端末20および支払いサーバ40は支払い情報およびトランザクション情報をやりとりし、トランザクションを承認するか否かを決定する。例えば、支払い端末20はネットワーク30を介して支払いサーバ40に、暗号化された支払いデータとユーザ認証データと購入量情報とポイントオブパーチェイス情報とを提供してもよい。支払いサーバ40は、この受信した情報と顧客アカウントまたはマーチャントアカウントに関する情報とに基づいて、トランザクションを承認するか否かを決定し、支払いトランザクションが承認されたか否かを示すためにネットワーク30を介して支払い端末20に応答してもよい。支払いサーバ40はまた、支払い端末20に、トランザクション識別子などの追加情報を送信してもよい。
支払い端末20において支払いサーバ40から受信した情報に基づいて、マーチャントはトランザクションが承認されたか否かを顧客に示してもよい。ある実施の形態、例えばチップカード支払いデバイス、では、承認は支払い端末において、例えば支払い端末の画面に、示されてもよい。NFC支払いデバイスとして動作するスマートフォンやウォッチなどの他の実施の形態では、承認されたトランザクションおよび追加情報(例えば、レシート、特別なオファー、クーポン、ロイヤリティプログラム情報など)についての情報がNFC支払いデバイスに提供され、スマートフォンやウォッチの画面に表示されるかまたはメモリに格納されてもよい。
ある実施の形態では、支払いサーバ40は、支払い端末20に保持されるファームウエアインストラクションについての情報(例えば、メモリに保持されるインストラクションのバージョン)を要求してもよい。支払い端末のひとつ以上のコンポーネントのプロセッサまたは他のハードウエアがファームウエアインストラクションを実行することで、支払い端末およびそのコンポーネントの動作を一般的に制御することができる。情報要求に応じて、支払い端末20は、そのメモリに保持されるファームウエアについての情報を含む支払い端末20についての情報を集めることで、ファームウエアマニフェストを生成してもよい。ある実施の形態では、このファームウエアマニフェスト情報は、処理のために支払いサーバ40(例えば、支払いサービスシステム50)に送信されてもよい。
ある実施の形態では、支払いサーバ40(例えば、支払いサーバ40の支払いサービスシステム50)は、ファームウエアマニフェストに基づいて、支払い端末20のファームウエアの更新が必要か否か判定してもよい。更新が必要な場合、支払い端末40は、支払いリーダにファームウエアデータのブロックの集合として提供されるべきファームウエア更新にアクセスしてもよい。ファームウエアデータのブロックは圧縮されていてもよく、圧縮ファームウエア更新ブロックおよび圧縮ファームウエア更新ブロックについての情報を支払い端末20に提供してもよい。ある実施の形態では、支払い端末20は、圧縮ファームウエア更新ブロックおよび情報を支払いサーバ40から受信し、それらを支払い端末20(例えば、支払い端末20のメモリ)に格納してもよい。支払い端末20は、そのメモリの検査を行い、そのメモリ検査に基づいて支払いサーバ4からの圧縮ファームウエア更新ブロックの受信を継続してもよい。支払い端末20は、そのメモリの追加的な検査を行い、それがファームウエア更新の全体を受信したことを、支払いサーバ40からの圧縮ファームウエア更新ブロックについての情報に基づいて、決定してもよい。支払い端末20は、支払い端末20のファームウエアを更新してもよい。
図2は、本開示のある実施の形態に係る、支払いデバイス10および支払い端末20の説明的ブロック図を示す。支払いシステム1の支払い端末20および支払いデバイス10が任意の適切な態様で実装可能であることは理解されるところであるが、ある実施の形態では、支払い端末20は支払いリーダ22とマーチャントデバイス29とを備えてもよい。しかしながら、本明細書で用いられる場合、支払い端末という語は支払いリーダ22などの支払い端末の任意の適切なコンポーネントを指してもよいことは理解されるであろう。ある実施の形態では、支払い端末20の支払いリーダ22は、支払いデバイス10と、ポイントオブセールアプリケーションを実行するマーチャントデバイス29と、の間のトランザクションを促進する無線通信デバイスであってもよい。
ある実施の形態では、支払いデバイス10は、支払い端末20と(例えば、支払いリーダ22を介して)通信可能なデバイス、NFCデバイス12やEMVチップカード14などであってもよい。チップカード14はセキュアな集積回路を含んでもよい。この集積回路は、支払い端末20などの支払い端末と通信することができ、暗号化された支払い情報を生成することができ、EMVCoによって公表されているものなどのひとつ以上の電子的支払い規格にしたがい、その暗号化された支払い情報と他の支払いまたはトランザクション情報(例えば、ローカルで処理される支払いについてのトランザクション上限)とを提供することができる。チップカード14は支払いリーダ22と通信するための接触ピン(例えば、ISO7816にしたがうもの)を含んでもよく、ある実施の形態では、近距離場15を介して支払いリーダ22と誘導的に結合されてもよい。支払いリーダ22と誘導的に結合するチップカード14は、ISO14443などの無線通信規格にしたがい支払いリーダ22によって提供される無線キャリア信号の負荷変調を用いて、支払いリーダ22と通信してもよい。
NFCデバイス12は、支払い端末20との(例えば、支払いリーダ22との通信を介した)セキュアなトランザクションを行うことができる、スマートフォンやタブレットやスマートウォッチなどの電子デバイスであってもよい。NFCデバイス12は、セキュアなトランザクション機能を実行するためのハードウエア(例えば、ハードウエアおよび実行可能コードを含むセキュアエレメント)および/またはソフトウエア(例えば、ホストカードエミュレーションルーチンにしたがいプロセッサ上で実行される実行可能コード)を有してもよい。支払いトランザクション中、NFCデバイス12は近距離場15を介して支払いリーダ22と誘導的に結合されてもよく、ISO14443およびISO18092などのひとつ以上の無線通信規格にしたがい支払いリーダ22によって提供される無線キャリア信号の能動的または受動的負荷変調によって支払い端末20と通信してもよい。
支払い端末20は任意の適切な態様で実装可能であるが、ある実施の形態では、支払い端末20は支払いリーダ22とマーチャントデバイス29とを含んでもよい。マーチャントデバイス29は、マーチャントのためのユーザインタフェースを提供し、かつ、支払いリーダ22および支払いサーバ40との通信を促進するポイントオブセールアプリケーションを実行する。支払いリーダ22は支払いデバイス10とマーチャントデバイス29との間の通信を促進してもよい。本明細書で説明される通り、NFCデバイス12やチップカード14などの支払いデバイス10は誘導的結合を介して支払いリーダ22と通信してもよい。これは図2において近距離場15として描かれている。この近距離場15は、支払いリーダ22から発せられる適切な周波数(例えば、13.56MHz)を有する無線キャリア信号を含む。
ある実施の形態では、支払いデバイス10はNFCデバイス12やチップカード14などの非接触支払いデバイスであってもよく、支払いリーダ22および非接触支払いデバイス10は近距離場15内の無線キャリア信号を変調することによって通信してもよい。支払いデバイス10に情報を伝達するために、支払いリーダ22は、支払いリーダ22から送信するべきデータに基づいて無線キャリア信号の振幅および/または位相を変化させ、その結果支払いデバイスへと送信される無線データ信号が生成される。この信号は、13.56MHzで送信するようチューンされた支払いリーダ22のアンテナによって送信され、支払いデバイス10もまた近距離場15の範囲内(例えば、0cmから10cm)に適切にチューンされたアンテナを有する場合、支払いデバイスは支払いリーダ22によって送信された無線キャリア信号または無線データ信号を受信する。無線データ信号の場合、支払いデバイス10の処理回路は、受信した信号を復調し、支払いリーダ22から受信されたデータを処理することができる。
支払いデバイス10などの非接触支払いデバイスが近距離場15の範囲内にある場合、それは支払いリーダ22と誘導的に結合される。したがって、支払いデバイス10はまた、能動的または受動的負荷変調を介して、無線キャリア信号を変調することができる。支払いデバイス10のアンテナのチューニング特性を変えることによって(例えば、アンテナ回路において送信対象の被変調データに基づいて選択的に並列負荷を選択することによって)、支払いデバイス10および支払いリーダ22の両方において無線キャリア信号が変調され、これにより被変調無線キャリア信号が生成される。このようにして、支払いデバイスは支払いリーダ22に被変調データを送信することができる。
ある実施の形態では、支払いリーダ22はまた、チップカード14を受けることができるEMVスロット21を含む。チップカード14は、チップカード14がEMVスロット21に挿入されたときに支払いリーダ22の対応する接点と係合する接点を有してもよい。支払いリーダ22はこれらの接点を通じてチップカード14のEMVチップに給電し、支払いリーダ22とチップカード14とはそれらの接点によって確立される通信経路を通じて通信する。
支払いリーダ22はまた、磁気ストライプカードとのインタフェースとなるハードウエアをふくんでもよい(図2では不図示)。ある実施の形態では、ハードウエアは、磁気ストライプカードの磁気ストライプをスワイプするか沈めるよう顧客を案内するスロットを含んでもよく、この場合、磁気ストライプリーダは磁気ストライプカードから支払い情報を受けることができる。次いで、受信された支払い情報は支払いリーダ22によって処理される。
支払い端末20(例えば、支払い端末20の支払いリーダ22)は、ファームウエアを有する種々のコンポーネントを有してもよい。ある実施の形態では、例えばバグを直すためや問題を解決するためやデバイスのセキュリティを高めるために、ファームウエアを更新することが必要であってもよい。一例として、支払いデバイス10(例えば、NFC通信やEMVカード)により用いられてもよい種々の方法を含むトランザクションに適用可能な規制や規格は、トランザクションを処理する際に、支払い端末20(例えば、支払いリーダ22)が新たなインストラクションや手順に従うことを要求してもよい。これは、支払いリーダ22が新たなインストラクションを用いてトランザクションを処理するために支払いリーダ22やそのいくつかのコンポーネントのファームウエアを更新することを要求してもよい。ある実施の形態では、支払い端末20の他のコンポーネントは更新を必要とするファームウエア(例えば、マーチャントデバイス29)を有してもよい。任意の適切な理由により支払いリーダ22やマーチャントデバイス29やそれらいずれかの任意のコンポーネントのファームウエアが更新を必要としうることは理解されるであろう。
マーチャントデバイス29は、タブレット支払いデバイス24やモバイル支払いデバイス26や支払い端末28などの任意の適切なデバイスであってもよい。タブレット支払いデバイス24やモバイル支払いデバイス26などの計算デバイスの場合、ポイントオブセールアプリケーションは、購入および支払い情報の入力、顧客とのやりとり、および支払いサーバ40との通信を担当してもよい。例えば、支払いアプリケーションは、マーチャントがそのなかから選択できるサービスメニューと、トランザクションを自動化するための一連のメニューまたは画面と、を提供してもよい。支払いアプリケーションはまた、署名やPIN番号や生体情報などの顧客認証情報の入力を促進してもよい。専用支払い端末28に同様の機能が提供されてもよい。
マーチャントデバイス29は、通信経路23/25/27を介して支払いリーダ22と通信してもよい。通信経路23/25/27は有線接続(例えば、イーサネット、USB、ファイヤワイヤ、ライトニング)または無線接続(例えば、Wi−Fi、ブルートゥース、NFC、ZigBee)を介して実装されてもよいが、ある実施の形態では、支払いリーダ22はブルートゥースローエナジーインタフェースを介してマーチャントデバイス29と通信してもよく、この場合、支払いリーダ22とマーチャントデバイス29とは接続されたデバイスとなる。ある実施の形態では、例えば、トランザクション量が少ないか支払いサーバ40への接続がない場合、支払いトランザクションの処理が支払いリーダ22およびマーチャントデバイス29においてローカルで生じうる。他の実施の形態では、マーチャントデバイス29または支払いリーダ22は公衆または専用通信ネットワーク30を介して支払いサーバ40と通信してもよい。通信ネットワーク30は任意の適切な通信ネットワークであってもよいが、ある実施の形態では、通信ネットワーク30はインターネットであってもよく、支払いおよびトランザクション情報は支払い端末20と支払いサーバ40との間で暗号化形式で、例えばトランスポートレイヤセキュリティ(TLS)やセキュアソケットレイヤ(SSL)プロトコルにより、通信されてもよい。
図3は、本開示のある実施の形態に係る、例示的支払いリーダ22のブロック図を示す。ある実施の形態では、支払いリーダ22は、例えばブルートゥースクラシックやブルートゥースローエナジーを用いて、マーチャントデバイス29などの双方向電子デバイスと無線通信する無線通信デバイスであってもよい。図3において特定のコンポーネントが特定の構成で描かれているが、支払いリーダ22が追加のコンポーネントを含んでもよいこと、図3に示されるコンポーネントのうちのひとつ以上が支払いリーダ22に含まれなくてもよいこと、および支払いリーダ22のコンポーネントが任意の適切な態様で再構成されうること、は理解されるであろう。ある実施の形態では、支払いリーダ22は、リーダチップ100と、複数の支払いインタフェース(例えば、非接触インタフェース102、接触インタフェース104)と、電源106と、無線通信インタフェース108と、有線インタフェース110と、信号調整デバイス112と、トランザクションチップ114と、を含む。支払いリーダ22はまた、リーダチップ100内に処理ユニット120とメモリ122とを含み、トランザクションチップ114内に汎用処理ユニット124と暗号化処理ユニット125と汎用メモリ126と暗号化メモリ128とを含む。ある実施の形態では、処理ユニット120およびメモリ122はリーダチップ100およびトランザクションチップ114のそれぞれにパッケージされたものとして、また特定の態様で構成されるものとして説明されるが、処理ユニット120、汎用処理ユニット124、暗号化処理ユニット125、メモリ122、汎用メモリ126および暗号化メモリ128を任意の適切な態様で構成することで、本明細書で説明されるような支払いリーダ22の機能を実行できることは理解されるであろう。リーダチップ100およびトランザクションチップ114の機能が単一のチップまたは複数のチップにおいて実現可能であること、および、そのそれぞれが任意の適切な処理ユニットおよびメモリの組み合わせを含み、それにより合わせて本明細書で説明されるリーダチップ100およびトランザクションチップ114の機能を行うことは、理解されるであろう。
ある実施の形態では、リーダチップ100はFreescale Semiconductor, Incにより供給されるK21チップなどの任意の適切なチップであってもよい。支払いリーダ22のリーダチップ100の処理ユニット120は任意の適切なプロセッサであってもよく、支払いリーダ22の機能を実行し制御するのに必要な限り、任意の適切なハードウエア、ソフトウエア、メモリ、および回路を含みうる。処理ユニット120は任意の適切な数のプロセッサを含んでもよく、また、任意の適切な数のメモリやメモリタイプ内のインストラクションに基づいてリーダチップ100の動作を行ってもよい。ある実施の形態では、処理ユニット120は、マルチコアプロセッサや他の適切なコンポーネントなどの複数の独立した処理ユニットを有してもよい。処理ユニット120は、リーダチップ100のメモリ122に保持されるインストラクションを実行することで、支払いリーダ22の動作および処理を制御してもよい。本明細書で用いられる場合、プロセッサまたは処理ユニットは、本明細書で説明される処理機能を行うために必要な処理能力を有するひとつ以上のプロセッサを含んでもよく、例えば、ハードウエアロジック(例えば、ハードウエア記述言語(HDL)などのハードウエアの構成を記述するソフトウエアによって設計されたハードウエア)やプロセッサが実行するコンピュータ可読インストラクションやそれらの任意の適切な組み合わせなどを含むがそれらに限定されない。プロセッサは本明細書で説明される動作を行うためにソフトウエアを実行してもよく、そのようなソフトウエアは、実体的非一時的コンピュータ可読保持媒体上の機械可読形態でアクセスされたソフトウエアを含む。
例示的な実施の形態では、リーダチップ100の処理ユニット120は、支払いリーダ22の種々のコンポーネントの動作を、メモリ122に保持されるインストラクションに基づいて、制御するためのハブとして動作するよう構成された二つのRISCプロセッサを含んでもよい。本明細書で用いられる場合、メモリは、任意の適切な実体的または非一時的保持媒体を指してもよい。実体的(または、非一時的)保持媒体の例は、ディスクと、サム(thumb)ドライブと、メモリと、を含むが、伝送信号は含まない。実体的コンピュータ可読保持媒体は、コンピュータ可読インストラクションやデータ構造やプログラムモジュールや他のデータなどの、揮発性および不揮発性、取り外し可能および取り外し不可媒体を含む。そのような媒体の例は、RAM、ROM、EPROM、EEPROM、SRAM、フラッシュメモリ、ディスクまたは光学ストレージ、磁気ストレージ、あるいはプロセッサまたは計算デバイスによってアクセスされる情報を保持する任意の他の非一時的媒体を含む。
リーダチップ100はまた、インタフェース回路やアナログフロントエンド回路やセキュリティ回路やコンポーネント監視回路などの追加回路を含んでもよい。ある実施の形態では、インタフェース回路は、無線通信インタフェース108(例えば、Wi−Fi、ブルートゥースクラシック、ブルートゥースローエナジー)とのインタフェースとなる回路と、有線インタフェース110(例えば、USB、イーサネット、ファイヤワイヤ、およびライトニング)とのインタフェースとなる回路と、他の通信インタフェースまたはバス(例えば、I2C、SPI、UARTおよびGPIO)とのインタフェースとなる回路と、電源106とのインタフェースとなる回路(例えば、電力管理回路、電力変換回路、整流器、および電池充電回路)と、を含んでもよい。
トランザクションチップ114は、本明細書で説明される処理機能を行うために必要な処理能力を有するひとつ以上のプロセッサを含んでもよく、例えば、ハードウエアロジックやプロセッサが実行するコンピュータ可読インストラクションやそれらの任意の適切な組み合わせなどを含むがそれらに限定されない。例示的な実施の形態では、トランザクションチップ114は、支払いトランザクションの処理や支払いデバイスとのインタフェースや暗号化や他の支払い特定機能に関する機能を行ってもよい。ある実施の形態では、トランザクションチップ114は汎用支払い機能に関連付けられたインストラクションを実行するための汎用処理ユニット124と、暗号化処理動作を扱うための暗号化処理ユニット125と、を含んでもよい。汎用処理ユニット124および暗号化処理ユニット125のそれぞれは、それに関連付けられた専用メモリ(すなわち、汎用メモリ126と、暗号化メモリ128などのメモリ)を有してもよい。この態様では、特定の暗号化処理および重要セキュリティ情報(例えば、暗号化鍵、パスワード、ユーザ情報等)は、暗号化メモリ128および暗号化処理ユニット125によって安全に保持され、処理されうる。
トランザクションチップ114の汎用処理ユニット124および暗号化処理ユニット125の一方または両方は、例えば任意の適切な内部バスおよび通信技術を用いてリーダチップ100(例えば、処理ユニット120)と通信してもよい。この態様では、リーダチップ100とトランザクションチップ114とは併せて、トランザクションを処理し、処理されたトランザクションに関する情報を(例えばマーチャントデバイス29に)伝達してもよい。
トランザクションチップ114はまた、接触インタフェース104とのインタフェースとなるための回路(例えば、スロット21に挿入されたチップカード14のEMVチップと直接インタフェースするための電源および通信回路)を含んでもよい。ある実施の形態では、トランザクションチップ114はまた、非接触インタフェース102のアナログコンポーネントとのインタフェースとなるアナログフロントエンド回路(例えば、電磁整合(EMC)回路、整合回路、変調回路、および測定回路)を含んでもよい。
ある実施の形態では、汎用処理ユニット124は、本明細書で説明される支払いリーダ22の支払い処理機能を行うための任意の適切なプロセッサを含んでもよい。ある実施の形態では、汎用メモリ126は任意の適切なメモリ(例えば、本明細書で説明されるようなもの)であってもよく、支払いリーダ22の汎用トランザクション処理動作を行うためのインストラクションの複数の集合を含んでもよく、そのようなインストラクションの集合は例えばトランザクション処理インストラクション166や、データ認証インストラクション168や、信号調整インストラクション170などであり、それらのうちのいずれかはメモリ126に保持されるファームウエアにおいて全体的にまたは部分的に実装されてもよい。汎用メモリ126はまた、処理ユニット124と、汎用メモリ126内に保持されるファームウエア(例えば、インストラクション166、168および170のうちのいくつかまたは全てと任意の他の適切なインストラクションとを含むファームウエア)と、を初期化しうるブートローダ172を含んでもよい。
トランザクション処理インストラクション166は、支払いリーダ22と支払いデバイス10との間の相互作用(例えば、非接触インタフェース102および接触インタフェース104を介して支払いデバイスとのインタフェースとなるためのもの)を制御することや、(例えば、支払い方法に関連付けられた支払い処理主体に基づいて)支払い処理手順を選択することや、暗号化プロセッサ125とのインタフェースとなることや、トランザクション処理の任意の他の適切な側面などの、支払いリーダ22の任意の適切な汎用トランザクション処理動作を制御するためのインストラクションを含んでもよい。データ認証インストラクション168は、支払い端末20の設定情報を提供するためのインストラクションを含んでもよい。設定情報は、支払い上限やローカルトランザクション(すなわち、支払いサーバ40に接続せずに生じるトランザクション)のトランザクションタイプやサポートされるアプリケーションなどの任意の適切な情報を含んでもよい。ある実施の形態では、一例として、データ認証インストラクション168はTMS−CAPKインストラクションなどの設定インストラクションを含んでもよい。ある実施の形態では、TMS−CAPKインストラクションは、特定の法域(例えば、国に特有)用に調整されてもよい。ある実施の形態では、データ認証インストラクション168は、汎用メモリ126の他のファームウエアインストラクションとは別個の固有メモリ位置に保持されるファームウエアの個別部分として実装されてもよい。この態様では、トランザクションチップ114の汎用処理ユニット124や汎用メモリ126に関連付けられた他のファームウエアインストラクションに影響を与えることなく、データ認証インストラクション168に関連付けられたファームウエアを選択的に更新することが可能となる。
信号調整インストラクション170は、非接触インタフェース102を介して支払いデバイス10から(例えば、NFC支払いデバイス10から)受信した調整信号のインストラクションを含む、信号調整デバイス112と相互作用するためのインストラクションを含んでもよい。ある実施の形態では、信号調整インストラクション170は非接触インタフェース102を介して受信された信号を操作するためのインストラクションを含んでもよく、信号調整デバイス112はフィールドプログラマブルゲートアレイ(FPGA)であるが、他の実施の形態では、信号調整インストラクション170は、非接触インタフェース102を介して受信されるNFC信号を処理するのに必要とされる任意の適切なハードウエア、ロジック、またはアルゴリズムを用いて信号を調整するためのインストラクションを含んでもよい。
暗号化処理ユニット125は本明細書で説明された任意の適切なプロセッサであってもよく、ある実施の形態では、支払いトランザクションの処理のための暗号化機能を行ってもよい。例えば、ある実施の形態では、暗号化処理ユニット125はひとつ以上の暗号化鍵に基づいてデータを暗号化および復号してもよく、これは、支払いリーダ22の他のコンポーネントから暗号化機能を隔離することで、暗号化鍵を支払いリーダ22の他のコンポーネントへの暴露から守るような態様でなされる。
ある実施の形態では、暗号化メモリ128は本明細書で説明された任意の適切なメモリまたはその組み合わせであってもよく、支払い処理インストラクション176および暗号化インストラクション178などの暗号化動作を行うためのインストラクションの複数の集合を含んでもよい。暗号化メモリ128はまた、処理ユニット125と、暗号化メモリ128内に保持されるファームウエア(例えば、インストラクション176および178のうちのいくつかまたは全てを含むファームウエア)と、を初期化しうるブートローダ179を含んでもよい。支払い処理インストラクション176は、特定の支払い手順に関連付けられて用いられるべき暗号化技術を提供することや、アカウントにアクセスして情報を処理することや、任意の他の適切な支払い処理機能や、それらの任意の適切な組み合わせなどの、支払い処理の側面を行うためのインストラクションを含んでもよい。暗号化インストラクション178は、暗号化動作を行うためのインストラクションを含んでもよい。暗号化処理ユニット125は、暗号化機能や復号機能やサイン機能や、支払いの際の署名を検証したり支払いトランザクションの一部としてトランザクション情報を検証する機能などの各種暗号化機能を行うための暗号化インストラクション178を実行してもよい。
無線通信インタフェース108は、任意の適切な無線通信ハードウエア(例えば、アンテナ、整合回路など)と、(例えば、ブルートゥースローエナジーなどのプロトコルを介したマーチャントデバイス29との)無線通信に参加し、関連回路を制御するのに必要な処理能力を有するひとつ以上のプロセッサと、を含んでもよく、関連回路はハードウエアロジック、プロセッサで実行されるコンピュータ可読インストラクション、またはそれらの任意の適切な組み合わせを含むがそれらに限定されない。無線通信インタフェース108は任意の適切な態様で実装されうるが、例示的な実施の形態では、無線通信インタフェース108は、処理ユニット180およびメモリ182を含んでもよい、Texas Instruments CC2640デバイスとして実装されてもよい。ある実施の形態では、処理ユニット180およびメモリ182は無線通信インタフェース108にパッケージされたものとして、また特定の態様で構成されるものとして説明されるが、処理ユニット180およびメモリ182を任意の適切な態様で構成することで、本明細書で説明されるような無線通信インタフェース108の機能を実行できることは理解されるであろう。
処理ユニット180は、本明細書で説明される機能を実行するための任意の適切なプロセッサまたは処理ハードウエアを含んでもよい。ある実施の形態では、処理ユニット180は、(例えば、ブルートゥースローエナジーを介して)無線通信を送受信し、支払いリーダ22の他の回路(例えば、リーダチップ100の処理ユニット120)と(例えば、内部バスまたは任意の他の適切な通信方法を用いて)通信するために、無線通信インタフェース108のハードウエアおよび他のコンポーネントと相互作用しそれらを制御すべく、メモリ182のインストラクションを実行してもよい。メモリ182は本明細書で説明されるメモリであり、無線インストラクション184などの、無線通信インタフェース108の処理動作を行うためのインストラクションの複数の集合を含んでもよい。ある実施の形態では、メモリ182はスタティックランダムアクセスメモリ(SRAM)として実装されるが、任意の適切なメモリフォーマットを用いることで、本明細書で説明される支払いリーダ22の機能を実行してもよい。処理ユニット180と、メモリ182内に保持されるファームウエア(例えば、無線インストラクション184のうちのいくつかまたは全てを含むファームウエア)と、を初期化しうるブートローダ186である。
信号調整デバイス112は任意の適切なハードウエア、ソフトウエア、またはそれらの任意の組み合わせを含んでもよいが、例示的な実施の形態では、信号調整デバイスはFPGAを含んでもよい。信号調整デバイス112は、支払いデバイス10がNFC通信を用いて支払いリーダ22と通信したときなどに、非接触インタフェース102から送信された信号を受信して調整してもよい。ある実施の形態では、信号調整デバイス112は非接触インタフェース102とのインタフェースとなる際に用いられる、トランザクションチップ114に保持されるインストラクション(例えば、信号調整インストラクション170)に基づいて動作してもよい。ある実施の形態では、これらのインストラクションはファームウエアとして保持されてもよく、ある実施の形態では、インストラクション(例えば、信号調整インストラクション170)は個々に更新可能であってもよい。
非接触インタフェース102は、チップカード14やNFCデバイス12などの非接触デバイスとのNFC通信を提供してもよい。リーダチップ100によって提供される信号に基づいて、非接触インタフェース102のアンテナはキャリア信号または変調信号のいずれかを出力してもよい。キャリア信号は、13.56MHzなどの固定周波数を有する信号であってもよい。変調信号は、ISO 14443やISO 18092などの変調手順にしたがい変調されたバージョンのキャリア信号であってもよい。支払いリーダ22が非接触デバイスと誘導的に結合するとき、非接触デバイスはまたキャリア信号を変調し、変調された信号は非接触インタフェース102によって検出され、処理のためにリーダチップ100に提供されてもよい。キャリア信号のこの変調に基づいて、支払いリーダ22および非接触デバイスは支払い情報などの情報を伝達することができる。
接点インタフェース104は、チップカード14のEMVチップなどの支払いチップに給電し、EMVチップと通信するための適切なインタフェースであってもよい。接点インタフェース104は、EMV規格にしたがいチップカード14との物理的なインタフェースとなる複数の接触ピン(図3では不図示)を含んでもよい。ある実施の形態では、接触インタフェース104は、電源(VCC)ピンと、グランド(GND)ピンと、EMVカードをリセットするためのリセット(RST)ピンと、クロック信号を提供するためのクロック(CLK)ピンと、EMVカードにプログラミング電圧を提供するためのプログラミング電圧(VPP)ピンと、EMV通信を提供するための入出力(I/O)ピンと、二つの補助ピンと、を含んでもよい。この態様では、支払いリーダおよびチップカードは支払い情報などの情報を交換することができる。
電源106はAC電源や電池への物理的接続などのひとつ以上の電源を含んでもよい。電源106は、AC電力を変換するための、および、支払いリーダ22のコンポーネントによる使用のために複数のDC電圧を生成するための、電力変換回路を含んでもよい。電源106が電池を含む場合、電池は物理的な電力接続を介して、または、誘導充電を介して、または、任意の他の適切な方法を介して、充電可能である。図3では支払いリーダ22の他のコンポーネントに物理的に接続されているようには描かれていないが、電源106はコンポーネントの要件にしたがって、支払いリーダ22のコンポーネントに各種電圧を供給してもよい。
有線インタフェース110は、USBやライトニングやファイヤワイヤやイーサネットや任意の他の適切な有線通信インタフェースやそれらの任意の組み合わせなどの、他のデバイスや通信ネットワークとの有線通信のための任意の適切なインタフェースを含んでもよい。ある実施の形態では、有線インタフェース110は、支払いリーダが、マーチャントデバイス29および支払いサーバ40のうちの一方または両方と通信できるようにしてもよい。
リーダチップ100のメモリ122は、オペレーティングインストラクション130やトランザクション処理インストラクション132やファームウエア更新インストラクション134やブートローダ136などの、支払いリーダ22の動作を制御するためのインストラクションの複数の集合を含んでもよい。
オペレーティングインストラクション130は、内部通信や電力管理やメッセージ処理やシステム監視やスリープモードやユーザインタフェース応答および制御や無線インタフェース108の動作やトランザクションチップ114の動作やインストラクションの他の集合の管理などの、支払いリーダ22の任意の適切な汎用動作を制御するためのインストラクションを含んでもよい。ある実施の形態では、オペレーティングインストラクション130は、支払いリーダ22のリーダチップ100の処理ユニット120によって実行される処理動作のほとんどを実行するのに必要なオペレーティングシステムおよびアプリケーションを提供してもよい。
オペレーティングインストラクション130はまた、マーチャントデバイス29とのインタフェースとなるためのインストラクションを含んでもよい。ある実施の形態では、マーチャントデバイス29はポイントオブセールアプリケーションを実行していてもよい。オペレーティングインストラクション130は、そのポイントオブセールアプリケーションと情報を交換するための、リーダチップ100の処理ユニット120で実行される相補アプリケーション用のインストラクションを含んでもよい。例えば、ポイントオブセールアプリケーションは、マーチャントなどのユーザが、顧客との購入トランザクションを行うことを容易にするユーザインタフェースを提供してもよい。メニューは、アイテム選択と、税金計算と、チップの追加と、他の関連機能と、を提供してもよい。支払いを受けるときになると、ポイントオブセールアプリケーションは支払いリーダ22に(例えば、無線インタフェース108を介して)メッセージを送信してもよい。オペレーティングインストラクション130は、例えば、非接触インタフェース102や接触インタフェース104を介して支払い情報を取得し、その支払い情報を処理するためにトランザクションチップ114を呼び出し、無線インタフェース108を介してマーチャントデバイスのポイントオブセールアプリケーションに伝送される応答メッセージを生成することによって、支払い処理を促進する。
オペレーティングインストラクション130はまた、支払いサーバ40の支払いサービスシステム50とのインタフェースとなるためのインストラクションを含んでもよい。ある実施の形態では、支払いサービスシステム50は支払いリーダ22およびマーチャントデバイス29のポイントオブセールアプリケーションに関連付けられてもよい。例えば、支払いサービスシステム50は、支払いサービスシステム50に登録されている(例えば、一意の識別子に基づいて)支払いリーダ22およびマーチャントデバイス29についての情報を有してもよい。この情報を用いることで、マーチャントおよび顧客金融機関のサーバとのトランザクションを処理し、マーチャントに解析および報告を提供し、トランザクションデータを収集することができる。支払いリーダ22は、支払い情報を(例えば、リーダチップ100およびトランザクションチップ114の動作に基づいて)処理し、そのように処理された支払い情報をポイントオブセールアプリケーションに伝達してもよく、そのアプリケーションは次いで支払いサービスシステム50と通信する。この態様では、支払いリーダ22からのメッセージは支払いサーバ40の支払いサービスシステム50に転送され、この場合、支払いリーダ22および支払いサービスシステム50は支払いトランザクションを協働して処理してもよい。
トランザクション処理インストラクション132は支払いリーダ22における支払いトランザクションの処理のためのインストラクションを含んでもよい。ある実施の形態では、トランザクション処理インストラクションは、EMVによって公表されているもののような支払い標準に準拠してもよい。使用中の支払い方法(例えば、ユーロペイ、マスターカード、ビザ、アメリカンエキスプレス等)に依存して、その支払い方法に関連付けられた特定の処理手順が選択され、その手順にしたがってトランザクションを処理してもよい。処理ユニット120によって実行されると、これらのインストラクションは、トランザクションをローカルで処理するか否かを決定し、支払いデバイスからの支払い情報へのアクセスをどのようにするかを決定し、その支払い情報をどのように処理するかを決定し、どの暗号化機能を実行するかを決定し、支払いサーバと交換する通信タイプを決定し、支払いトランザクションの処理に関する任意の他の適切な情報を決定してもよい。ある実施の形態では、トランザクション処理インストラクション132は高位の処理を実行し、処理ユニット120がトランザクションチップ114と通信して大抵のトランザクション処理動作を行うためのインストラクションを提供してもよい。
ファームウエア更新インストラクション134は支払いリーダ22の各種コンポーネントのファームウエアを更新するためのインストラクションを含んでもよい。本明細書では支払いリーダ22の特定のコンポーネントが更新必須のファームウエアを有するものとして説明されているが、支払いリーダ22がファームウエアを有する追加のコンポーネントを含んでもよいこと、図3のコンポーネントのうちのひとつ以上がファームウエアを保持しなくてもよいこと、および支払いリーダ22内でファームウエアが保持される位置が任意の適切な方法で再構成されうること、は理解されるであろう。加えて、ファームウエア更新インストラクション134は処理ユニット120によって実行される際に任意の適切な動作を行ってもよいものであるが、ある実施の形態では、ファームウエア更新インストラクション134は、支払いリーダ22の各種コンポーネントに保持されるファームウエア用のファームウエアマニフェストを生成し、ファームウエアマニフェストに関して通信し、メモリ(例えば、リーダチップ100のフラッシュメモリ)に一時的に保持されているファームウエアを受信し、特定の更新用の全てのファームウエアが支払いリーダによって受信されたか否かを判定し、更新が完了するまで(例えば、オフセット値に基づいて)追加的なファームウエアを要求し、ファームウエア更新全体が受信されると特定のコンポーネントのファームウエアを更新してもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、支払いリーダ22によって受信されるファームウエアマニフェストの要求を受信して処理するためのインストラクションを含んでもよい。ファームウエア更新インストラクション134は、支払いリーダ22においてファームウエアマニフェストの要求を任意の適切なタイプの通信によって受信するために用いられ得るが、ある実施の形態では、ファームウエア更新インストラクション134は無線インタフェース108(例えば、ブルートゥースローエナジーメッセージを介して)または有線インタフェース110からファームウエアマニフェストの要求を受信してもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、支払いリーダ22のコンポーネントに保持されるファームウエアについての情報を含むファームウエアマニフェストを生成するためのインストラクションを含んでもよい。本明細書で用いられる場合、ファームウエアマニフェストは本開示にしたがう各種情報を含んでもよい。ファームウエア更新インストラクション134は、支払いリーダ22のコンポーネントに、そのコンポーネントのメモリに保持されるファームウエアについての情報を要求してもよい。ある実施の形態では、その情報は、ファームウエアのバージョンやファームウエアの名称やハッシュ値やCRCやコードのセクションやファームウエアを特定する任意の他の適切な方法やそれらの任意の組み合わせなどの、コンポーネントに関連付けられたファームウエアのバージョンを特定するために用いられてもよい情報を含んでもよい。ある実施の形態では、ファームウエア更新インストラクション134は、ファームウエアマニフェストを生成するために、支払いリーダ22のコンポーネントのいずれかに保持されるファームウエアについての情報を要求してもよい。ある実施の形態では、ファームウエア更新インストラクション134は、無線インタフェース108のメモリに保持されるファームウエア(例えば、無線ファームウエア)、リーダチップ110のメモリに保持されるファームウエア(例えば、オペレーティングファームウエア)、トランザクションチップ114の信号調整インストラクション170(例えば、信号調整ファームウエア)、トランザクションチップ114のデータ認証インストラクション168(例えば、データ認証ファームウエア)、トランザクションチップ114の汎用メモリ126のファームウエア(例えば、トランザクションファームウエア)、およびトランザクションチップ114の暗号化メモリのファームウエア(例えば、暗号化ファームウエア)、についての情報を要求してもよい。ファームウエアマニフェストは、ファームウエアのこれらの部分のそれぞれを特定する情報(例えば、ファームウエアのバージョン)を含んでもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、例えば、マーチャントデバイス29または支払いサーバ40にファームウエアマニフェストを送信するためのインストラクションを含んでもよい。送信は各種形態をとってもよく、無線インタフェース108または有線インタフェース110を介してマーチャントデバイス29と交換されるメッセージや任意の他の適切な態様で交換されるメッセージを含む。ある実施の形態では、ファームウエア更新インストラクション134は、処理ユニット120に、ファームウエアマニフェストを生成して送信するためのインストラクションを提供してもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、例えばマーチャントデバイス29から、複数の圧縮ファームウエア更新ブロックのうちの第1部分を受信するためのインストラクションを含んでもよい。ある実施の形態では、マーチャントデバイス29は支払いサーバ40から圧縮ファームウエア更新ブロックを受信してもよく、それらのブロックのそれぞれは圧縮インストラクションのブロックを含み、それは解凍される(かつ必要であれば任意の他の適切な態様で処理される、例えば、復号される)と、支払いリーダ22のひとつ以上のコンポーネント用のファームウエア更新を含む。例えば、支払いサーバ40は、マーチャントデバイス29に、ファームウエア更新の圧縮バージョンを一緒に含む複数の圧縮ファームウエア更新ブロックを送信してもよい。マーチャントデバイス29は、次いで、支払いリーダ22に、圧縮ファームウエア更新の各ブロックを送信してもよい。ある実施の形態では、支払いリーダ22は、試行されるファームウエア更新の一部についてのみアクティブのままとされてもよく、この場合、複数の圧縮ファームウエア更新ブロックのうちの一部(例えば、第1部分)のみが受信され、支払いリーダ22において(例えば、リーダチップ100のメモリ122のフラッシュメモリに)格納される。ある実施の形態では、ファームウエア更新インストラクション134を用いることで、マーチャントデバイス29との通信を監視し続け、受信した圧縮ファームウエア更新ブロックを処理してメモリ(例えば、フラッシュメモリ)にそれらのブロックを格納するためのインストラクションを処理ユニット120に提供してもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、受信した圧縮ファームウエア更新ブロックを解凍し復号するためのインストラクションを含んでもよい。復号および解凍は任意の適切な暗号化方法および圧縮方法に基づく任意の適切な態様で行われてもよいが、ある実施の形態では、暗号化は公開鍵暗号化方法(例えば、トリプルDESやRSA)や対称鍵暗号化方法(例えば、Blowfish、Twofish、またはアドバンスドエンクリプションスタンダード(AES))を含んでもよく、一方で、圧縮は不可逆圧縮(例えば、JPEGやMPEGアルゴリズム)や可逆圧縮(例えば、PNGやGIFアルゴリズム)を含んでもよい。ある実施の形態では、処理ユニット120は、ファームウエア更新インストラクション134を実行することによって、特定の暗号化方法および圧縮方法を特定し、それに基づいて、圧縮ファームウエア更新ブロックの暗号化および解凍を行ってもよい。ファームウエアインストラクションは次いでメモリ(例えば、リーダチップ100のメモリ122のフラッシュメモリ)に格納されてもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、ファームウエア更新の全体が支払いリーダ22において受信されたか否かを判定するためのインストラクションを含んでもよい。ある実施の形態では、処理ユニット120は、ファームウエア更新インストラクション134を実行することによって、受信されメモリに格納されたデータについての情報と、支払いサーバ40によって提供されたファームウエア更新についての情報(例えば、非圧縮のファームウエア更新のサイズ)と、を比較してもよい。ファームウエア更新インストラクション134は、例えば、マーチャントデバイス29から送信された圧縮ファームウエア更新ブロックの全てを支払いリーダ22が受信して解凍したと処理ユニット120が判定した場合、メモリに保持されるファームウエア更新とファームウエア更新についての情報(例えば、ファームウエア更新のサイズ)とを比較するためのインストラクションを提供してもよい。
ある実施の形態では、ファームウエア更新の全体が受信されているというわけではない場合、ファームウエア更新インストラクション134は、ファームウエア更新のうちのどれくらいが受信されたかを判定するためのインストラクションを含んでもよい。この判定は受信に成功したファームウエアの量を決定しうる任意の適切な態様でなされてもよく、例えば、受信に成功した最後または最新のファームウエアインストラクションを特定し、そのインストラクションに関連付けられているオフセットを特定することによってなされてもよい。ファームウエアがメモリに格納される前に解凍されるある実施の形態では、このオフセットは非圧縮ファームウエアオフセットに対応してもよい。非圧縮ファームウエアオフセットは任意の適切な態様で特定されてもよいが、ある実施の形態では、受信され解凍されたファームウエア更新を保持するメモリは、計算された巡回冗長検査(CRC)値を含む位置を含んでもよい。非圧縮ファームウエアオフセットは、CRC値が正しいメモリ部分に基づいて特定されてもよい。オフセットはこれらのメモリ位置に基づいて任意の適切な態様で決定されてもよいが、ある実施の形態では、非圧縮ファームウエアオフセットを決定するために良好なCRC値に関連付けられている最新のファームウエアインストラクションが選択されてもよい。ある実施の形態では、この最新のインストラクションの前のファームウエアインストラクションの総数をその値として用いてもよく、これは、支払いリーダ22に送信すべき次の圧縮ファームウエアブロックを特定するために送信する次のファームウエアブロックを決定するために(例えば、マーチャントデバイス29によって)用いられる部分的ファームウエアオフセットとして機能してもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、支払いリーダ22からマーチャントデバイス29へ部分的ファームウエアオフセットを送信するためのインストラクションを含んでもよい。例えば、ファームウエア更新インストラクション134が支払いリーダ22によって受信された解凍済みファームウエア更新ブロックの第1部分(例えば、ファームウエア更新の不完全送信の第1部分)に基づいて部分的ファームウエアオフセットを決定した後、処理ユニット120は、例えば、無線通信インタフェース108(例えば、ブルートゥースローエナジーインタフェースを介して)、有線通信インタフェース110、または本明細書で説明される任意の他の適切な通信を介して、マーチャントデバイス29に、部分的ファームウエアオフセットに関連付けられた情報を送信してもよい。
本明細書で用いられる場合、部分的ファームウエアオフセットは、支払いリーダのメモリに保持される非圧縮ファームウエアデータに対応するものとして説明される。ある実施の形態では、支払いリーダはまた、ファームウエア更新ブロックと共にオフセットテーブルを受信してもよく、該テーブルを用いることで非圧縮ファームウエアオフセットを圧縮ファームウエアオフセットに関連付けることができる。このオフセットテーブルおよびメモリからの既知の非圧縮ファームウエアオフセットに基づいて、支払いリーダ22は、マーチャントデバイス29への送信対象の圧縮ファームウエアオフセットを決定してもよい(例えば、マーチャントデバイス29においてオフセットテーブルを保持し、非圧縮データと圧縮データとの間の変換をマーチャントデバイス29において行う代わりに)。
ある実施の形態では、ファームウエア更新インストラクション134は、マーチャントデバイス29から、部分的ファームウエアオフセットに基づいて、複数の圧縮ファームウエア更新ブロックのうちの第2部分を受信するためのインストラクションを含んでもよい。マーチャントデバイス29において利用可能な複数の圧縮ファームウエア更新ブロックに含まれる全てのデータを受信する代わりに、ファームウエア更新インストラクション134は、処理ユニット120によって実行されると、支払いリーダ22が部分的ファームウエアオフセットに基づいてファームウエア更新の処理を再開することを可能とするインストラクションを含む。例えば、複数の圧縮ファームウエア更新ブロックのうちの第2部分は、支払いリーダ22によってその全体が以前に受信されてしまっているファームウエア更新ブロックを含まなくてもよい。この態様では、支払いリーダ22は、ファームウエア更新を最初からもう一度行う代わりに、ファームウエア更新が適切に受信された直近のポイントからファームウエアの更新を続けることができる。
ある実施の形態では、以前に受信したファームウエアの直近の位置は、どの圧縮ファームウエアブロックの開始位置にも対応しない場合がある。ある実施の形態では、マーチャントデバイス29は最近格納されたファームウエアインストラクションに対応するよう圧縮ファームウエア更新ブロックの第2部分の最初のブロックを切り詰めてもよいが、ある実施の形態では、支払いリーダ22はファームウエア更新を開始する最初のブロックの位置を決定する必要がある。ある実施の形態では、ファームウエア更新インストラクション134は、支払いリーダ22がマーチャントデバイス29に送信された部分的ファームウエアオフセットに基づいて複数の圧縮ファームウエア更新ブロックの受信を再開することができるようにする情報を含むメッセージを、支払いリーダ22がマーチャントデバイス29と交換することを可能とするためのインストラクションを含んでもよい。例えば、ある実施の形態では、ファームウエア更新インストラクション134は、支払いリーダ22がマーチャントデバイス29からの複数の圧縮ファームウエア更新ブロックの第2部分の最初のブロックに含まれるデータを無視するためのインストラクションを含んでもよく、該最初のブロックは支払いリーダ22が既に受信し、メモリ122などのメモリに保持しているものである。すなわち、ある実施の形態では、ファームウエア更新インストラクション134は、処理ユニット120が、部分的ファームウエアオフセットに関する情報(例えば、部分的ファームウエアオフセットに対応する第1データブロックの非圧縮メモリオフセット)を用いることで、マーチャントデバイス29によって送信される複数の圧縮ファームウエア更新ブロックにおいて支払いリーダ22が無視すべきデータを特定することを可能とするインストラクションを含んでもよい。
ある実施の形態では、ファームウエア更新インストラクション134は、完全に受信されたファームウエア更新に基づいて支払いリーダ22のファームウエアを更新するためのインストラクションを含んでもよい。支払いリーダ22のファームウエアを更新するための任意の適切な技術が行われてもよいが、ある実施の形態では、支払いリーダ22のコンポーネントは処理ユニット120と通信し、その結果、それがコンポーネントにファームウエア更新を含むデータを、そのコンポーネントのファームウエアに対する更新として、送信してもよい。ある実施の形態では、コンポーネントのファームウエアの更新は既存のファームウエアの消去を含んでもよい。ある実施の形態では、処理ユニット120は、ファームウエア更新インストラクション134を実行することによって支払いリーダ22の他のコンポーネント(例えば、無線通信インタフェース108やトランザクションチップ114)のプロセッサと通信してもよく、これは、関連ファームウエアおよびメモリに現在保持されているファームウエアの更新要求を含む。
ファームウエア更新インストラクション134はまた、ファームウエア更新が行われている間に、支払いリーダ22においてトランザクションを処理することが許されるか否かを判定するためのインストラクションを含んでもよい。ファームウエア更新は、ファームウエア更新を完了する前に支払いリーダにダウンロードされ、処理され、格納されなければならないデータの量の結果として、比較的長時間かかりうる。(複数のコンポーネントのそれぞれに関連付けられているファームウエアアセットからの)ファームウエアの更新を必要としうる複数のコンポーネントがあると、ファームウエアを更新するのにかかる時間は増大する。さらに、支払いリーダのユーザは異なる利用パターンを有する。あるユーザは支払いリーダ22をたまにしか用いないことがあり、この場合、周期的なファームウエア更新は、支払いを処理するための支払いリーダ22の通常利用と干渉しうる。したがって、ファームウエア更新インストラクション134は、所定の状況のもとでは、ファームウエア更新が生じているのと同時に、支払いが処理されることを許すインストラクションを含んでもよい。
ある実施の形態では、支払いリーダ22は、マーチャントデバイス29を介して支払いサーバ40から(例えば、支払いサービスシステム50から)並列処理インジケータを受信してもよい。並列処理インジケータは、ファームウエア更新が生じている間に支払いを処理することが許されるか否かについて支払いリーダに知らせる任意の適切なインジケータ(例えば、メッセージ、識別子、フラグなど)であってもよい。本明細書で後述されるように、ファームウエア更新は、支払いリーダ22が支払いトランザクションとファームウエア更新との並列処理を行ってもよいような態様で設定されてもよい。例えば、限定された数の更新(「ブロッキング更新」)のみが、セキュリティや支払い処理事項などの重要な事項を解決するものでありえ、この場合、支払いの処理を停止しなければならない。他の例として、ある場合には、支払いリーダ22はまれな更新や完了に失敗した更新や他の理由の結果として、(支払いリーダの異なるコンポーネントに対する)ファームウエアアセットの組み合わせを有しうる。いずれにせよ、支払いリーダ22が支払いが処理されてもよいことを示す並列処理インジケータを受信すると、ファームウエア更新インストラクションは支払いリーダ22の他の処理に、支払いを処理してもよいことを知らせてもよい。支払いリーダ22が支払いが処理されてはならないことを示す並列処理インジケータを受信すると、ファームウエア更新インストラクションは支払いリーダ22の他の処理に、支払いを処理してはいけないことを知らせてもよい。
図4は、本開示のある実施の形態に係る、例示的マーチャントデバイス29を示す。マーチャントデバイス29は任意の適切な態様で実現されてもよいが、ある実施の形態では、マーチャントデバイス29は、ユーザインタフェースを提供し、ひとつ以上の他のデバイスと通信する双方向電子デバイスであってもよい。双方向電子デバイスの例は、タブレット、スマートフォン、スマートウォッチ、デスクトップコンピュータ、ラップトップコンピュータ、カスタム電子デバイス、または本明細書で説明される機能を実行するために必要なユーザインタフェースおよび通信能力を有する任意の他の適切な電子デバイスを含む。
図4において特定のコンポーネントが特定の構成で描かれているが、マーチャントデバイス29が追加のコンポーネントを含んでもよいこと、図4に示されるコンポーネントのうちのひとつ以上がマーチャントデバイス29に含まれなくてもよいこと、およびマーチャントデバイス29のコンポーネントが任意の適切な態様で再構成されうること、は理解されるであろう。ある実施の形態では、マーチャントデバイス29は、処理ユニット202と、メモリ204と、インタフェースバス206と、電源208と、ユーザインタフェース210と、第1無線インタフェース212と、第2無線インタフェース214と、有線インタフェース216と、を含む。
ある実施の形態では、マーチャントデバイス29は、マーチャントデバイス29の必要動作を制御し行うよう構成された処理ユニット202およびメモリ204を含む。ある実施の形態では、処理ユニット202は、メモリ204に保持されてもよいインストラクションに基づいて、モバイルオペレーティングシステム、プログラムおよびアプリケーションのインストラクションを実行する汎用プロセッサであってもよい。メモリ204は本明細書で説明されるような任意の適切なメモリタイプまたはそれらの組み合わせを含んでもよく、これはインストラクションおよび他のデータを保持し、マーチャントデバイス29のオペレーティングシステム、プログラムおよびアプリケーションの実行用のワーキングメモリを提供するためのものであり、例えばフラッシュメモリやRAMメモリである。ある実施の形態では、メモリ204は、オペレーティングインストラクション220やポイントオブセールアプリケーションインストラクション222やファームウエア更新インストラクション224などのインストラクションの複数の集合を含んでもよい。
処理ユニット202は、メモリ204のインストラクションを実行することによって、マーチャントデバイス29のひとつ以上の他のコンポーネントと相互作用し、それを制御してもよい。処理ユニット202はマーチャントデバイス29の他のコンポーネントと任意の適切な態様で通信してもよいが、ある実施の形態では、処理ユニットはインタフェースバス206を用いてもよい。インタフェースバス206は、I2C、SPI、USB、UART、およびGPIOなどのひとつ以上の通信バスを含んでもよい。ある実施の形態では、処理ユニット202は、メモリのインストラクションを実行し、それらのインストラクションに基づいて、インタフェースバス206の通信バスを介してマーチャントデバイス29の他のコンポーネントと通信してもよい。
マーチャントデバイス29はまた電源208を含んでもよい。電源208は、AC電力を変換するための、および/または、マーチャントデバイス29のコンポーネントによる使用のために複数のDC電圧を生成するための、電力変換回路を含んでもよい。電源208が電池を含む場合、電池は物理的な電力接続を介して、または、誘導充電を介して、または、任意の他の適切な方法を介して、充電可能である。図4ではマーチャントデバイス29の他のコンポーネントに物理的に接続されているようには描かれていないが、電源208はコンポーネントの要件にしたがって、マーチャントデバイス29のコンポーネントに各種電圧を供給してもよい。
マーチャントデバイス29はまたユーザインタフェース210を含んでもよい。ユーザインタフェース210は、マーチャントデバイス29のユーザに、マーチャントデバイス29で実行されているアプリケーションやプログラムと相互作用するための各種オプションを提供してもよい。例示的なユーザインタフェース210は、タッチスクリーンインタフェースや音声コマンドインタフェースやキーボードやマウスジェスチャ認識や任意の他の適切なユーザインタフェースやそれらの任意の組み合わせなどの任意の適切なユーザインタフェース用のハードウエアおよびソフトウエアを含んでもよい。ある実施の形態では、ユーザインタフェース210は、マーチャントデバイス29で実行されているポイントオブセールアプリケーションなどのアプリケーションやプログラム用の双方向ユーザインタフェースを表示するタッチスクリーンインタフェースであってもよい。
マーチャントデバイス29はまた複数の無線通信インタフェースを含んでもよい。無線通信インタフェースは、ブルートゥースクラシックやブルートゥースローエナジーやWiFiやセルラやショートメッセージサービス(SMS)やNFCや任意の他の適切な無線通信インタフェースやそれらの任意の組み合わせなどの無線通信インタフェースを提供するための任意の適切なハードウエアおよびソフトウエアを含んでもよい。ある実施の形態では、第1無線通信インタフェース212は主として支払いリーダ22と通信する無線通信インタフェース(例えば、ブルートゥースローエナジーインタフェース)であってもよく、一方、第2無線通信インタフェース214は主として支払いサーバ40の支払いサービスシステム50と(例えばインターネットを介して)通信する無線通信インタフェース(例えば、WiFi)であってもよい。
マーチャントデバイスはまた有線インタフェース216を含んでもよく、有線インタフェース216は、USBやライトニングやファイヤワイヤやイーサネットや任意の他の適切な有線通信インタフェースやそれらの任意の組み合わせなどの、他のデバイスや通信ネットワークとの有線通信のための任意の適切なインタフェースを含んでもよい。
メモリ204は、オペレーティングインストラクション220やポイントオブセールアプリケーションインストラクション222やファームウエア更新インストラクション224やマーチャントデバイス29を動作させるための任意の他の適切なインストラクション(例えば、マーチャントデバイス29のひとつ以上の他のアプリケーションやコンポーネントの動作に関するインストラクション)などの、マーチャントデバイス29の処理動作を実行するためのインストラクションの複数の集合を含んでもよい。
オペレーティングインストラクション220は、内部通信や電力管理やI/Oデバイスの制御や通信デバイスの制御やマーチャントデバイス29の他のハードウエアの制御や任意の他の適切なインストラクションやそれらの任意の組み合わせなどの、マーチャントデバイス29の任意の適切な汎用動作を制御するためのインストラクションを含んでもよい。ある実施の形態では、オペレーティングインストラクションは、マーチャントデバイス29で動作している大抵のドライバ、プログラムおよびアプリケーションと共にマーチャントデバイス29のオペレーティングシステムにインストラクションを提供してもよい。
オペレーティングインストラクション220は、ユーザインタフェース210の動作を制御するためのインストラクションを含んでもよい。ユーザインタフェースは、オペレーティングインストラクション220やポイントオブセールアプリケーションインストラクション222やファームウエア更新インストラクション224のプログラムおよびアプリケーションのインストラクションにしたがい制御されてもよい。ある実施の形態では、ポイントオブセールアプリケーションインストラクション222は支払いリーダ22のファームウエア更新についての情報を表示するためのインストラクションを含んでもよい。ファームウエア更新についての情報は、トランザクションが処理可能となる前にファームウエア更新が必要であることを示す情報や、所定の時刻までにファームウエア更新が行われなければならないことの通知や、ユーザが支払いリーダ22に提供すべきファームウエア更新を選択できるようにするインタフェースや、ファームウエア更新の処理に関するステータス通知や、支払いリーダ22のファームウエア更新に関する任意の他の適切な情報を含んでもよい。
オペレーティングインストラクション220はまた、支払いサーバ40の支払いサービスシステム50とのインタフェースとなり、かつ、支払いリーダ22とのインタフェースとなるためのインストラクションを含んでもよい。支払いリーダ22および/またはマーチャントデバイス29で実行されているアプリケーションは支払いサービスシステム50に(例えば、登録処理を介して)知られていてもよく、この場合、マーチャントデバイス29はポイントオブセールアプリケーションインストラクションにしたがって支払いサービスシステム50と共に支払いを処理してもよい。
ポイントオブセールアプリケーションインストラクション222はマーチャントデバイス29においてポイントオブセールアプリケーションを実行するためのインストラクションを含む。処理ユニット202によって実行されると、ポイントオブセールアプリケーションインストラクション222は、マーチャントが顧客との支払いトランザクションを処理することを可能とする、双方向インタフェースの豊かな表示を提供してもよい。これらのインストラクションは、マーチャントまたは顧客が、購入商品を選択することや、販売税を計算することや、チップを処理することや、レシートを提供することや、値引きや特別オファーを生成することや、顧客ロイヤリティプログラムを処理することや、アイテムの在庫検索やデリバリ検索をすることや任意の他の適切な小売りオペレーションを行うことを可能とするカスタマイズされたインタフェースを含んでもよい。ある実施の形態では、ポイントオブセールアプリケーションインストラクションは、不正トランザクションおよび改ざん試行に関する情報の豊かな表現と、不正トランザクションおよび改ざん試行に対応してとるべき是正措置の選択肢と、を提供するためのインストラクションを含んでもよい。
ファームウエア更新インストラクション224は、本明細書で説明される支払いリーダ22のファームウエアを更新することを助けるための任意の適切なインストラクションを含んでもよく、支払いリーダ22からのファームウエアマニフェストに対する要求を支払いサーバ40から受信し、マーチャントデバイスからファームウエアマニフェストを受信してそのファームウエアマニフェストをサーバに送信し、支払いサーバ40から複数の圧縮ファームウエア更新ブロックと関連オフセットテーブルとを受信し、支払いリーダ22に圧縮ファームウエア更新ブロックを送信し、支払いリーダ22から部分的ファームウエアオフセットを受信し、部分的ファームウエアオフセットおよびオフセットテーブルに保持されるオフセットに基づいて支払いリーダ22に送信されるべき複数のファームウエア更新ブロックの第2部分を決定することと、複数の圧縮ファームウエア更新ブロックの第2部分を支払いリーダ22に送信することと、を含む。
ファームウエア更新インストラクション224は、マーチャントデバイス29(または統合支払い端末20)が、支払いサーバ40、マーチャントデバイス29で実行されているポイントオブセールアプリケーションまたはポイントオブセールアプリケーションに対するユーザ入力からのファームウエアマニフェストの要求に基づいて、ファームウエアマニフェストを支払いリーダに要求するためのインストラクションを含んでもよい。ある実施の形態では、マーチャントデバイス29は、ファームウエアマニフェストを受信し、ファームウエアマニフェストの処理のためにそれを支払いサーバ40に送信してもよい。
マーチャントデバイスは次いで、支払いサーバ40(例えば、支払いサーバ40の支払いサービスシステム50)と通信してもよく、支払いリーダにファームウエア更新と関連情報とを提供してもよい。ある実施の形態では、ファームウエア更新は、複数の圧縮され暗号化されたファームウエア更新ブロックとして提供されてもよい。ある実施の形態では、関連情報はオフセットテーブルを含んでもよい。圧縮ファームウエア更新ブロックは支払いサーバ40において非圧縮データのブロックによって生成されていてもよく、この場合、各非圧縮ブロックの開始、終了およびある実施の形態では中間のオフセットは圧縮ブロックのオフセットと関連付けられうる。このオフセットテーブルに基づいて、マーチャントデバイス29や支払いリーダ22などのデバイスは圧縮データまたは非圧縮データのいずれかについてのオフセット値を受信し、その情報を用いることで他方のデータタイプ(それぞれ、非圧縮または圧縮)の関連オフセットを見出してもよい。この態様では、支払いサーバ40とマーチャントデバイス29との間、および、マーチャントデバイス29と支払いリーダ22との間、でデータは圧縮形式で送信されてもよい。支払いリーダ22はファームウエアを非圧縮形式で保持し、このデータからの部分的オフセットを用いることで、オフセットテーブルの関連性に基づいて圧縮ファームウエア更新ブロックを要求してもよい。ある実施の形態では、圧縮ファームウエア更新ブロックおよびオフセットテーブルは、支払いサーバ40から受信された後、マーチャントデバイス29において保持されてもよく、この場合、更新処理およびオフセットテーブルルックアップはファームウエア更新インストラクション224に基づいてマーチャントデバイス29において行われてもよい。
ある実施の形態では、ファームウエア更新インストラクション224は、マーチャントデバイス29が、支払いリーダ22に、圧縮ファームウエア更新ブロックを送信するためのインストラクションを含んでもよい。マーチャントデバイス29が支払いリーダ22から部分的ファームウエアオフセットを受信すると、ファームウエア更新インストラクション224は、マーチャントデバイス29が、支払いリーダ22に送信すべき複数の圧縮ファームウエア更新ブロックのうちの第2部分を決定するためのインストラクションを含んでもよい。ある実施の形態では、ファームウエア更新インストラクション224は、支払いリーダ22からの部分的ファームウエアオフセットに基づいてオフセットテーブルを用いて第2部分を決定するようマーチャントデバイスに指示してもよい。ある実施の形態では、マーチャントデバイス29は、オフセットテーブルにおいて支払いリーダ22からの部分的ファームウエアオフセットに対応する値を探すことによって、圧縮ファームウエア更新ブロックの第2部分を決定してもよい。例えば、例示的な実施の形態では、オフセットテーブルはオフセット値と第2部分(すなわち、複数の圧縮ファームウエア更新ブロックのうち、第2部分として送信されるべき長さを表す値)とを関連付けてもよい。ある実施の形態では、ファームウエア更新インストラクション224は、マーチャントデバイス29が、支払いリーダ22からの部分的ファームウエアオフセットとオフセットテーブルのオフセット値とをマッチングすることによって、第2部分を決定するためのインストラクションを提供してもよい。
図5は、本開示のある実施の形態に係る、支払いサーバ40の例示的な支払いサービスシステム50を示す。支払いサービスシステム50は単一のサーバとして描かれているが、支払いサービスシステム50の動作およびメモリは任意の適切な数のサーバに分散していてもよいことは理解されるであろう。図5において特定のコンポーネントが特定の構成で描かれているが、支払いサービスシステム50が追加のコンポーネントを含んでもよいこと、図5に示されるコンポーネントのうちのひとつ以上が支払いサービスシステム50に含まれなくてもよいこと、および支払いサービスシステム50のコンポーネントが任意の適切な態様で再構成されうること、は理解されるであろう。ある実施の形態では、支払いサービスシステム50が本明細書で支払いサーバ40に属する機能のいずれかを行うために必要なコンポーネントを含みかつ必要な構成を有してもよいことは理解されるであろう。ある実施の形態では、支払いサービスシステム50は、少なくともひとつの処理ユニット302と、メモリ304と、インタフェースバス306と、電源308と、通信インタフェース310と、アセットデータベース332と、を含む。
ある実施の形態では、支払いサービスシステム50は、支払いサービスシステム50の必要動作を制御し行うよう構成された処理ユニット302およびメモリ304を含む。ある実施の形態では、処理ユニット302は、メモリ304に保持されてもよいインストラクションに基づいて、サーバ用のオペレーティングシステム、プログラムおよびアプリケーションのインストラクションを実行する高速プロセッサであってもよい。メモリ304は本明細書で説明されるような任意の適切なメモリタイプまたはそれらの組み合わせを含んでもよく、これはインストラクションおよび他のデータを保持し、支払いサービスシステム50のオペレーティングシステム、プログラムおよびアプリケーションの実行用のワーキングメモリを提供するためのものである。ある実施の形態では、メモリは、オペレーティングインストラクション320や支払い処理インストラクション322やファームウエア更新インストラクション324を含むがそれらに限定されないインストラクションの複数の集合を含んでもよい。
処理ユニット302は、メモリ304のインストラクションを実行することによって、支払いサービスシステム50のひとつ以上の他のコンポーネントと相互作用し、それを制御してもよい。処理ユニット302は支払いサービスシステム50の他のコンポーネントと任意の適切な態様で通信してもよいが、ある実施の形態では、処理ユニット302はインタフェースバス306を用いてもよい。インタフェースバス306は、I2C、SPI、USB、UART、およびGPIOなどのひとつ以上の通信バスを含んでもよい。ある実施の形態では、処理ユニット302は、メモリ304のインストラクションを実行し、それらのインストラクションに基づいて、インタフェースバス306の通信バスを介して支払いサービスシステム50の他のコンポーネントと通信してもよい。
支払いサービスシステム50はまた電源308を含んでもよい。電源308は、AC電力を変換するための、および/または、支払いサービスシステム50のコンポーネントによる使用のために複数のDC電圧を生成するための、電力変換回路を含んでもよい。ある実施の形態では、電源308は、停電時のサービス中断を避けるために電池バックアップなどのバックアップシステムを含んでもよい。図5では支払いサービスシステム50の他のコンポーネントに物理的に接続されているようには描かれていないが、電源308はコンポーネントの要件にしたがって、支払いサービスシステム50のコンポーネントに各種電圧を供給してもよい。
支払いサービスシステム50はまた通信インタフェース310を含んでもよい。通信インタフェース310は任意の適切な通信インタフェースまたはそれらの組み合わせを含んでもよいが、ある実施の形態では、通信インタフェース310はWiFiやセルラやイーサネットや光ファイバなどの高速通信インタフェースを用いてもよい。通信インタフェース310は、支払いリーダ22のファームウエア更新に関するメッセージ(例えば、ファームウエアマニフェスト、複数のファームウエア更新ブロック、およびオフセットテーブル)を交換するために、支払い端末20(例えば、マーチャントデバイス29を介した支払いリーダ22)とのセキュアな接続(例えば、TLSやSSLを介して)を確立してもよい。通信インタフェース310はまた、トランザクション処理サーバなどの支払いサーバ40の他のサーバと通信してもよく、それらはある実施の形態では、支払いサービスシステム50から離れたところに配置されていてもよく、支払いサービスシステム50を制御する主体とは異なる主体により運営されていてもよい。例えば、ある実施の形態では、支払いサービスシステム50は支払いリーダ22、マーチャントデバイス29、またはポイントオブセールアプリケーション222のうちのひとつ以上を提供する主体によって運営されていてもよい。トランザクション処理サーバはマーチャント、イシュア、または顧客の銀行のうちのひとつ以上に関連付けられ、かつそれによって運営されていてもよい。
メモリ304は、オペレーティングインストラクション320や支払いインストラクション322やファームウエア更新インストラクション324や支払いサービスシステム50を動作させるための任意の他の適切なインストラクション(例えば、支払いサービスシステム50のひとつ以上の他のアプリケーションやコンポーネントの動作に関するインストラクション)などの、支払いサービスシステム50の処理動作を実行するためのインストラクションの複数の集合を含んでもよい。
オペレーティングインストラクション320は、内部通信や電力管理や通信デバイスの制御や支払いサービスシステム50の他のハードウエアの制御や任意の他の適切なインストラクションやそれらの任意の組み合わせなどの、支払いサービスシステム50の任意の適切な汎用動作を制御するためのインストラクションを含んでもよい。ある実施の形態では、オペレーティングインストラクションは、支払いサービスシステム50で動作している大抵のドライバ、プログラムおよびアプリケーションと共に支払いサービスシステム50のオペレーティングシステムにインストラクションを提供してもよい。
オペレーティングインストラクション320はまた、マーチャントデバイス29とのインタフェースとなるためのインストラクションを含んでもよい。ある実施の形態では、支払いサービスシステム50は通信インタフェース310を介してマーチャントデバイス29と通信してもよい。オペレーティングインストラクション320は、処理ユニット302によって実行された場合、これらの通信を制御し、TLSやSSLや鍵に基づき暗号化されたデータとしてなどの手順を実装することによってセキュアな通信を提供するインストラクションを含んでもよい。
支払い処理インストラクション322は支払いを処理するためのインストラクションを含み、マーチャントデバイス29、支払いリーダ22(例えば、マーチャントデバイス29を介して)、および/またはトランザクション処理サーバに伝達されるメッセージの内容を制御してもよい。ある実施の形態では、支払い処理インストラクションは、支払いリーダ22およびインストールされたポイントオブセールアプリケーション222を有するマーチャントデバイス29のそれぞれについての情報を含んでもよい。量やクレジットカード番号などの支払い情報をトランザクション処理システムに提供し、マーチャントに応答を返すことなどの支払い処理機能を実行することに加えて、支払いサービスシステム50はまた、マーチャントデータの複雑な解析を実行し、それを用いてマーチャント(例えば、複数の場所で複数のマーチャントデバイス29を運用するマーチャント)にレポートやメトリックや他のデータを提供してもよい。支払い処理インストラクション322はまた、支払いデバイス10、支払いリーダ22またはマーチャントデバイス29のうちのひとつ以上によって提供されるデータを暗号化および復号するための共有秘密鍵や公開鍵/秘密鍵ペアの鍵などの暗号化鍵にアクセスするためのインストラクションを含んでもよい。
ファームウエア更新インストラクション324は、支払いサービスシステム50と通信する支払いリーダ22にファームウエア更新を提供する(例えば、マーチャントデバイス29およびネットワーク30を介して支払いリーダ22に更新を送信する)ためのインストラクションを含んでもよい。ファームウエア更新インストラクション324は本明細書では支払いリーダ22にファームウエア更新を提供するものとして説明されるが、これらのインストラクションは、支払い端末20やマーチャントデバイス29や無線通信デバイスやファームウエア更新を必要とする任意の他の適切なデバイスなどの任意の適切なデバイスにファームウエアを提供してもよいことは理解されるであろう。また、本明細書での議論は支払いサービスシステム50およびマーチャントデバイス29の両方での処理を含むが、ファームウエア更新インストラクション324のいくらかまたは全ての側面がマーチャントデバイス29において実行されてもよいこと、ならびに、ファームウエア更新インストラクション224のいくらかまたは全ての側面が支払いサービスシステム50において実行されてもよいことは理解されるであろう。
ある実施の形態では、数千または数百万もの支払いリーダや同様のデバイスが支払いサービスシステム50と通信し、例えばソフトウエアのバグを治すために、改善された性能を提供するために、新たな支払い標準や既存標準に対する変更を実装するために、セキュリティ問題を解決するために、および多くの他の理由によって、ときどき更新する必要があるファームウエアを含んでもよい。
ある実施の形態では、ファームウエア更新インストラクション324は、支払いリーダ22から、ファームウエアに関する情報(例えばファームウエアマニフェスト)を受信するためのインストラクションを含んでもよい。ある実施の形態では、支払いサービスシステム50は、例えばファームウエアのバージョンが最新か判定するために定期的に、または支払いリーダ22のひとつ以上のコンポーネントに対するファームウエア更新に対する大きなアップグレードの後に、支払いリーダにファームウエア情報を要求してもよい。ある実施の形態では、支払いリーダ22の異なるバージョンは異なるハードウエアを有してもよく、この場合、支払いサービスシステム50は異なるデバイス用の異なるファームウエアを維持しなければならない。ある実施の形態では、ファームウエア情報(例えば、ファームウエアマニフェスト)は、支払いサーバからの要求を必要とすること無く、例えば各支払いトランザクションと共に、定期的に、電力投入ごとに、または任意の他の適切なタイミングで、支払いリーダ22によって送信されてもよい。
ある実施の形態では、ファームウエア更新インストラクション324は、支払いサービスシステム50に(例えば、アセットデータベース332に)保持されるファームウエアにアクセスするためのインストラクションを含んでもよい。アセットデータベース332は支払いリーダ22のファームウエアのバージョンに関する情報を大規模に保持し、アセットデータベース332に保持される情報は定期的に更新されてもよい。ある実施の形態では、多くのタイプの支払いリーダ22があってもよく、支払いリーダ22の各タイプはメモリに保持されるファームウエアを有してもよい異なるコンポーネントを有してもよい。アセットデータベース332は情報を含んでもよく、ファームウエア更新インストラクション324がこの情報を用いることで支払いリーダ22のメモリ内のファームウエアが更新を必要とするか否かを判定することができる。例示的な実施の形態では、アセットデータベース332はファームウエア更新インストラクション324を用いて抽出可能なファームウエア(例えば、非圧縮ファームウエア)を含んでもよい。例示的な実施の形態では、特定の支払いリーダ22のファームウエアマニフェストに基づいて支払いリーダの更新が必要であると判定された場合、アセットデータベース332に保持されるファームウエア更新が処理ユニット302によってアクセスされてもよい。アセットデータベース332に保持される情報は、ファームウエア更新位置やファームウエアのバージョンやソフトウエアのバージョンやファームウエア更新ブロックや支払いリーダのタイプやファームウエアマニフェスト情報などの任意の適切な情報を含む。
ある実施の形態では、ファームウエア更新インストラクション324は、支払いリーダ22内のファームウエアが更新を必要としているかを判定するためのインストラクションを含んでもよい。ある実施の形態では、ファームウエア更新インストラクション324は、支払いリーダ22からのファームウエアマニフェスト内の情報と、アセットデータベース332に保持されているそのタイプの支払いリーダ22に適するファームウエアについての情報と、を比較することによって、支払いリーダ22内のファームウエアが更新を必要としているかを判定するためのインストラクションを提供してもよい。例えば、ある実施の形態では、支払いサービスシステム50は、ファームウエア更新インストラクション324を用いることにより、ファームウエアマニフェスト内の情報に基づいて支払いリーダ22のファームウエアのバージョンを特定してもよい。支払いサービスシステム50は、ファームウエアマニフェストによって示されるファームウエアのバージョンを記憶し、その特定の支払いリーダタイプのファームウエアが更新を必要とするかを示す情報にアクセスするかそうでなければその情報を探してもよい。一例として、ある実施の形態では、処理ユニット302は、ファームウエア更新インストラクション324を用いてアセットデータベース332に保持されるデータにアクセスし、ファームウエアマニフェストに示されるファームウエアのバージョンと、アセットデータベース332に保持される支払いリーダ22のファームウエアのバージョンと、を比較してもよい。ある実施の形態では、処理ユニット302は、ファームウエア更新インストラクション324を実行することによって、支払いリーダ22に保持されるファームウエアが更新を必要とする(例えば、アセットデータベース332に保持されるその支払いリーダ22の最新バージョンよりも古いファームウエアバージョンである)ことをファームウエアマニフェストが示す場合に、ファームウエア更新が必要であると決定してもよい。ファームウエア更新インストラクション324を用いることで、更新されなければならない支払いリーダ22に保持されるファームウエアのバージョンを特定することができ、アセットデータベース332に保持されるファームウエア更新を記憶することで、支払いリーダ22に適切なファームウエア更新を送信することができる。
アセットデータベース332に保持されるデータの解析は任意の適切な態様で行われてもよいが、ある実施の形態では、データを解析するためにルックアップ手法が用いられてもよい。支払いサービスシステム50は支払いリーダ22から受信したファームウエアマニフェストに基づいてファームウエア更新が必要であると決定し、それにしたがい適切なファームウエア更新にアクセスしてもよい。支払いサービスシステム50は同様に、支払いサービスシステム50によって受信されたメッセージに基づいて、アセットデータベース332に保持されるデータを更新してもよい。ある実施の形態では、支払いサービスシステム50は、アセットデータベース332に保持されているバージョンを置き換えるファームウエアの新たなバージョンを受信してもよい。一例として、支払いサービスシステム50は、支払いリーダ22のファームウエア更新を含むメッセージを(例えば、支払いサーバ40、支払いサーバ50、または支払いリーダ22を運営する主体から)受信してもよい。ある実施の形態では、支払いサービスシステム50は、アセットデータベース332に新たなファームウエア更新を格納してもよく、ある実施の形態では、これはファームウエア更新をブロックの集合として格納すること(例えば、ファームウエア更新を所定サイズまたは可変サイズのブロックに分割することによって)を含んでもよい。したがって、例示的な実施の形態では、支払いサービスシステム50は、支払いリーダ22の最新ファームウエアを表すデータを受信してアセットデータベース332に格納し、それにしたがい本明細書で説明されるようなデータに基づいて支払いリーダ22のファームウエアを更新してもよい。
ファームウエア更新インストラクション324はまた、支払いリーダ22に送信されるべきファームウエアをブロックに分割し、それらのブロックを圧縮し、それらのブロックを暗号化するためのインストラクションを含んでもよい。複数のファームウエア更新ブロックは、可逆圧縮法、不可逆圧縮法、または他の圧縮法を含む任意の適切な圧縮手法を用いて圧縮されてもよい。ある実施の形態では、ファームウエア更新インストラクション324は、ファームウエア更新の全体を圧縮することで、それが支払いリーダ22に(例えば、ネットワーク30を用いてマーチャントデバイス29を介して)送信されるようにするためのインストラクションを含んでもよい。ある実施の形態では、ファームウエア更新インストラクション324は、複数のファームウエア更新ブロックを、ファームウエア更新の全体を表す同数の圧縮ファームウエア更新ブロックへと圧縮してもよい。すなわち、元の非圧縮データブロックと圧縮データブロックとの間に一対一対応があるということである。ある実施の形態では、複数のファームウエア更新ブロックにおけるブロックの数と、ファームウエア更新インストラクション324による圧縮の後の圧縮ファームウエア更新ブロックの数と、は同じであってもよい。
ファームウエア更新インストラクション324はまた、本明細書で説明されるように、元の(非圧縮)ファームウエア更新ブロック内のデータの位置と、圧縮ファームウエア更新ブロック内のデータの位置と、の比較に基づいてオフセットテーブルを生成するためのインストラクションを含んでもよい。オフセットテーブルは、各非圧縮ブロックの開始および終了のオフセットと、その対応する圧縮ブロックのオフセットと、を関連付けてもよく、ある実施の形態では、データブロック内の様々な位置を互いに関連付けてもよく、この場合、支払いリーダ22におけるファームウエア更新中に、対応するデータブロックをより高い精度で(例えば、マーチャントデバイス29が)特定することができる。
ある実施の形態では、ファームウエア更新インストラクション324は、マーチャントデバイス29に、オフセットテーブルおよび複数の圧縮ファームウエア更新ブロックを送信するためのインストラクションを含んでもよい。例示的な実施の形態では、ネットワーク30を介して支払いサービスシステム50の通信インタフェース310を用いてマーチャントデバイス29に、複数の圧縮ファームウエア更新ブロックおよびオフセットテーブルを送信してもよいが、支払いサービスシステム50の任意の適切なコンポーネントが用いられてもよい。ある実施の形態では、ファームウエア更新インストラクション324は、本明細書で説明されるように、支払いサービスシステム50によって生成されたオフセットテーブルと、マーチャントデバイス29による相関のための複数の圧縮ファームウエア更新ブロックとを関連付けるためのインストラクションを含んでもよい。
ある実施の形態では、ファームウエア更新インストラクション324は、支払いリーダ用のファームウエア更新手順を管理するためのインストラクションを含んでもよい。ファームウエア更新手順を管理することは任意の適切な機能を含んでもよいが、ある実施の形態では、ファームウエア更新手順を管理することは、特定のファームウエアアセットのための(例えば、支払いリーダの特定のコンポーネントおよび機能に関連付けられたアセットのための)許容可能な更新順序を決定することと、適切な態様で(例えば、動作しないファームウエアの組み合わせを支払いリーダ22に提供することを避ける適切な順序で)更新を提供することと、支払いリーダ22がファームウエア更新が生じている間に支払いの処理を継続してもよいか否かを(例えば、支払いリーダ22に提供される並列処理インジケータに基づいて)判定することと、を含んでもよい。
本明細書でもちいられる場合、支払いリーダ22の多くの異なるコンポーネントはそれぞれが自身のファームウエアを有してもよく、この場合、ファームウエアの各部分が必要に応じて個々に更新されてもよい。しかしながら、異なる複数のリーダタイプがあり、それぞれが利用パターンに基づいて異なる間隔で更新されるものであり、各支払いリーダの動作条件に基づいてアドホック的態様で更新が生じる(例えば、この場合、ファームウエア更新の部分集合のみが特定のパワーサイクル中に更新されてもよい)ものでもあり、これらにより、任意の時刻において多くの支払いリーダにおいて多くのバージョンのファームウエアが存在することとなろう。本明細書で説明されるように、ファームウエア更新中の支払いリーダ22による支払いの処理を禁止することは望ましくない。なぜならば、そのようにするとエンドユーザを頻繁に遮ることとなるからである。したがって、可能な場合はいつでも、ファームウエアアセットの部分集合のみが最新である場合や、支払いリーダ22におけるファームウエアアセットが最新でない場合でも、支払いリーダ22を動作可能とすることが望ましい。
支払いリーダ22のファームウエアアセットのどれも最新ではないかまたはいくつかのみが最新である場合に支払いトランザクションの処理を許すことが望ましいが、ファームウエアアセットの組み合わせの相互運用性に基づく問題が生じうる。例えば、例示的な支払いリーダは、リーダチップ100、トランザクションチップ114の汎用処理ユニット124、トランザクションチップ114の暗号化処理ユニット125、無線インタフェース108の処理ユニット180、FPGA112、トランザクションチップ114の汎用プロセッサ124が実行するデータ認証インストラクション168(例えば、TMS−CAPKインストラクション)、のそれぞれ用のファームウエアアセットを含んでもよい。これら六つのファームウエアアセットの任意の組み合わせが許される場合、ファームウエアアセットの可能な組み合わせが数千にのぼることとなり、その数はこれらのアセットについてリリースされたファームウエアのバージョンの数に依存する。支払いトランザクションは高度にセンシティブな金融情報の移送を含むので、テストおよび検証を経ていないファームウエアのバージョンの組み合わせを有することは許容されない。可能な組み合わせが数千もあると、多くのファームウエアのバージョンの相互運用性を保証することは不可能である。したがって、ファームウエア更新インストラクション324は、ほとんどの状況下で、中間的なファームウエア状態(すなわち、支払いリーダ22におけるいくつかではあるが全てではないファームウエアアセットの更新)の処理を可能とする構成をファームウエア更新に与えてもよい。
アセットデータベース332は複数のファームウエアアセットについてのファームウエアバンドルのリストを保持してもよい。ある実施の形態では、各ファームウエアバンドルはファームウエアアセットの特定のリリースを定義してもよい。例示的なファームウエアバンドルは、ファームウエアアセットのそれぞれのバージョンを含んでもよく、この場合、各バンドルはファームウエアアセットの組み合わせの許容可能なリリースを含む。支払いサービスシステム50が支払いリーダからファームウエアマニフェストを受信すると、それはファームウエアマニフェストのファームウエアバージョンと、支払いリーダのファームウエアバージョンと、を比較してもよい。ファームウエアマニフェスト内で示されているファームウエアバージョンの組み合わせがファームウエアバンドルのうちのひとつに対応する場合、支払いリーダは許容可能なファームウエアバージョンで動作しており、したがって、ファームウエア更新インストラクション324が支払い処理を止めることは、ブロッキングバンドルの場合を除いて、必要でない。
ファームウエア更新インストラクション324は、ブロッキングバンドル(例えば、それがブロッキングであるとのインジケータを有する、アセットデータベース332に保持されるバンドル)の場合にファームウエア更新を処理するためのインストラクションを含んでもよい。本明細書で説明されるように、所定のファームウエア更新は、セキュリティや支払い処理機能などの重要な機能に対する更新を含んでもよい。そのような重要な更新は、重要なファームウエアのファームウエア更新が完了するまでは支払いリーダは更新を処理することを許されるべきではないようなものであってもよい。ある実施の形態では、ブロッキング更新はバンドル全体に適用されてもよく、この場合、バンドル全体が支払いリーダにおいて更新されるまで、支払いの処理は継続しない(例えば、支払いサービスシステム50は支払いリーダ22からの支払いを処理せず、支払いの処理を停止すべきであることを示す並列処理インジケータを支払いリーダ22に送信してもよい)。ある実施の形態では、バンドル内のファームウエアアセットの部分集合がブロッキングファームウエアアセットとして示されてもよく、この場合、ファームウエアアセットのその部分集合が更新されると支払い処理が再開されてもよい。
ファームウエア更新インストラクション324は、例えばバンドル内のファームウエアアセットの順序に基づいて、順序通りのファームウエア更新を強制するためのインストラクションを含んでもよい。各バンドルは順序付けられていてもよく、その順序はファームウエアアセットのタイプ(すなわち、ファームウエアアセットが関連付けられている支払いリーダ22のコンポーネント)に基づいてもよい。ファームウエアバンドル内のファームウエアアセットの順序は各ファームウエアアセットの優先度を表してもよく、この場合、ファームウエア更新インストラクション324は、支払いサービスシステムに、最も高い優先度のファームウエアアセットを最初に支払いリーダ22に送信させ、などなどで、最も低い優先度のファームウエアアセットにいたり、それは他の全てのファームウエアアセットが更新されてしまった後にのみ、支払いリーダ22に提供される。この順序付けは、バンドル間の許可可能中間状態の部分集合の制限を強制してもよい。支払いリーダ22の例示的な許可可能中間状態は、バンドルの順序により要求されるように適切な順序で二つのバンドル間で部分的に更新されるような状態であってもよい。例えば、例示的な支払いリーダ22のある実施の形態では、ファームウエアアセットはバンドル内で以下の様に順序付けられてもよい。ここで、(1)は最も高い優先度を、(6)は最も低い優先度を、それぞれ有する。
(1) リーダチップ100のファームウエア
(2) トランザクションチップ114の汎用処理ユニット124のファームウエア
(3) トランザクションチップ114の暗号処理ユニット125のファームウエア
(4) 無線インタフェース108の処理ユニット180のファームウエア
(5) FPGA112とのインタフェースとなるためのファームウエア
(6) トランザクションチップ114の汎用処理ユニット124によって実行されるデータ認証インストラクション168(例えば、TMS−CAPKインストラクション)のファームウエア
上述の例では、新たなバンドルへの更新が必要な場合はいつでも、(1)のファームウエアが最初に更新される。更新が完了すると、(2)のファームウエアが更新され、などであり、これが、支払いリーダにおいて、(1)から(6)までの全てがファームウエアバンドルに示されるファームウエアアセットのバージョンに更新されるまで、続く。
本明細書で説明されるように、ある実施の形態では、ファームウエア更新は、ファームウエアバンドルのアセットのうちのいくつかのみが支払いリーダにおいて更新されるように、中断されてもよい。支払いリーダ22がそのファームウエアマニフェストを支払いサービスシステム50に提供する次の機会に、支払いサービスシステムは、ファームウエア更新インストラクション324に基づいて、支払いリーダ22のファームウエアがバンドル間の遷移状態にあると決定してもよい。バンドルが強制順序にしたがって(例えば、上述の例では(1)−(6)の順序で)提供された場合、この遷移状態は、支払いリーダが支払いトランザクションの処理を続けることができ(例えば、次のバンドルがブロッキングバンドルではないと仮定する)、一方で次のファームウエアバンドルに準拠すべくファームウエアアセットの更新を終了できる、許可可能状態にあってもよい。順序付けは、二つのバンドルの間の遷移について限られた数の方法しかないことを要求し、したがって、動作可能であることを証明しなければならないファームウエアバージョンの組み合わせの数を制限することができる。したがって、各遷移状態が、支払いリーダがトランザクションを処理することが許される状態であるかを検証することができる。
支払いリーダ22がファームウエアマニフェストを提供し、その中でファームウエアがファームウエアバンドルにも遷移状態にも即さない(すなわち、バンドル内のアセットの順序によって強制される要求順序に従うか)場合、支払いリーダ22のファームウエアは非準拠状態にあると決定され、この場合、ファームウエア更新インストラクションに基づいて、支払いリーダ22のファームウエアの全てが最新のバンドルに更新されてしまうまで何の処理も生じないであろう。
バンドル、ブロッキング更新、遷移状態、および非準拠状態に基づいて、ファームウエア更新インストラクションは、更新のバンドルを選択し、ファームウエア更新インストラクション324に基づいて支払いリーダ22に並列処理インジケータを提供してもよい。本明細書で説明されるように、支払い処理システム50は支払いリーダ22からファームウエアマニフェストを受信してもよい。支払い処理システム50はまた、許可可能バンドルのリストを含むアセットデータベース332を含んでもよい。支払い処理システム50は、まず、ファームウエアマニフェストのファームウエアバージョンがファームウエアバンドルまたは遷移状態に対応するか否かを特定してもよい。そうでなければ、支払いリーダ22は非準拠状態にあり、メッセージ(例えば、並列処理インジケータ)を支払いリーダ22に送信することで、支払いトランザクションの処理を停止する。現在の状態がファームウエアバンドルまたは遷移状態に対応する場合、支払いリーダ22において、アセットデータベースのなかに後続のブロッキングバンドルがない限り、処理を続けることができる。後続のブロッキングバンドルがあると、メッセージ(例えば、並列処理インジケータ)を支払いリーダ22に送信することで、支払いトランザクションの処理を停止する。
ファームウエア更新インストラクション324はまた、支払いリーダ22に提供すべきファームウエアの次のバンドルを選択するためのインストラクションを含んでもよい。後続のバンドルがブロッキングバンドルである場合、ファームウエアを最新のブロッキングバンドルに更新する必要がある。このブロッキング更新が完了するまで支払いトランザクションの処理が生じないので、次の更新は最新のブロッキング更新へと直接に更新してもよい。最新のブロッキング更新の後に後の非ブロッキング更新がある場合、ある実施の形態では、次の更新は最新のバンドルへと直に更新してもよい。支払いリーダのファームウエアがバンドルまたは遷移状態に対応し、後続のブロッキング更新がない実施の形態では、遷移はバンドルのシーケンスにおける次のバンドルへのものであってもよく、この場合、ファームウエア更新が全てのバンドルについて完了しなかった場合、支払いリーダ22はファームウエア更新処理中でも支払いを許す遷移状にあり続けるであろう。
上述の構成およびデバイスに照らし、開示される主題にしたがい実装されうる方法は、図6−8のフローチャートを参照することでより良く理解されるであろう。説明の簡単化を目的として、方法が一連のステップとして示され説明されるが、そのような図示または対応する説明はステップの順番に限定されるものではなく、いくつかのステップが本明細書で図示され説明されるものとは異なる順番でおよび/または他のステップと同時に生じうることは理解され認識されるべきである。フローチャートを介して図示される任意のシーケンシャルでないまたは枝分かれのフローは、同じまたは同様の結果を達成する種々の他の枝分かれやフローパスやステップの順番が実装可能であることを示すものとして理解されるべきである。さらに、以下に説明される方法を実装するために、図示される全てのステップが要求されるわけではない場合がある。
図6は、本開示のある実施の形態に係る、支払いシステムの支払いリーダ22にファームウエア更新を提供するデータフロー410を示す。ある実施の形態では、図6に示されるように、ステップ400は、支払いリーダ22、マーチャントデバイス29、および支払いサーバ40(すなわち、支払いサービスシステム50によって)などの支払い端末デバイスによって行われる。ある実施の形態では、これらのステップは特定のデバイスによって行われるように描かれているが、デバイス間でのステップの割り当てが任意の適切な態様で変更されてもよいことや、ステップを行うデバイスの数が任意の適切な態様で変更されてもよいことは、理解されるであろう。
ステップ511で、支払いサーバ40は、図5を参照して本明細書で説明された通り、支払いリーダ22からのファームウエアマニフェストの要求を、マーチャントデバイス29に、送信してもよい。より具体的には、支払いサービスシステム50は、例えばファームウエアのバージョンが最新か判定するために定期的に、または支払いリーダ22のひとつ以上のコンポーネントに対するファームウエア更新に対する大きなアップグレードの後に、支払いリーダ22にファームウエア情報を要求してもよい。ステップ511での要求はある実施の形態ではネットワーク30を介して送信されてもよいが、要求を伝達する任意の適切な手段が用いられてもよい。ステップ512で、マーチャントデバイス29は、支払いサーバ40、マーチャントデバイス29で実行されているポイントオブセールアプリケーションまたはポイントオブセールアプリケーションに対するユーザ入力からなどの要求を受信し、その要求を支払いリーダ22に転送してもよい。ある実施の形態では、支払いサーバ40は、図2を参照して本明細書で説明された通り、支払い端末20にその要求を送信してもよい。
ステップ513で、支払いリーダ22は、支払いリーダ22のコンポーネントに、そのコンポーネントのメモリに保持されるファームウエアについての情報を要求してもよく、そのような情報は、ファームウエアのバージョンやファームウエアの名称やハッシュ値やCRCやコードのセクションやファームウエアを特定する任意の他の適切な方法などの、ファームウエアの情報を特定するために用いられてもよい情報を含んでもよい。支払いリーダ22は次いでステップ513で、ステップ512で受信された要求に応じて、ファームウエアマニフェストを生成してもよい。ある実施の形態では、ステップ513で生成されるファームウエアマニフェストは、無線インタフェース108(例えば、無線ファームウエア)、リーダチップ110(例えば、オペレーティングファームウエア)、トランザクションチップ114の信号調整インストラクション170(例えば、信号調整ファームウエア)、トランザクションチップ114のデータ認証インストラクション168(例えば、データ認証ファームウエア)、トランザクションチップ114の汎用メモリ126のファームウエア(例えば、トランザクションファームウエア)、およびトランザクションチップ114の暗号化メモリのファームウエア(例えば、暗号化ファームウエア)、などの、支払いリーダ22のコンポーネントのいずれかのメモリに保持されるファームウエアについての情報を含んでもよい。図3を参照して本明細書で説明されるように、支払いリーダ22は支払いサーバ40から受信した要求に応じて伝送情報を処理してもよい。ステップ514で、支払いリーダは、無線インタフェース108または有線インタフェース110を介してマーチャントデバイス29にファームウエアマニフェストを送信してもよいし、任意の他の適切な態様でファームウエアマニフェストを送信してもよい。他の実施の形態では、支払いリーダ22は、支払いサーバ40からの要求を必要とすること無く、ファームウエアマニフェストを生成し、マーチャントデバイス29にそれを送信してもよい。マーチャントデバイス29は、次いで、ステップ515で、例えばネットワーク30を用いて支払いサーバにファームウエアマニフェストを送信してもよい。
ステップ516で、支払いサーバ40は、ファームウエアマニフェストに基づいて、支払いリーダ22のファームウエアが更新を必要としているか否かを判定してもよい。ある実施の形態では、ステップ516の判定は、支払いリーダ22からのファームウエアマニフェスト内の情報と、アセットデータベース332に保持されているそのタイプの支払いリーダ22に適するファームウエアについての情報と、を比較することによって、行われてもよい。図5を参照して述べた通り、支払いサーバ40は、ファームウエア更新インストラクション324を用いることにより、ファームウエアマニフェスト内の情報に基づいて支払いリーダ22のファームウエアのバージョンを特定してもよい。支払いサーバ40は、ファームウエアマニフェストによって示されるファームウエアのバージョンを記憶し、その特定の支払いリーダタイプのファームウエアが更新を必要とするかを示す情報にアクセスするかそうでなければその情報を探してもよい。ある実施の形態では、支払いサーバ40は、支払いリーダ22に保持されるファームウエアが更新を必要とする(例えば、アセットデータベース332に保持されるその支払いリーダ22の最新バージョンよりも古いファームウエアバージョンである)ことをファームウエアマニフェストが示す場合に、ファームウエア更新が必要であると決定してもよい。ある実施の形態では、支払いサーバ40は、ファームウエアマニフェストに基づいて、ファームウエア更新が不要であると判定された場合、なにもしなくてもよい。ある実施の形態では、支払いサーバ40は、ファームウエアマニフェストに基づいて支払いリーダ22のファームウエアを更新する必要があると判定し、ステップ517で複数のファームウエア更新ブロック(例えば、所定サイズまたは可変サイズのブロックに分割され、アセットデータベース332に格納されたファームウエア更新)にアクセスしてもよい。ある実施の形態では、ステップ517でアクセスされるファームウエア更新ブロックは、図5を参照して説明された通り、支払い端末22についての最新のファームウエアであってもよい。
ステップ518で、支払いサーバ40は、ステップ517でアクセスされ支払いリーダ22に送信されるべきファームウエアを複数のファームウエア更新ブロックへと分割し、圧縮し、および暗号化してもよい。圧縮は、図5を参照して説明したような、任意の適切なデータ圧縮方法であってもよい。ある実施の形態では、ステップ518で行われる圧縮は、複数のファームウエア更新ブロックを、ファームウエア更新の全体を表す同数の圧縮ファームウエア更新ブロックへの圧縮であってもよい。すなわち、元の非圧縮データブロックと圧縮データブロックとの間に一対一対応があるということである。ステップ519で、支払いサーバ40は、本明細書で説明されたように、複数の圧縮ファームウエア更新ブロックに関連付けられたオフセットテーブルを生成してもよい。特に、ステップ619で生成されるオフセットテーブルは、本明細書で説明されるように、元の(非圧縮)ファームウエア更新ブロック内のデータの位置(すなわち、ブロックがアセットデータベース332に格納されたときのもの)と、圧縮ファームウエア更新ブロック内のデータの位置と、の比較に基づいて生成されてもよい。図5を参照して説明したように、オフセットテーブルは、各非圧縮ブロックの開始および終了のオフセットと、その対応する圧縮ブロックのオフセットと、を関連付けてもよく、ある実施の形態では、データブロック内の様々な位置を互いに関連付けてもよく、この場合、支払いリーダ22におけるファームウエア更新中に、対応するデータブロックをより高い精度で(例えば、マーチャントデバイス29が)特定することができる。
ステップ520で、支払いサーバ40は、例えば通信インタフェース310を用いてネットワーク30を介して、マーチャントデバイス29へ、オフセットテーブルと複数の圧縮ファームウエア更新ブロックとを送信してもよい。本明細書で説明されるように、ある実施の形態では、ファームウエア更新は、複数の圧縮され暗号化されたファームウエア更新ブロックおよび圧縮され暗号化されたオフセットテーブルとして提供されてもよい。マーチャントデバイス29が支払いサーバ40からオフセットテーブルと複数の圧縮ファームウエア更新ブロックとを受信すると、それはステップ521でマーチャントデバイス29のメモリにそれらを格納してもよい。ある実施の形態では、圧縮ファームウエア更新ブロックおよびオフセットテーブルは、支払いサーバ40から受信された後、マーチャントデバイス29において保持されてもよく、この場合、更新処理およびオフセットテーブルルックアップはマーチャントデバイス29において行われてもよい。
マーチャントデバイス29は、ステップ522で支払いリーダ22に複数の圧縮ファームウエア更新ブロックのうちの第1部分を送信することによって、支払いリーダ22への複数の圧縮ファームウエア更新ブロックの送信を開始してもよい。ステップ523で、支払いリーダ22は第1部分を受信し、解凍してしまっていてもよい。図3を参照して本明細書で説明されるように、復号および解凍は任意の適切な暗号化方法および圧縮方法に基づく任意の適切な態様で行われてもよいが、ある実施の形態では、暗号化は公開鍵暗号化方法(例えば、トリプルDESやRSA)や対称鍵暗号化方法(例えば、Blowfish、Twofish、またはアドバンスドエンクリプションスタンダード(AES))を含んでもよく、一方で、圧縮アルゴリズムは不可逆圧縮(例えば、JPEGやMPEGアルゴリズム)や可逆圧縮(例えば、PNGやGIFアルゴリズム)を含んでもよい。ある実施の形態では、支払いリーダ22は、支払いリーダ22のメモリ(例えば、フラッシュメモリ)に解凍された第1部分を格納し、ステップ524で、支払いリーダ22のメモリの検査に基づいて、部分的ファームウエアオフセットを決定してもよい。ある実施の形態では、ステップ524の判定は、ファームウエア更新のうちのどれくらいが受信されたかを判定することを含んでもよい。この判定は受信に成功したファームウエアの量を決定しうる任意の適切な態様でなされてもよく、例えば、受信に成功した最後または最新のファームウエアインストラクションを特定し、そのインストラクションに関連付けられているオフセットを特定することによってなされてもよい。ファームウエアがメモリに格納される前に解凍されるある実施の形態では、このオフセットは非圧縮ファームウエアオフセットに対応してもよく、受信され解凍されたファームウエア更新を保持するメモリは、計算された巡回冗長検査(CRC)値を含む位置を含んでもよい。非圧縮ファームウエアオフセットは、CRC値が正しいメモリ部分に基づいて特定されてもよい。図3を参照して説明したように、非圧縮ファームウエアオフセットを決定するために良好なCRC値に関連付けられている最新のファームウエアインストラクションが選択されてもよい。ある実施の形態では、この最新のインストラクションの前のファームウエアインストラクションの総数がその値として用いられてもよく、これは部分的ファームウエアオフセットとして機能してもよい。部分的ファームウエアオフセットは、支払いリーダ22に送信すべき次のファームウエアブロックを決定するために用いられてもよい。
ステップ525で、支払いリーダ22は、マーチャントデバイス29が、支払いリーダ22に送信すべき複数の圧縮ファームウエア更新ブロックのうちの第2部分を決定することを可能とするために、マーチャントデバイス29などに、部分的ファームウエアオフセットを送信してもよい。このオフセットテーブルに基づいて、マーチャントデバイス29は圧縮データまたは非圧縮データのいずれかについてのオフセット値を受信し、その情報を用いることで他方のデータタイプ(それぞれ、非圧縮または圧縮)の関連オフセットを見出してもよい。ステップ526で、マーチャントデバイス29は、圧縮ファームウエア更新ブロックに関連付けられているオフセットテーブルと、支払いリーダ22からの既知の非圧縮ファームウエアオフセットと、に基づいて、複数の圧縮ファームウエア更新ブロックの第2部分を決定してもよい。ある実施の形態では、マーチャントデバイス29は、ステップ526の判定に到達し、支払いリーダ22に送信すべき圧縮ファームウエア更新ブロックの第2部分を特定してもよい。ある実施の形態では、支払いリーダ22は、マーチャントデバイス29からの複数の圧縮ファームウエア更新ブロックの第2部分の最初のブロックに含まれるデータを無視してもよく、該最初のブロックは支払いリーダ22が既に受信し、メモリ122などのメモリに保持しているものである。部分的ファームウエアオフセット(例えば、部分的ファームウエアオフセットに対応する第1データブロックの非圧縮メモリオフセット)を用いることで、マーチャントデバイス29によって送信される複数の圧縮ファームウエア更新ブロックにおいて支払いリーダ22が無視すべきデータを特定してもよい。この態様では、支払いリーダ22は、ファームウエア更新を最初からもう一度行う代わりに、ファームウエア更新が適切に受信された直近のポイントからファームウエアの更新を続けることができる。ステップ527で、マーチャントデバイス29は、図4を参照して本明細書で説明された通り、支払いリーダ22に、複数のファームウエア更新ブロックの第2部分を送信してもよい。
支払いリーダ22はステップ527で送信された第2部分を受信してもよい。ある実施の形態では、支払いリーダ22は、マーチャントデバイス29からの複数の圧縮ファームウエア更新ブロックの第2部分の最初のブロックに含まれるデータを無視してもよく、該最初のブロックは支払いリーダ22が既に受信し、メモリ122などのメモリに保持しているものである。部分的ファームウエアオフセット(例えば、部分的ファームウエアオフセットに対応する第1データブロックの非圧縮メモリオフセット)を用いることで、マーチャントデバイス29によって送信される複数の圧縮ファームウエア更新ブロックにおいて支払いリーダ22が無視すべきデータを特定してもよい。この態様では、支払いリーダ22は、ファームウエア更新を最初からもう一度行う代わりに、ファームウエア更新が適切に受信された直近のポイントからファームウエアの更新を続けることができる。ステップ528で、支払いリーダ22は、図3を参照して本明細書で説明されたように、複数の圧縮ファームウエア更新ブロックの第2部分を解凍し復号してもよい。ある実施の形態では、支払いリーダ22は、支払いリーダ22のメモリ(例えば、RAM)に解凍された第2部分を格納してもよく、図3を参照して説明されたように支払いリーダ22の各種コンポーネントのメモリの検査を行い、ステップ529へと続いてもよい。
ステップ529で、支払いリーダ22は、少なくとも解凍された第1部分および第2部分に基づいて、ファームウエア更新の全体が受信されたか判定してもよい。ある実施の形態では、支払いリーダ22は、そのメモリの検査に基づいて、ファームウエア更新の全体が受信されたかを判定してもよい。ある実施の形態では、ステップ529の判定は、支払いリーダ22のメモリに保持される(例えば、複数の圧縮ファームウエア更新ブロックの解凍された第1部分および第2部分の結果として)ファームウエアデータの量と、支払いサーバ40から送信されたファームウエア更新の全体に関連付けられたデータの量と、を比較することで、支払いリーダ22によって行われてもよい。ある実施の形態では、支払いリーダ22は、この比較に基づいて、ファームウエア更新の全体が受信されたと判定してもよい。
ステップ530で、支払いリーダ22は、完全に受信されたファームウエア更新に基づいて支払いリーダのファームウエアを更新してもよい。ある実施の形態では、支払いリーダ22は、ステップ529でファームウエア更新の全体が受信されたと判定されるまで、複数のファームウエア更新ブロックのうちの第1部分および第2部分をメモリに保持してもよい。処理ユニット120は、支払いリーダ22の他のコンポーネント(例えば、無線通信インタフェース108やトランザクションチップ114)のプロセッサと通信してもよく、これは、関連ファームウエアおよびメモリに現在保持されているファームウエアの更新要求を含む。ある実施の形態では、支払いリーダ22は、次いで、受信されたファームウエア更新に基づいて、適切なコンポーネントのファームウエアを更新してもよい。その後、データフロー410は終わってもよい。
図7は、本開示のある実施の形態に係る、無線通信デバイスに提供するファームウエアを決定する例示的方法を説明する非限定的フロー図を示す。任意の適切なデバイスが無線通信デバイスに提供すべきファームウエアを決定してもよいと理解されるが、例示的な実施の形態では、その決定は、支払いサーバ40の支払いサービスシステム50で行われてもよいし、無線通信デバイスは支払いリーダ22であってもよいし、ファームウエア更新はネットワーク30を介しマーチャントデバイス29を介して支払いリーダ22に提供されてもよい。
ステップ702で、支払いサービスシステム50は、ファームウエア更新インストラクション324を実行する処理ユニット302に基づいて、支払いリーダ22のひとつ以上のコンポーネントに保持されるファームウエアバージョンをリストしたファームウエアマニフェストを受信してもよい。ファームウエアマニフェストは任意の適切な情報を含んでもよいが、ある実施の形態では、ファームウエアマニフェストは、支払いリーダで動作しうる各ファームウエアアセット(例えば、本明細書で説明される六つのファームウエアアセット)と、それらのアセットのそれぞれに関連付けられたバージョンと、を特定してもよい。ファームウエアマニフェストが受信されると、処理はステップ704へと続いてもよい。
ステップ704で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行しバンドルに関する情報(例えば、アセットデータベース332からの)にアクセスすることに基づいて、受信したファームウエアマニフェストのファームウエアバージョンが既知のバンドルとマッチするか否かを判定してもよい。本明細書で説明されるように、バンドルは、支払いリーダに利用可能な、または、支払いリーダに以前に利用可能とされてしまっている、ファームウエアバージョンの階層的に順序付けられたグループのリストを表してもよい。ファームウエアマニフェストのバージョンがバンドルとマッチすると、処理はステップ708へと続いてもよい。ファームウエアマニフェストのバージョンがバンドルとマッチしないと、処理はステップ706へと続いてもよい。
ステップ706で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行しバンドルに関する情報(例えば、アセットデータベース332からの)にアクセスすることに基づいて、受信したファームウエアのファームウエアバージョンが許容可能遷移状態に対応するか否かを判定してもよい。本明細書で説明されるように、各バンドルはファームウエアアセットが更新されてもよい順序を表すので、それらのバージョンのうちのいくつかが正しい順序で更新された許容可能なバンドル間遷移状態(例えば、新たなバンドルへの更新中)が存在しうる。そのような遷移は、支払い処理の継続にとって許容可能であってもよい。一方、ファームウエアマニフェストのファームウエアバージョンが許容可能な遷移状態にない(例えば、ファームウエアバージョンはバンドルの間のものであるが、正しい順序で更新されていない)場合、これはテストされていない状態である蓋然性が高く、支払いトランザクションは処理されるべきでない。ファームウエアマニフェストのバージョンが許容可能な遷移状態にあると、処理はステップ708へと続いてもよい。ファームウエア更新のバージョンが許容可能な遷移状態にないと、処理はステップ710へと続いてもよい。
ステップ708で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行しバンドルに関する情報(例えば、アセットデータベース332からの)にアクセスすることに基づいて、後続のブロッキングバンドル(例えば、ファームウエアバージョンのブロッキングバンドルとしてマークされている後に利用可能なファームウエアバージョンを含むバンドル)が存在するか否かを決定してもよい。本明細書で説明されるように、ブロッキングバンドルは、支払いリーダ22が支払いトランザクションを続ける前になされなければならない重要な更新を表してもよい。ブロッキングバンドルである後続のバンドルがあると、処理はステップ712へと続いてもよい。ブロッキングバンドルである後続のバンドルがないと、処理はステップ718へと続いてもよい。
ステップ710で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行することに基づいて、支払いリーダに関連付けられたファームウエアを非準拠としてマークしてもよい。本明細書で説明されるように、非準拠ファームウエアバージョンは、ファームウエアマニフェストのファームウエアバージョンのうち、バンドルにマッチすることも、許容可能な遷移状態にマッチすることも、ないファームウエアバージョンであってもよい。次いで、処理はステップ712に続いてもよい。
ステップ712で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行することに基づいて、支払いサービスシステム50におけるファームウエアマニフェストを送信した支払いリーダ22からの支払い処理を停止してもよい。マニフェストのファームウエアバージョンが非準拠である(ステップ706およびステップ710)か、または、後続のブロッキングバンドルが特定された(ステップ708)ことに基づいて、処理はステップ712に到達しうる。処理がステップ712に到達すると、その特定の支払いリーダ22によって開始される支払いトランザクションについての支払い処理インストラクションは実行されなくてもよい。次いで、処理はステップ714に続いてもよい。
ステップ714で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行することに基づいて、支払いリーダ22および/または支払いリーダ22に関連付けられたマーチャントデバイス29に並列処理インジケータを送信することで、支払いリーダ22がファームウエアの更新と並列してトランザクションを処理してはならないことを示してもよい。そのようなインジケータに基づいて、支払いリーダ22はトランザクションの処理を停止してもよく、ある実施の形態では、ファームウエア更新の処理を速めるために、他の処理の制限を試行し、無線接続を維持してもよい。同様にして、マーチャントデバイス29は、支払い処理を続ける前にファームウエア更新が必要であることを示し、かつ、ファームウエア更新の進行などの他の情報を提供するインジケーションまたは警告をマーチャントまたはユーザに提供してもよい。次いで、処理はステップ716に続いてもよい。
ステップ716で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行することに基づいて、支払いリーダ22を新たなバンドルへと更新してもよい。他のバンドルを選択することも可能ではあるが、ある実施の形態ではファームウエアは最新のバンドルまたは最新のブロッキングバンドルへと更新されてもよい。この態様では、いずれにせよ支払いリーダの非常に多くのファームウエアアセットを更新する必要があるので、最新のバージョンへの更新が望ましい。更新でどのファームウエアアセットが提供されるにせよ、それらは本明細書で説明されるように更新のために支払いリーダ22に(例えば、マーチャントデバイス29を介して)提供されてもよい。
支払いトランザクションの処理が続く場合(例えば、支払いリーダのファームウエアが非準拠でないか、またはブロッキングバンドルがない場合)、処理は(例えば、ステップ708から)ステップ718へと続き、この場合、処理ユニット302がファームウエア更新インストラクション324を実行することに基づいて、支払いトランザクションは支払いサービスシステム50によって処理され続ける。この態様では、支払いサービスシステム50は、支払いリーダ22にファームウエア更新を提供し続けているにもかかわらず、支払いリーダ22からのトランザクションを処理し続けてもよい。次いで、処理はステップ720に続いてもよい。
ステップ720で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行することに基づいて、支払いリーダ22および/または支払いリーダ22に関連付けられたマーチャントデバイス29に並列処理インジケータを送信することで、支払いリーダ22がファームウエアの更新と並列してトランザクションの処理を継続してもよいことを示してもよい。そのようなインジケータに基づいて、支払いリーダ22およびマーチャントデバイス29は、本明細書で説明されるように、バックグラウンドでファームウエア更新を生じさせつつ、トランザクションの処理を続けてもよい。次いで、処理はステップ716に続いてもよい。
ステップ722で、支払いサービスシステム50は、処理ユニット302がファームウエア更新インストラクション324を実行することに基づいて、支払いリーダ22を新たなバンドルへと更新してもよい。他のバンドルを選択することも可能ではあるが、ある実施の形態ではファームウエアは次に利用可能なバンドルへと更新されてもよい。この態様では、任意の一回の更新で限定された数のファームウエアアセットのみの更新が求められ、その更新は支払い処理の継続中にバックグラウンドで生じてもよい。例えば、本明細書で説明されるように、更新対象の特定のアセットがマーチャントデバイス29に提供されてもよい。ある実施の形態では、それらの更新は一度にひとつずつ支払いリーダ22に送信されてもよい。アセットの完全な更新が受信されると、支払いリーダは適切な時刻に(例えば、支払いリーダ22のリブート時や活動の無い期間の後)特定のアセットを更新してもよい。この処理はアセットの全てが更新されるまで繰り返されてもよい。支払いリーダが新たなバンドルへと更新されてしまうと、処理は終わってもよい。
図8は、本開示のある実施の形態に係る、無線通信デバイスにおいてファームウエアを更新する例示的ステップを説明する非限定的フロー図を示す。任意の適切な無線通信デバイスが更新されてもよいと理解されるが、例示的な実施の形態では、無線通信デバイスは支払いリーダ22であってもよい。
ステップ802で、支払いリーダ22は、処理ユニット120がファームウエア更新インストラクション134を実行することに基づいて、支払いリーダ22のひとつ以上のコンポーネントに保持されるファームウエアバージョンをリストしたファームウエアマニフェストを送信してもよい。ファームウエアマニフェストは任意の適切な情報を含んでもよいが、ある実施の形態では、ファームウエアマニフェストは、支払いリーダで動作しうる各ファームウエアアセット(例えば、本明細書で説明される六つのファームウエアアセット)と、それらのアセットのそれぞれに関連付けられたバージョンと、を特定してもよい。ファームウエアマニフェストが送信されると、処理はステップ804へと続いてもよい。
ステップ804で、支払いリーダ22は、処理ユニット120がファームウエア更新インストラクション134を実行することに基づいて、支払いリーダ22に保持されるファームウエアアセットのための更新対象のファームウエアを受信してもよい。本明細書で説明されるように、複数のファームウエアアセットは、支払いリーダ22の異なるコンポーネントまたは機能に関連付けられてもよく、この場合、各アセットは個々に受信され、更新されてもよい。ファームウエアアセットの完全なファームウエア更新が受信されると、処理はステップ806へと続いてもよい。
ステップ806で、支払いリーダ22は、処理ユニット120がファームウエア更新インストラクション134を実行することに基づいて、並列処理インジケータを受信してもよく、それは支払いリーダ22がファームウエアの更新と並列してトランザクションの処理を継続してもよいことを示してもよい。並列処理インジケータが受信されると、処理はステップ808へと続いてもよい。
ステップ808で、支払いリーダ22は、処理ユニット120がファームウエア更新インストラクション134を実行することに基づいて、受信した並列処理インジケータに基づいて、支払いトランザクションの処理を続けるか否かを判定してもよい。トランザクションの処理を継続してもよい場合、処理はステップ810へと続いてもよい。トランザクションの処理を継続すべきでない場合、処理はステップ812へと続いてもよい。
ステップ810で、支払いリーダ22は、処理ユニット120がトランザクション処理インストラクション134およびファームウエア更新インストラクション134を実行することに基づいて、本明細書で説明されるように、(例えば、マーチャントデバイス29を介して支払いサービスシステム50と)トランザクションを処理してもよい。本明細書で説明されるように、ファームウエア更新はバックグラウンドで生じてもよい。次いで、処理はステップ814に続いてもよい。
ステップ812で、支払いリーダ22は、処理ユニット120がファームウエア更新インストラクション134を実行することに基づいて、支払いトランザクションを拒否してもよい。支払いリーダ22はトランザクションの処理を停止してもよく、ある実施の形態では、ファームウエア更新の処理を速めるために、他の処理の制限を試行し、無線接続を維持してもよい。同様にして、マーチャントデバイス29は、支払い処理を続ける前にファームウエア更新が必要であることを示し、かつ、ファームウエア更新の進行などの他の情報を提供するインジケーションまたは警告をマーチャントまたはユーザに提供してもよい。次いで、処理はステップ814に続いてもよい。
ステップ814で、支払いリーダ22は、処理ユニット120がファームウエア更新インストラクション134を実行することに基づいて、受信したファームウエアを更新してもよい。トランザクションが処理される場合、本明細書で説明されるように、そのような更新はバックグラウンドで生じてもよい。トランザクションが処理されない場合、トランザクションが生じる前に更新を完了する必要がありうる。例えば、本明細書で説明されるように、更新対象の特定のアセットがマーチャントデバイス29に提供されてもよい。ある実施の形態では、それらの更新は一度にひとつずつ支払いリーダ22に送信されてもよい。アセットの完全な更新が受信されると、支払いリーダは適切な時刻に(例えば、支払いリーダ22のリブート時や支払い処理が継続される場合の活動の無い期間の後やトランザクションがブロックされるとすぐに)特定のアセットを更新してもよい。支払いリーダが新たなバンドルへと更新されてしまうと、処理は終わってもよい。
ある実施の形態では、本開示は、支払いシステムの支払いリーダにファームウエア更新を提供する方法を提供してもよい。方法は、ポイントオブセールアプリケーションを実行するマーチャントデバイスに、支払いリーダからのファームウエアマニフェストを要求することを含んでもよい。方法は、支払いリーダにおいて、ファームウエアマニフェストにアクセスすることを含んでもよい。方法は、マーチャントデバイスを介して支払いリーダから、ファームウエアマニフェストを支払いサーバに送信することを含んでもよい。方法は、支払いサーバにおいて、ファームウエアマニフェストに基づいてファームウエア更新が必要とされているか否かを判定することを含んでもよい。方法は、支払いサーバにおいて、複数のファームウエア更新ブロックにアクセスすることであって、複数のファームウエア更新ブロックが合わせてファームウエア更新を構成する、アクセスすることを含んでもよい。方法は、支払いサーバにおいて、複数のファームウエア更新ブロックのそれぞれを圧縮することで、複数の圧縮ファームウエア更新ブロックを生成することを含んでもよい。方法は、支払いサーバにおいて、オフセットテーブルを生成することであって、オフセットテーブルが、圧縮されたファームウエア更新に関連付けられている複数の圧縮オフセットのそれぞれを、ファームウエア更新の解凍バージョンに関連付けられている対応する解凍されたオフセットに、関連付ける、生成することを含んでもよい。方法は、支払いサーバからマーチャントデバイスへ、オフセットテーブルおよび複数の圧縮ファームウエア更新ブロックを送信することを含んでもよい。方法は、マーチャントデバイスにおいて、オフセットテーブルおよび複数の圧縮ファームウエア更新ブロックを格納することを含んでもよい。方法は、マーチャントデバイスから、複数の圧縮ファームウエア更新ブロックの第1部分を支払いリーダに送信することを含んでもよい。方法は、支払いリーダにおいて、複数の圧縮ファームウエア更新ブロックの第1部分を解凍することを含んでもよい。方法は、支払いリーダにおいて、解凍された第1部分に関連付けられた部分的ファームウエアオフセットを決定することを含んでもよい。方法は、支払いリーダからマーチャントデバイスへ、部分的ファームウエアオフセットを送信することを含んでもよい。方法は、マーチャントデバイスにおいて、部分的ファームウエアオフセットとオフセットテーブルに保持されるオフセットとに基づいて、支払いリーダに送信すべき複数の圧縮ファームウエア更新ブロックの第2部分を決定することを含んでもよい。方法は、マーチャントデバイスから、複数の圧縮ファームウエア更新ブロックの第2部分を支払いリーダに送信することを含んでもよい。方法は、支払いリーダにおいて、複数の圧縮ファームウエア更新ブロックの第2部分を解凍することを含んでもよい。方法は、支払いリーダにおいて、少なくとも解凍された第1部分および第2部分に基づいて、ファームウエア更新の全体が受信されたか判定することを含んでもよい。方法は、受信されたファームウエア更新に基づいて支払いリーダのファームウエアを更新することを含んでもよい。
上記の方法のある実施の形態では、支払いリーダにおいて、ファームウエア更新の全体が受信されたか判定することは、支払いリーダにおいて、ファームウエア更新の更新サイズを受信することと、支払いリーダにおいて、受信されたファームウエア更新のサイズと更新サイズとを比較することと、比較に基づいて、ファームウエア更新が受信されたか否か判定することと、を含む。
ある実施の形態では、上記の方法はさらに、支払いリーダにおいて、第1部分と第2部分との間の重複を特定することであって、重複が第1部分および第2部分の共通ファームウエア更新ブロックとファームウエア更新の第2部分を書き込むための開始点とに基づく、特定することと、重複および開始点に基づいて、ファームウエア更新の第2部分を書き込むことと、を含んでもよい。
上記の方法のある実施の形態では、ファームウエア更新の第2部分を書き込むための開始点が、ファームウエア更新を書き込むためのメモリ内の巡回冗長検査の位置に基づく。
ある実施の形態では、本開示は、支払いリーダに支払いサーバからファームウエア更新を提供する方法を提供してもよい。方法は、ポイントオブセールアプリケーションを実行するマーチャントデバイスに、支払いリーダからのファームウエアマニフェストを要求することを含んでもよい。方法は、支払いリーダにおいて、ファームウエアマニフェストにアクセスすることであって、ファームウエアマニフェストが複数のファームウエアアセットのそれぞれについてのファームウエアバージョンを含み、各ファームウエアアセットが支払いリーダのコンポーネントを動作させるためのインストラクションを含む、アクセスすることを含んでもよい。方法は、マーチャントデバイスを介して支払いリーダから、ファームウエアマニフェストを支払いサーバに送信することを含んでもよい。方法は、支払いサーバにおいて、複数のファームウエアバンドルにアクセスすることであって、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む、アクセスすることを含んでもよい。方法は、支払いサーバにおいて、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することを含んでもよい。判定することは、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することと、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を含んでもよい。方法は、支払いサーバにおいて、ファームウエアアセットのひとつに対してファームウエア更新を特定することを含んでもよい。ファームウエア更新を特定することは、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを順番に比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしない第1ファームウエアバージョンに基づいてファームウエア更新を特定することと、を含んでもよい。方法は、支払いサーバにおいて、並列処理インジケータを生成することを含んでもよい。方法は、支払いサーバにおいて、ファームウエア更新および並列処理インジケータを送信することを含んでもよい。方法は、マーチャントデバイスを介して支払いリーダにおいて、ファームウエア更新および並列処理インジケータを受信することを含んでもよい。方法は、支払いリーダにおいて、支払いを処理するための要求を受信することを含んでもよい。方法は、ファームウエア更新中に支払いが処理されてもよいことを並列処理インジケータが示す場合、支払いリーダにおいて支払いを処理することを含んでもよい。方法は、支払いリーダにおいて、ファームウエア更新に関連付けられたファームウエアアセットを更新することを含んでもよい。
本明細書で説明される方法の実施の形態では、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することは、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、後続のブロッキングファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、次のファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を含んでもよい。
本明細書で説明される方法の実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
本開示の実施の形態では、サーバからファームウエア更新を提供する方法は、サーバにおいて、デバイスのファームウエアマニフェストを受信することであって、ファームウエアマニフェストがそのデバイスの複数のファームウエアアセットのそれぞれのファームウエアバージョンを含む、受信することを含んでもよい。方法は、サーバにおいて、複数のファームウエアバンドルにアクセスすることであって、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む、アクセスすることを含んでもよい。方法は、サーバにおいて、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することを含んでもよい。方法は、サーバにおいて、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することを含んでもよい。方法は、サーバにおいて、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することを含んでもよい。方法は、サーバにおいて、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することを含んでもよい。方法は、サーバにおいて、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか否かを判定することを含んでもよい。方法は、サーバにおいて、ファームウエアマニフェストまたは更新ファームウエアバンドルに基づいて並列処理インジケータを生成することであって、並列処理インジケータがファームウエア更新中にデバイスにおいて並列処理が継続すべきか否かを示す、生成することを含んでもよい。方法は、サーバから、ファームウエア更新および並列処理インジケータを送信することを含む。
本明細書で説明される方法の実施の形態では、各ファームウエアアセットはデバイスのコンポーネントを動作させるためのインストラクションを含んでもよい。
本明細書で説明される方法の実施の形態では、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することは、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を含んでもよい。
本明細書で説明される方法の実施の形態では、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することは、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしないファームウエアバージョンに基づいてファームウエア更新を特定することと、を含んでもよい。
本明細書で説明される方法の実施の形態では、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することは、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、第1ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、第2ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を含んでもよい。
本明細書で説明される方法の実施の形態では、第1ファームウエアバンドルは最新のブロッキングファームウエアバンドルを含んでもよい。
本明細書で説明される方法の実施の形態では、第1ファームウエアバンドルは最新のブロッキングファームウエアバンドルの後続のバンドルを含んでもよい。
本明細書で説明される方法の実施の形態では、第2ファームウエアバンドルは複数のファームウエアバンドルの次のファームウエアバンドルを含んでもよい。
本明細書で説明される方法の実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
本開示の実施の形態では、サーバは、デバイスからファームウエアマニフェストを受信し、デバイスに並列処理インジケータを送信し、デバイスにファームウエア更新を送信するよう構成された通信インタフェースを含んでもよい。サーバは、ファームウエア更新インストラクションと複数のファームウエアバンドルに関する情報とを含むひとつ以上のメモリを備えてもよく、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む。サーバは、ファームウエア更新インストラクションを実行することによって、ファームウエアマニフェストを受信し、複数のファームウエアバンドルに関する情報にアクセスするよう構成された処理ユニットを含んでもよい。処理ユニットは、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することと、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することと、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することと、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することと、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか否かを判定することと、ファームウエアマニフェストまたは更新ファームウエアバンドルに基づいて並列処理インジケータを生成することと、通信インタフェースにファームウエア更新および並列処理インジケータを提供することであって、並列処理インジケータがファームウエア更新中にデバイスにおいて並列処理が継続すべきか否かを示す、提供することと、を行うよう構成される。
本明細書で説明されるサーバの実施の形態では、各ファームウエアアセットはデバイスのコンポーネントを動作させるためのインストラクションを含んでもよい。
本明細書で説明されるサーバの実施の形態では、処理ユニットはさらに、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を行うよう構成されてもよい。
本明細書で説明されるサーバの実施の形態では、処理ユニットはさらに、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしないファームウエアバージョンに基づいてファームウエア更新を特定することと、特定されたファームウエアバージョンに基づいてファームウエア更新を生成することと、を行うよう構成されてもよい。
本明細書で説明されるサーバの実施の形態では、処理ユニットはさらに、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、第1ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、第2ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を行うよう構成されてもよい。
本明細書で説明されるサーバの実施の形態では、第1ファームウエアバンドルは最新のブロッキングファームウエアバンドルを含んでもよい。
本明細書で説明されるサーバの実施の形態では、第1ファームウエアバンドルは最新のブロッキングファームウエアバンドルの後続のバンドルを含んでもよい。
本明細書で説明されるサーバの実施の形態では、第2ファームウエアバンドルは複数のファームウエアバンドルの次のファームウエアバンドルを含んでもよい。
本明細書で説明されるサーバの実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
本開示のある実施の形態では、非一時的コンピュータ可読保持媒体はそれに保持されるインストラクションを備え、インストラクションはひとつ以上のプロセッサによって実行された場合、ひとつ以上のプロセッサに動作を行わせる。動作は、複数のファームウエアバンドルにアクセスすることであって、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む、アクセスすることを含む。動作は、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することを含む。動作は、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することを含む。動作は、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することを含む。動作は、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することを含む。動作は、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか否かを判定することを含む。動作は、ファームウエアマニフェストまたは更新ファームウエアバンドルに基づいて並列処理インジケータを生成することであって、並列処理インジケータがファームウエア更新中にデバイスにおいて並列処理が継続すべきか否かを示す、生成することを含む。動作は、ファームウエア更新および並列処理インジケータを提供することを含む。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、各ファームウエアアセットはデバイスのコンポーネントを動作させるためのインストラクションを含んでもよい。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することは、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を含んでもよい。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することは、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしないファームウエアバージョンに基づいてファームウエア更新を特定することと、を含んでもよい。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することは、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、第1ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、第2ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を含んでもよい。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、第1ファームウエアバンドルは最新のブロッキングファームウエアバンドルを含んでもよい。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、第1ファームウエアバンドルは最新のブロッキングファームウエアバンドルの後続のバンドルを含んでもよい。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、第2ファームウエアバンドルは複数のファームウエアバンドルの次のファームウエアバンドルを含んでもよい。
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
上記は本開示の原理の単なる説明に過ぎず、当業者であれば本開示の範囲から逸脱することなく種々の変更を行える。上述の実施の形態は、限定では無く説明の目的のために示されたものである。本開示はまた、本明細書で明示的に説明されたもの以外の多くの形態をとることができる。したがって、本開示は明示的に開示された方法、システムおよび装置に限定されず、むしろそれらの変形例や変更例であって以下の請求の範囲内のものを含むことが意図されていることを強調しておく。
さらなる例として、本明細書で示され説明された提供された構成、デバイスおよび方法をさらに最適化するために、装置またはプロセスパラメータ(例えば、寸法、設定、コンポーネント、プロセスステップの順番等)の変更を行うことができる。いずれにせよ、本明細書で説明される構成およびデバイス、ならびに関連方法は、多くのアプリケーションを有する。したがって、開示された主題は本明細書で説明されるいずれかの単一の実施の形態に限定されるべきではなく、むしろ添付の請求の範囲にしたがう範囲において解釈されるべきものである。