(57)【要約】  支払いリーダがファームウエア更新を必要とするかが判定されてもよい。ファームウエア更新は支払いリーダに、圧縮ファームウエア更新ブロックとして送信されてもよい。支払いリーダは、圧縮ファームウエア更新ブロックの集合の第１部分を受信してもよい。支払いリーダは、第１部分を解凍し、第１部分に関連付けられた部分的ファームウエアオフセットを決定してもよい。ファームウエア更新が不完全である場合、支払いリーダは第２デバイスに、その部分的ファームウエアオフセットを送信してもよい。ファームウエアオフセットのこの部分と圧縮ファームウエアオフセットと解凍されたファームウエアオフセットとを関連付けるオフセットテーブルとに基づいて、支払いリーダは、支払いリーダに送信すべき圧縮ファームウエア更新ブロックの第２部分を受信する。支払いリーダは、更新全体が受信されたと判定し、そのファームウエアを更新してもよい。【特許請求の範囲】
【請求項１】
無線通信デバイスのファームウエアを更新する方法であって、該方法は、
前記無線通信デバイスにおいて、ファームウエア更新の第１部分の圧縮バージョンを受信することであって、前記ファームウエア更新の前記第１部分が第１ファームウエア更新ブロックに関連付けられている、受信することと、
前記無線通信デバイスにおいて、前記ファームウエア更新の前記部分の前記圧縮バージョンを解凍することと、
前記無線通信デバイスにおいて、前記ファームウエア更新が不完全か判定することと、
前記無線通信デバイスにおいて、前記ファームウエア更新の前記第１部分に関連付けられている解凍されたオフセットを特定することと、
前記解凍されたオフセットを、前記無線通信デバイスから第２デバイスへ送信することと、
前記無線通信デバイスにおいて、前記ファームウエア更新の第２部分の圧縮バージョンを受信することであって、前記ファームウエア更新の前記第２部分の前記圧縮バージョンの最初が前記解凍されたオフセットに基づいており、前記ファームウエア更新の前記第２部分が第２ファームウエア更新ブロックに関連付けられている、受信することと、
前記無線通信デバイスにおいて、前記ファームウエア更新の前記第２部分の前記圧縮バージョンを解凍することと、
前記無線通信デバイスにおいて、少なくとも前記第１部分および前記第２部分に基づいて前記ファームウエア更新が受信されたか否か判定することと、
前記受信されたファームウエア更新に基づいて前記無線通信デバイスの前記ファームウエアを更新することと、を含む方法。
【請求項２】
前記無線通信デバイスと前記第２デバイスとの間の接続がブルートゥースローエナジー接続を含む請求項１に記載の方法。
【請求項３】
前記無線通信デバイスにおいて、前記ファームウエア更新が受信されたか否か判定することが、
前記無線通信デバイスにおいて、前記ファームウエア更新の更新サイズを受信することと、
前記無線通信デバイスにおいて、前記受信されたファームウエア更新の前記サイズを前記更新サイズと比較することと、
前記比較に基づいて、前記ファームウエア更新が受信されたか否か判定することと、を含む請求項１に記載の方法。
【請求項４】
前記無線通信デバイスにおいて、前記第１部分と前記第２部分との間の重複を特定することであって、前記重複が前記第１部分および前記第２部分の共通ファームウエア更新ブロックと前記ファームウエア更新の前記第２部分を書き込むための開始点とに基づく、特定することと、
前記重複および前記開始点に基づいて、前記ファームウエア更新の前記第２部分を書き込むことと、をさらに含む請求項３に記載の方法。
【請求項５】
前記ファームウエア更新の前記第２部分を書き込むための前記開始点が、前記ファームウエア更新を書き込むためのメモリ内の巡回冗長検査の位置に基づく請求項４に記載の方法。
【請求項６】
前記第１部分および前記第２部分のそれぞれが暗号化され、前記方法はさらに、前記第１部分および前記第２部分のそれぞれを復号することを含む請求項１に記載の方法。
【請求項７】
前記解凍されたオフセットがオフセットテーブル内の圧縮オフセットに関連付けられており、前記オフセットテーブルは、前記ファームウエア更新の圧縮バージョンに関連付けられている複数の圧縮オフセットのそれぞれを、前記ファームウエア更新の解凍バージョンに関連付けられている対応する解凍されたオフセットに、関連付ける請求項１に記載の方法。
【請求項８】
前記オフセットテーブルは前記無線通信デバイスに保持される請求項７に記載の方法。
【請求項９】
ファームウエア更新の第１部分の圧縮バージョンを受信することであって、前記ファームウエア更新の前記第１部分が第１ファームウエア更新ブロックに関連付けられている、受信することと、解凍されたオフセットを第２デバイスに送信することと、前記ファームウエア更新の第２部分の圧縮バージョンを受信することであって、前記ファームウエア更新の前記第２部分の前記圧縮バージョンの最初が前記解凍されたオフセットに基づいており、前記ファームウエア更新の前記第２部分が第２ファームウエア更新ブロックに関連付けられている、受信することと、を行うよう構成された無線通信インタフェースと、
前記ファームウエア更新の前記第１部分の前記圧縮バージョンを解凍することと、前記ファームウエア更新が不完全か判定することと、前記ファームウエア更新の前記第１部分に関連付けられている解凍されたオフセットを特定することと、前記ファームウエア更新の前記第２部分の前記圧縮バージョンを解凍することと、少なくとも前記第１部分および前記第２部分に基づいて前記ファームウエア更新が受信されたか否か判定することと、前記受信されたファームウエア更新に基づいて前記無線通信デバイスの前記ファームウエアを更新することと、を行うよう構成された処理ユニットと、
前記ファームウエア更新の前記解凍された第１部分と前記ファームウエア更新の前記解凍された第２部分とを保持するよう構成されたメモリと、を備える無線通信デバイス。
【請求項１０】
前記無線通信デバイスと前記第２デバイスとの間の接続がブルートゥースローエナジー接続を含む請求項９に記載の無線通信デバイス。
【請求項１１】
前記処理ユニットは、前記無線通信インタフェースを介して前記ファームウエア更新の更新サイズを受信することと、前記受信されたファームウエア更新のサイズと前記更新サイズとを比較することと、前記比較に基づいて、前記ファームウエア更新が受信されたか否か判定することと、を行うよう構成される請求項９に記載の無線通信デバイス。
【請求項１２】
前記処理ユニットは、前記無線通信デバイスにおいて、前記第１部分と前記第２部分との間の重複を特定することであって、前記重複が前記第１部分および前記第２部分の共通ファームウエア更新ブロックと前記ファームウエア更新の前記第２部分を書き込むための開始点とに基づく、特定することと、前記重複および前記開始点に基づいて、前記ファームウエア更新の前記第２部分を前記メモリに書き込むことと、を行うよう構成される請求項１１に記載の無線通信デバイス。
【請求項１３】
前記処理ユニットは、前記ファームウエア更新の前記第２部分を書き込むための前記開始点を、前記ファームウエア更新を書き込むためのメモリ内の巡回冗長検査の位置に基づかせる請求項１２に記載の無線通信デバイス。
【請求項１４】
前記処理ユニットは、前記第１部分および前記第２部分のそれぞれを復号するよう構成され、前記第１部分および前記第２部分のそれぞれは暗号化されている請求項９に記載の無線通信デバイス。
【請求項１５】
それに保持されるインストラクションを備える非一時的コンピュータ可読保持媒体であって、前記インストラクションはひとつ以上のプロセッサによって実行された場合、前記ひとつ以上のプロセッサに、
ファームウエア更新の第１部分の圧縮バージョンを受信することであって、前記ファームウエア更新の前記第１部分が第１ファームウエア更新ブロックに関連付けられている、受信することと、
前記ファームウエア更新の前記第１部分の前記圧縮バージョンを解凍することと、
前記ファームウエア更新が不完全か判定することと、
前記ファームウエア更新の前記第１部分に関連付けられている解凍されたオフセットを特定することと、
前記ファームウエア更新の第２部分の圧縮バージョンを受信することであって、前記ファームウエア更新の前記第２部分の圧縮バージョンの最初が前記解凍されたオフセットに基づいており、前記ファームウエア更新の前記第２部分が第２ファームウエア更新ブロックに関連付けられている、受信することと、
前記ファームウエア更新の前記第２部分の前記圧縮バージョンを解凍することと、
少なくとも前記第１部分および前記第２部分に基づいて前記ファームウエア更新が受信されたか否か判定することと、
前記受信されたファームウエア更新に基づいて前記無線通信デバイスの前記ファームウエアを更新することと、を含む動作を行わせる非一時的コンピュータ可読保持媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願へのクロスリファレンス
本願は、２０１６年３月３０日に出願された「圧縮ファームウエア更新」というタイトルの米国特許出願第15/086,024号の優先権の利益を享受する。その出願は、参照により本明細書に組み入れられる。本願は、２０１６年３月３０日に出願された「ブロッキングおよび非ブロッキングファームウエア更新」というタイトルの米国特許出願第15/086,025号の優先権の利益を享受する。その出願は、参照により本明細書に組み入れられる。
【背景技術】
【０００２】
各種方法で電子的支払いを行うことができる。支払い端末は支払いトランザクションを処理してもよく、支払いデバイスと相互作用してもよい。そのようなデバイスは、例えば、支払い端末の磁気リーダでスワイプされる磁気ストライプを有する支払いカードや、支払い端末の対応するＥＭＶスロットに差し込まれるユーロペイ／マスターカード／ビザ（ＥＭＶ）チップを有する支払いデバイスや、支払い端末にタップしてセキュアな無線接続を介して支払い情報を送信するスマートフォンやＥＭＶカードなどの近距離無線通信（ＮＦＣ）可能デバイスなどである。支払い端末は支払いデバイスからトランザクションについての情報と共に支払い情報を受信してもよく、トランザクションの処理のためにこの情報を支払いシステムに伝達してもよい。
【０００３】
支払いトランザクションの処理をサポートするために、支払い端末は一般に種々の電子コンポーネントを用いて動作してもよい。支払い端末の多くのコンポーネントはインストラクションを含んでもよく、そのようなインストラクションは例えば、一般に支払い端末が支払いトランザクションを処理するための動作を実行することを可能とするインストラクションである。 インストラクションは、支払い端末を初期化するブートローダや、支払い端末やその種々のコンポーネントの動作を制御するひとつ以上のファームウエアモジュールを含んでもよい。
【０００４】
ときどき、例えばセキュリティを向上させたり追加機能を実装したりバグを直したりするために、支払い端末のファームウエアや支払い端末の特定のコンポーネントのファームウエアを更新する必要があることがある。メモリスティックなどの物理的メモリデバイスを介してファームウエア更新を運ぶよりも、ファームウエア更新を支払い端末へネットワークを介して配信するほうが望ましい。しかしながら、支払い端末は、固定位置にある店を営んでいるマーチャントや、ある場合にはタクシー運転手やフードトラックや修理屋や医療従事者などの移動するマーチャントなど、離れた場所にあることがある。したがって、そのような支払い端末は、比較的希にネットワークと通信するのみでありうる。
【図面の簡単な説明】
【０００５】
本開示の上述及び他の側面、性質および種々の利点は、添付図面と併用される以下の詳細な説明の考慮のもとにより明らかとなるであろう。
【０００６】
【図１】本開示のある実施の形態に係る、支払いシステムの説明的ブロック図を示す。
【０００７】
【図２】本開示のある実施の形態に係る、支払いデバイスおよび支払い端末の説明的ブロック図を示す。
【０００８】
【図３】本開示のある実施の形態に係る、支払いリーダの説明的ブロック図を示す。
【０００９】
【図４】本開示のある実施の形態に係る、マーチャントデバイスの説明的ブロック図を示す。
【００１０】
【図５】本開示のある実施の形態に係る、支払いサービスシステムの説明的ブロック図を示す。
【００１１】
【図６】本開示のある実施の形態に係る、支払いリーダの圧縮ファームウエアを更新する例示的方法を説明する非限定的フロー図を示す。
【００１２】
【図７】本開示のある実施の形態に係る、支払いリーダに提供するファームウエアを決定する例示的方法を説明する非限定的フロー図を示す。
【００１３】
【図８】本開示のある実施の形態に係る、無線通信デバイスにおいてファームウエアを更新する例示的方法を説明する非限定的フロー図を示す。
【発明を実施するための形態】
【００１４】
支払いシステムは支払いリーダと、マーチャントデバイスと、支払いサーバと、を含んでもよい。支払いリーダは、ＥＭＶチップカードや磁気ストライプカードやＮＦＣ支払いデバイスなどの支払いデバイスから支払い情報を受信する。マーチャントデバイスは、マーチャントのためのユーザインタフェースを提供し、かつ、支払いリーダおよび支払いサーバとの通信するポイントオブセールアプリケーションを有する。支払いサーバは、マーチャントデバイスから受信した他の情報（例えば、支払額、マーチャント、位置など）と支払い情報とに基づいてトランザクションを処理し、マーチャントデバイスに支払い結果（例えば、許否）を伝達する。
【００１５】
支払いリーダは、異なるタイプの支払いデバイスと相互作用する支払いインタフェースや、マーチャントデバイスと通信するための無線インタフェース（例えば、ブルートゥースローエナジーインタフェース）や、異なる機能（例えば、汎用処理や動作、支払い処理や動作、暗号化）を扱うための複数のプロセッサなどの種々のコンポーネントを有する。これらのコンポーネントのうちのいくつかは、メモリに保持されるインストラクションを実行するひとつ以上のプロセッサを含んでもよく、そのようなインストラクションのうちのいくつかは例えばファームウエアとしてメモリに半永久的に保持されてもよい。一般に、これらのインストラクションは支払いリーダのコンポーネントが、支払いリーダの種々のコンポーネントの動作を実行するかそうでなければ制御することを可能とする。
【００１６】
支払いリーダは、マーチャントデバイスなどの他のデバイスから、ひとつ以上のコンポーネントに保持されるファームウエアのバージョンについての情報の要求を、ときどき受信してもよい。支払いリーダはこの情報を集めてファームウエアマニフェストを生成してもよい。一例として、支払いリーダはファームウエアを実行する各コンポーネントに現在保持されるファームウエアのバージョンを決定してもよい。支払いリーダは、この情報を含むマニフェストを生成し、例えばブルートゥースローエナジーなどのセキュアな無線インタフェースを通じて、マーチャントデバイスにそれを送信してもよい。マーチャントデバイスは、ファームウエアマニフェストを受信し、インターネットなどのネットワークを介して支払いサーバにそれを送信してもよい。
【００１７】
支払いサーバは、ファームウエアマニフェストを現行のファームウエアバージョンの既知のリスト（例えば、ファームウエアリリースバンドル）と比較し、この比較に基づいて、支払いリーダのひとつ以上のコンポーネントについてファームウエアの更新が必要かを判定してもよい。支払いサーバは、必要なファームウエアの更新を表すデータにアクセスしてもよい。ファームウエアの更新は、支払いサーバのデータベースから、データのブロックとしてアクセスされてもよい。支払いサーバは、次いで、それぞれを圧縮し、ファームウエア更新ブロックを暗号化する。支払いサーバは、また、元々の非圧縮ファームウエア更新ブロックのそれぞれからのデータと、圧縮ファームウエア更新ブロックのメモリ位置と、を関連付けるオフセットテーブルを生成してもよい。
【００１８】
支払いサーバは、マーチャントデバイスに、圧縮ファームウエア更新ブロックとオフセットテーブルとを送信してもよい。マーチャントデバイスは、圧縮ファームウエア更新ブロックとオフセットテーブルとを受信し、それらをそのメモリに格納してもよい。マーチャントデバイスは、次いで、支払いリーダに、圧縮ファームウエア更新ブロックの第１部分を送信してもよく、支払いリーダは圧縮ファームウエア更新ブロックの第１部分を受信し、次いでそれらを解凍してもよい。支払いリーダは、メモリ（例えば、フラッシュメモリ）に、解凍されたファームウエア更新ブロックの第１部分を格納し、そのメモリの検査（例えば、巡回冗長検査（ＣＲＣ））を行うことで、解凍されたファームウエア更新のうちのどの程度のデータのメモリへの格納が成功したかを判定してもよい。支払いリーダは、格納されたデータのこの総量と、ファームウエア更新のデータの総量（例えば、マーチャントデバイスを介して支払いサーバから提供されてもよい）と、を比較してもよい。ファームウエア更新の全部を受信したというわけではない場合、支払いリーダは格納に成功したデータの量に基づく部分的ファームウエアオフセットを決定してもよい。支払いリーダは、次いで、マーチャントデバイスに部分的ファームウエアオフセットを送信することで、ファームウエア更新を完了するためのファームウエアの残りを要求してもよい。
【００１９】
マーチャントデバイスは、支払いリーダから、部分的ファームウエアオフセットを受信し、圧縮ファームウエア更新ブロックの第２部分を取得し、部分的ファームウエアオフセットとオフセットテーブルの値との比較に基づいて支払いリーダに送ってもよい。支払いリーダに送信されなければならない重複情報の量を最小化するよう圧縮ファームウエア更新ブロックの第２部分を選択してもよく、その結果、支払いリーダは部分的ファームウエアオフセットに関連付けられたメモリ位置からファームウエアの更新を続けてもよい。マーチャントデバイスは、支払いリーダに、圧縮ファームウエア更新ブロックの第２部分を送信してもよく、支払いリーダはそれらを解凍し、メモリに格納してもよい。ファームウエア更新の全体が受信され、解凍され、メモリに格納されると、支払いリーダはファームウエア更新を適切なコンポーネントに移送し、そのファームウエアを更新してもよい。
【００２０】
図１は、本開示のある実施の形態に係る、支払いシステム１の説明的ブロック図を示す。ある実施の形態では、支払いシステム１は、支払いデバイス１０と、支払い端末２０と、ネットワーク３０と、支払いサーバ４０と、を含む。例示的な実施の形態では、支払いサーバ４０は、支払いサービスシステム５０や銀行サーバ６０などの異なる主体により運用される複数のサーバを含んでもよい。支払いシステム１のこれらのコンポーネントは、マーチャントと顧客との間の電子支払いトランザクションを促進する。
【００２１】
マーチャントと顧客との間の電子的やりとりは、顧客の支払いデバイス１０とマーチャントの支払い端末２０との間で生じる。顧客は、磁気ストライプを有するクレジットカードや、ＥＭＶチップを有するクレジットカードや、支払いアプリケーションを実行するスマートフォンなどのＮＦＣ可能電子デバイスなどの支払いデバイス１０を有する。マーチャントは支払い端末や他の電子デバイスなどの支払い端末２０を有する。そのような他の電子デバイスは支払い情報（例えば、暗号化された支払いカードデータおよびユーザ認証データ）およびトランザクション情報（例えば、購入量およびポイントオブパーチェイス情報）を処理することができ、例えば支払いアプリケーションを実行するスマートフォンやタブレットである。
【００２２】
ある実施の形態（例えば、廉価トランザクションやＮＦＣまたはＥＭＶ支払いデバイス１０によって示される支払い上限よりも少ない支払いトランザクションについてのもの）では、支払いトランザクションの初期処理および承認は支払い端末２０において処理されてもよい。他の実施の形態では、支払い端末２０はネットワーク３０を介して支払いサーバ４０と通信してもよい。支払いサーバ４０が単一の主体により運用されてもよいが、ある実施の形態では、支払いサーバ４０は任意の適切な主体により運用される任意の適切な数のサーバを含んでもよいこと、例えば支払いサービスシステム５０ならびにマーチャントおよび顧客のひとつ以上の銀行（例えば、銀行サーバ６０）を含んでもよいこと、は理解されるべきである。支払い端末２０および支払いサーバ４０は支払い情報およびトランザクション情報をやりとりし、トランザクションを承認するか否かを決定する。例えば、支払い端末２０はネットワーク３０を介して支払いサーバ４０に、暗号化された支払いデータとユーザ認証データと購入量情報とポイントオブパーチェイス情報とを提供してもよい。支払いサーバ４０は、この受信した情報と顧客アカウントまたはマーチャントアカウントに関する情報とに基づいて、トランザクションを承認するか否かを決定し、支払いトランザクションが承認されたか否かを示すためにネットワーク３０を介して支払い端末２０に応答してもよい。支払いサーバ４０はまた、支払い端末２０に、トランザクション識別子などの追加情報を送信してもよい。
【００２３】
支払い端末２０において支払いサーバ４０から受信した情報に基づいて、マーチャントはトランザクションが承認されたか否かを顧客に示してもよい。ある実施の形態、例えばチップカード支払いデバイス、では、承認は支払い端末において、例えば支払い端末の画面に、示されてもよい。ＮＦＣ支払いデバイスとして動作するスマートフォンやウォッチなどの他の実施の形態では、承認されたトランザクションおよび追加情報（例えば、レシート、特別なオファー、クーポン、ロイヤリティプログラム情報など）についての情報がＮＦＣ支払いデバイスに提供され、スマートフォンやウォッチの画面に表示されるかまたはメモリに格納されてもよい。
【００２４】
ある実施の形態では、支払いサーバ４０は、支払い端末２０に保持されるファームウエアインストラクションについての情報（例えば、メモリに保持されるインストラクションのバージョン）を要求してもよい。支払い端末のひとつ以上のコンポーネントのプロセッサまたは他のハードウエアがファームウエアインストラクションを実行することで、支払い端末およびそのコンポーネントの動作を一般的に制御することができる。情報要求に応じて、支払い端末２０は、そのメモリに保持されるファームウエアについての情報を含む支払い端末２０についての情報を集めることで、ファームウエアマニフェストを生成してもよい。ある実施の形態では、このファームウエアマニフェスト情報は、処理のために支払いサーバ４０（例えば、支払いサービスシステム５０）に送信されてもよい。
【００２５】
ある実施の形態では、支払いサーバ４０（例えば、支払いサーバ４０の支払いサービスシステム５０）は、ファームウエアマニフェストに基づいて、支払い端末２０のファームウエアの更新が必要か否か判定してもよい。更新が必要な場合、支払い端末４０は、支払いリーダにファームウエアデータのブロックの集合として提供されるべきファームウエア更新にアクセスしてもよい。ファームウエアデータのブロックは圧縮されていてもよく、圧縮ファームウエア更新ブロックおよび圧縮ファームウエア更新ブロックについての情報を支払い端末２０に提供してもよい。ある実施の形態では、支払い端末２０は、圧縮ファームウエア更新ブロックおよび情報を支払いサーバ４０から受信し、それらを支払い端末２０（例えば、支払い端末２０のメモリ）に格納してもよい。支払い端末２０は、そのメモリの検査を行い、そのメモリ検査に基づいて支払いサーバ４からの圧縮ファームウエア更新ブロックの受信を継続してもよい。支払い端末２０は、そのメモリの追加的な検査を行い、それがファームウエア更新の全体を受信したことを、支払いサーバ４０からの圧縮ファームウエア更新ブロックについての情報に基づいて、決定してもよい。支払い端末２０は、支払い端末２０のファームウエアを更新してもよい。
【００２６】
図２は、本開示のある実施の形態に係る、支払いデバイス１０および支払い端末２０の説明的ブロック図を示す。支払いシステム１の支払い端末２０および支払いデバイス１０が任意の適切な態様で実装可能であることは理解されるところであるが、ある実施の形態では、支払い端末２０は支払いリーダ２２とマーチャントデバイス２９とを備えてもよい。しかしながら、本明細書で用いられる場合、支払い端末という語は支払いリーダ２２などの支払い端末の任意の適切なコンポーネントを指してもよいことは理解されるであろう。ある実施の形態では、支払い端末２０の支払いリーダ２２は、支払いデバイス１０と、ポイントオブセールアプリケーションを実行するマーチャントデバイス２９と、の間のトランザクションを促進する無線通信デバイスであってもよい。
【００２７】
ある実施の形態では、支払いデバイス１０は、支払い端末２０と（例えば、支払いリーダ２２を介して）通信可能なデバイス、ＮＦＣデバイス１２やＥＭＶチップカード１４などであってもよい。チップカード１４はセキュアな集積回路を含んでもよい。この集積回路は、支払い端末２０などの支払い端末と通信することができ、暗号化された支払い情報を生成することができ、ＥＭＶＣｏによって公表されているものなどのひとつ以上の電子的支払い規格にしたがい、その暗号化された支払い情報と他の支払いまたはトランザクション情報（例えば、ローカルで処理される支払いについてのトランザクション上限）とを提供することができる。チップカード１４は支払いリーダ２２と通信するための接触ピン（例えば、ＩＳＯ７８１６にしたがうもの）を含んでもよく、ある実施の形態では、近距離場１５を介して支払いリーダ２２と誘導的に結合されてもよい。支払いリーダ２２と誘導的に結合するチップカード１４は、ＩＳＯ１４４４３などの無線通信規格にしたがい支払いリーダ２２によって提供される無線キャリア信号の負荷変調を用いて、支払いリーダ２２と通信してもよい。
【００２８】
ＮＦＣデバイス１２は、支払い端末２０との（例えば、支払いリーダ２２との通信を介した）セキュアなトランザクションを行うことができる、スマートフォンやタブレットやスマートウォッチなどの電子デバイスであってもよい。ＮＦＣデバイス１２は、セキュアなトランザクション機能を実行するためのハードウエア（例えば、ハードウエアおよび実行可能コードを含むセキュアエレメント）および／またはソフトウエア（例えば、ホストカードエミュレーションルーチンにしたがいプロセッサ上で実行される実行可能コード）を有してもよい。支払いトランザクション中、ＮＦＣデバイス１２は近距離場１５を介して支払いリーダ２２と誘導的に結合されてもよく、ＩＳＯ１４４４３およびＩＳＯ１８０９２などのひとつ以上の無線通信規格にしたがい支払いリーダ２２によって提供される無線キャリア信号の能動的または受動的負荷変調によって支払い端末２０と通信してもよい。
【００２９】
支払い端末２０は任意の適切な態様で実装可能であるが、ある実施の形態では、支払い端末２０は支払いリーダ２２とマーチャントデバイス２９とを含んでもよい。マーチャントデバイス２９は、マーチャントのためのユーザインタフェースを提供し、かつ、支払いリーダ２２および支払いサーバ４０との通信を促進するポイントオブセールアプリケーションを実行する。支払いリーダ２２は支払いデバイス１０とマーチャントデバイス２９との間の通信を促進してもよい。本明細書で説明される通り、ＮＦＣデバイス１２やチップカード１４などの支払いデバイス１０は誘導的結合を介して支払いリーダ２２と通信してもよい。これは図２において近距離場１５として描かれている。この近距離場１５は、支払いリーダ２２から発せられる適切な周波数（例えば、１３．５６ＭＨｚ）を有する無線キャリア信号を含む。
【００３０】
ある実施の形態では、支払いデバイス１０はＮＦＣデバイス１２やチップカード１４などの非接触支払いデバイスであってもよく、支払いリーダ２２および非接触支払いデバイス１０は近距離場１５内の無線キャリア信号を変調することによって通信してもよい。支払いデバイス１０に情報を伝達するために、支払いリーダ２２は、支払いリーダ２２から送信するべきデータに基づいて無線キャリア信号の振幅および／または位相を変化させ、その結果支払いデバイスへと送信される無線データ信号が生成される。この信号は、１３．５６ＭＨｚで送信するようチューンされた支払いリーダ２２のアンテナによって送信され、支払いデバイス１０もまた近距離場１５の範囲内（例えば、０ｃｍから１０ｃｍ）に適切にチューンされたアンテナを有する場合、支払いデバイスは支払いリーダ２２によって送信された無線キャリア信号または無線データ信号を受信する。無線データ信号の場合、支払いデバイス１０の処理回路は、受信した信号を復調し、支払いリーダ２２から受信されたデータを処理することができる。
【００３１】
支払いデバイス１０などの非接触支払いデバイスが近距離場１５の範囲内にある場合、それは支払いリーダ２２と誘導的に結合される。したがって、支払いデバイス１０はまた、能動的または受動的負荷変調を介して、無線キャリア信号を変調することができる。支払いデバイス１０のアンテナのチューニング特性を変えることによって（例えば、アンテナ回路において送信対象の被変調データに基づいて選択的に並列負荷を選択することによって）、支払いデバイス１０および支払いリーダ２２の両方において無線キャリア信号が変調され、これにより被変調無線キャリア信号が生成される。このようにして、支払いデバイスは支払いリーダ２２に被変調データを送信することができる。
【００３２】
ある実施の形態では、支払いリーダ２２はまた、チップカード１４を受けることができるＥＭＶスロット２１を含む。チップカード１４は、チップカード１４がＥＭＶスロット２１に挿入されたときに支払いリーダ２２の対応する接点と係合する接点を有してもよい。支払いリーダ２２はこれらの接点を通じてチップカード１４のＥＭＶチップに給電し、支払いリーダ２２とチップカード１４とはそれらの接点によって確立される通信経路を通じて通信する。
【００３３】
支払いリーダ２２はまた、磁気ストライプカードとのインタフェースとなるハードウエアをふくんでもよい（図２では不図示）。ある実施の形態では、ハードウエアは、磁気ストライプカードの磁気ストライプをスワイプするか沈めるよう顧客を案内するスロットを含んでもよく、この場合、磁気ストライプリーダは磁気ストライプカードから支払い情報を受けることができる。次いで、受信された支払い情報は支払いリーダ２２によって処理される。
【００３４】
支払い端末２０（例えば、支払い端末２０の支払いリーダ２２）は、ファームウエアを有する種々のコンポーネントを有してもよい。ある実施の形態では、例えばバグを直すためや問題を解決するためやデバイスのセキュリティを高めるために、ファームウエアを更新することが必要であってもよい。一例として、支払いデバイス１０（例えば、ＮＦＣ通信やＥＭＶカード）により用いられてもよい種々の方法を含むトランザクションに適用可能な規制や規格は、トランザクションを処理する際に、支払い端末２０（例えば、支払いリーダ２２）が新たなインストラクションや手順に従うことを要求してもよい。これは、支払いリーダ２２が新たなインストラクションを用いてトランザクションを処理するために支払いリーダ２２やそのいくつかのコンポーネントのファームウエアを更新することを要求してもよい。ある実施の形態では、支払い端末２０の他のコンポーネントは更新を必要とするファームウエア（例えば、マーチャントデバイス２９）を有してもよい。任意の適切な理由により支払いリーダ２２やマーチャントデバイス２９やそれらいずれかの任意のコンポーネントのファームウエアが更新を必要としうることは理解されるであろう。
【００３５】
マーチャントデバイス２９は、タブレット支払いデバイス２４やモバイル支払いデバイス２６や支払い端末２８などの任意の適切なデバイスであってもよい。タブレット支払いデバイス２４やモバイル支払いデバイス２６などの計算デバイスの場合、ポイントオブセールアプリケーションは、購入および支払い情報の入力、顧客とのやりとり、および支払いサーバ４０との通信を担当してもよい。例えば、支払いアプリケーションは、マーチャントがそのなかから選択できるサービスメニューと、トランザクションを自動化するための一連のメニューまたは画面と、を提供してもよい。支払いアプリケーションはまた、署名やＰＩＮ番号や生体情報などの顧客認証情報の入力を促進してもよい。専用支払い端末２８に同様の機能が提供されてもよい。
【００３６】
マーチャントデバイス２９は、通信経路２３／２５／２７を介して支払いリーダ２２と通信してもよい。通信経路２３／２５／２７は有線接続（例えば、イーサネット、ＵＳＢ、ファイヤワイヤ、ライトニング）または無線接続（例えば、Ｗｉ−Ｆｉ、ブルートゥース、ＮＦＣ、ＺｉｇＢｅｅ）を介して実装されてもよいが、ある実施の形態では、支払いリーダ２２はブルートゥースローエナジーインタフェースを介してマーチャントデバイス２９と通信してもよく、この場合、支払いリーダ２２とマーチャントデバイス２９とは接続されたデバイスとなる。ある実施の形態では、例えば、トランザクション量が少ないか支払いサーバ４０への接続がない場合、支払いトランザクションの処理が支払いリーダ２２およびマーチャントデバイス２９においてローカルで生じうる。他の実施の形態では、マーチャントデバイス２９または支払いリーダ２２は公衆または専用通信ネットワーク３０を介して支払いサーバ４０と通信してもよい。通信ネットワーク３０は任意の適切な通信ネットワークであってもよいが、ある実施の形態では、通信ネットワーク３０はインターネットであってもよく、支払いおよびトランザクション情報は支払い端末２０と支払いサーバ４０との間で暗号化形式で、例えばトランスポートレイヤセキュリティ（ＴＬＳ）やセキュアソケットレイヤ（ＳＳＬ）プロトコルにより、通信されてもよい。
【００３７】
図３は、本開示のある実施の形態に係る、例示的支払いリーダ22のブロック図を示す。ある実施の形態では、支払いリーダ２２は、例えばブルートゥースクラシックやブルートゥースローエナジーを用いて、マーチャントデバイス２９などの双方向電子デバイスと無線通信する無線通信デバイスであってもよい。図３において特定のコンポーネントが特定の構成で描かれているが、支払いリーダ２２が追加のコンポーネントを含んでもよいこと、図３に示されるコンポーネントのうちのひとつ以上が支払いリーダ２２に含まれなくてもよいこと、および支払いリーダ２２のコンポーネントが任意の適切な態様で再構成されうること、は理解されるであろう。ある実施の形態では、支払いリーダ２２は、リーダチップ１００と、複数の支払いインタフェース（例えば、非接触インタフェース１０２、接触インタフェース１０４）と、電源１０６と、無線通信インタフェース１０８と、有線インタフェース１１０と、信号調整デバイス１１２と、トランザクションチップ１１４と、を含む。支払いリーダ２２はまた、リーダチップ１００内に処理ユニット１２０とメモリ１２２とを含み、トランザクションチップ１１４内に汎用処理ユニット１２４と暗号化処理ユニット１２５と汎用メモリ１２６と暗号化メモリ１２８とを含む。ある実施の形態では、処理ユニット１２０およびメモリ１２２はリーダチップ１００およびトランザクションチップ１１４のそれぞれにパッケージされたものとして、また特定の態様で構成されるものとして説明されるが、処理ユニット１２０、汎用処理ユニット１２４、暗号化処理ユニット１２５、メモリ１２２、汎用メモリ１２６および暗号化メモリ１２８を任意の適切な態様で構成することで、本明細書で説明されるような支払いリーダ２２の機能を実行できることは理解されるであろう。リーダチップ１００およびトランザクションチップ１１４の機能が単一のチップまたは複数のチップにおいて実現可能であること、および、そのそれぞれが任意の適切な処理ユニットおよびメモリの組み合わせを含み、それにより合わせて本明細書で説明されるリーダチップ１００およびトランザクションチップ１１４の機能を行うことは、理解されるであろう。
【００３８】
ある実施の形態では、リーダチップ１００はFreescale Semiconductor, Incにより供給されるＫ２１チップなどの任意の適切なチップであってもよい。支払いリーダ２２のリーダチップ１００の処理ユニット１２０は任意の適切なプロセッサであってもよく、支払いリーダ２２の機能を実行し制御するのに必要な限り、任意の適切なハードウエア、ソフトウエア、メモリ、および回路を含みうる。処理ユニット１２０は任意の適切な数のプロセッサを含んでもよく、また、任意の適切な数のメモリやメモリタイプ内のインストラクションに基づいてリーダチップ１００の動作を行ってもよい。ある実施の形態では、処理ユニット１２０は、マルチコアプロセッサや他の適切なコンポーネントなどの複数の独立した処理ユニットを有してもよい。処理ユニット１２０は、リーダチップ１００のメモリ１２２に保持されるインストラクションを実行することで、支払いリーダ２２の動作および処理を制御してもよい。本明細書で用いられる場合、プロセッサまたは処理ユニットは、本明細書で説明される処理機能を行うために必要な処理能力を有するひとつ以上のプロセッサを含んでもよく、例えば、ハードウエアロジック（例えば、ハードウエア記述言語（ＨＤＬ）などのハードウエアの構成を記述するソフトウエアによって設計されたハードウエア）やプロセッサが実行するコンピュータ可読インストラクションやそれらの任意の適切な組み合わせなどを含むがそれらに限定されない。プロセッサは本明細書で説明される動作を行うためにソフトウエアを実行してもよく、そのようなソフトウエアは、実体的非一時的コンピュータ可読保持媒体上の機械可読形態でアクセスされたソフトウエアを含む。
【００３９】
例示的な実施の形態では、リーダチップ１００の処理ユニット１２０は、支払いリーダ２２の種々のコンポーネントの動作を、メモリ１２２に保持されるインストラクションに基づいて、制御するためのハブとして動作するよう構成された二つのＲＩＳＣプロセッサを含んでもよい。本明細書で用いられる場合、メモリは、任意の適切な実体的または非一時的保持媒体を指してもよい。実体的（または、非一時的）保持媒体の例は、ディスクと、サム（thumb）ドライブと、メモリと、を含むが、伝送信号は含まない。実体的コンピュータ可読保持媒体は、コンピュータ可読インストラクションやデータ構造やプログラムモジュールや他のデータなどの、揮発性および不揮発性、取り外し可能および取り外し不可媒体を含む。そのような媒体の例は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＳＲＡＭ、フラッシュメモリ、ディスクまたは光学ストレージ、磁気ストレージ、あるいはプロセッサまたは計算デバイスによってアクセスされる情報を保持する任意の他の非一時的媒体を含む。
【００４０】
リーダチップ100はまた、インタフェース回路やアナログフロントエンド回路やセキュリティ回路やコンポーネント監視回路などの追加回路を含んでもよい。ある実施の形態では、インタフェース回路は、無線通信インタフェース108（例えば、Ｗｉ−Ｆｉ、ブルートゥースクラシック、ブルートゥースローエナジー）とのインタフェースとなる回路と、有線インタフェース110（例えば、ＵＳＢ、イーサネット、ファイヤワイヤ、およびライトニング）とのインタフェースとなる回路と、他の通信インタフェースまたはバス（例えば、Ｉ２Ｃ、ＳＰＩ、ＵＡＲＴおよびＧＰＩＯ）とのインタフェースとなる回路と、電源１０６とのインタフェースとなる回路（例えば、電力管理回路、電力変換回路、整流器、および電池充電回路）と、を含んでもよい。
【００４１】
トランザクションチップ１１４は、本明細書で説明される処理機能を行うために必要な処理能力を有するひとつ以上のプロセッサを含んでもよく、例えば、ハードウエアロジックやプロセッサが実行するコンピュータ可読インストラクションやそれらの任意の適切な組み合わせなどを含むがそれらに限定されない。例示的な実施の形態では、トランザクションチップ１１４は、支払いトランザクションの処理や支払いデバイスとのインタフェースや暗号化や他の支払い特定機能に関する機能を行ってもよい。ある実施の形態では、トランザクションチップ１１４は汎用支払い機能に関連付けられたインストラクションを実行するための汎用処理ユニット１２４と、暗号化処理動作を扱うための暗号化処理ユニット１２５と、を含んでもよい。汎用処理ユニット１２４および暗号化処理ユニット１２５のそれぞれは、それに関連付けられた専用メモリ（すなわち、汎用メモリ１２６と、暗号化メモリ１２８などのメモリ）を有してもよい。この態様では、特定の暗号化処理および重要セキュリティ情報（例えば、暗号化鍵、パスワード、ユーザ情報等）は、暗号化メモリ１２８および暗号化処理ユニット１２５によって安全に保持され、処理されうる。
【００４２】
トランザクションチップ１１４の汎用処理ユニット１２４および暗号化処理ユニット１２５の一方または両方は、例えば任意の適切な内部バスおよび通信技術を用いてリーダチップ１００（例えば、処理ユニット１２０）と通信してもよい。この態様では、リーダチップ１００とトランザクションチップ１１４とは併せて、トランザクションを処理し、処理されたトランザクションに関する情報を（例えばマーチャントデバイス２９に）伝達してもよい。
【００４３】
トランザクションチップ１１４はまた、接触インタフェース１０４とのインタフェースとなるための回路（例えば、スロット２１に挿入されたチップカード１４のＥＭＶチップと直接インタフェースするための電源および通信回路）を含んでもよい。ある実施の形態では、トランザクションチップ１１４はまた、非接触インタフェース１０２のアナログコンポーネントとのインタフェースとなるアナログフロントエンド回路（例えば、電磁整合（ＥＭＣ）回路、整合回路、変調回路、および測定回路）を含んでもよい。
【００４４】
ある実施の形態では、汎用処理ユニット１２４は、本明細書で説明される支払いリーダ２２の支払い処理機能を行うための任意の適切なプロセッサを含んでもよい。ある実施の形態では、汎用メモリ１２６は任意の適切なメモリ（例えば、本明細書で説明されるようなもの）であってもよく、支払いリーダ２２の汎用トランザクション処理動作を行うためのインストラクションの複数の集合を含んでもよく、そのようなインストラクションの集合は例えばトランザクション処理インストラクション１６６や、データ認証インストラクション１６８や、信号調整インストラクション１７０などであり、それらのうちのいずれかはメモリ１２６に保持されるファームウエアにおいて全体的にまたは部分的に実装されてもよい。汎用メモリ１２６はまた、処理ユニット１２４と、汎用メモリ１２６内に保持されるファームウエア（例えば、インストラクション１６６、１６８および１７０のうちのいくつかまたは全てと任意の他の適切なインストラクションとを含むファームウエア）と、を初期化しうるブートローダ１７２を含んでもよい。
【００４５】
トランザクション処理インストラクション１６６は、支払いリーダ２２と支払いデバイス１０との間の相互作用（例えば、非接触インタフェース１０２および接触インタフェース１０４を介して支払いデバイスとのインタフェースとなるためのもの）を制御することや、（例えば、支払い方法に関連付けられた支払い処理主体に基づいて）支払い処理手順を選択することや、暗号化プロセッサ１２５とのインタフェースとなることや、トランザクション処理の任意の他の適切な側面などの、支払いリーダ２２の任意の適切な汎用トランザクション処理動作を制御するためのインストラクションを含んでもよい。データ認証インストラクション１６８は、支払い端末２０の設定情報を提供するためのインストラクションを含んでもよい。設定情報は、支払い上限やローカルトランザクション（すなわち、支払いサーバ４０に接続せずに生じるトランザクション）のトランザクションタイプやサポートされるアプリケーションなどの任意の適切な情報を含んでもよい。ある実施の形態では、一例として、データ認証インストラクション１６８はＴＭＳ−ＣＡＰＫインストラクションなどの設定インストラクションを含んでもよい。ある実施の形態では、ＴＭＳ−ＣＡＰＫインストラクションは、特定の法域（例えば、国に特有）用に調整されてもよい。ある実施の形態では、データ認証インストラクション１６８は、汎用メモリ１２６の他のファームウエアインストラクションとは別個の固有メモリ位置に保持されるファームウエアの個別部分として実装されてもよい。この態様では、トランザクションチップ１１４の汎用処理ユニット１２４や汎用メモリ１２６に関連付けられた他のファームウエアインストラクションに影響を与えることなく、データ認証インストラクション１６８に関連付けられたファームウエアを選択的に更新することが可能となる。
【００４６】
信号調整インストラクション１７０は、非接触インタフェース１０２を介して支払いデバイス１０から（例えば、ＮＦＣ支払いデバイス１０から）受信した調整信号のインストラクションを含む、信号調整デバイス１１２と相互作用するためのインストラクションを含んでもよい。ある実施の形態では、信号調整インストラクション１７０は非接触インタフェース１０２を介して受信された信号を操作するためのインストラクションを含んでもよく、信号調整デバイス１１２はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であるが、他の実施の形態では、信号調整インストラクション１７０は、非接触インタフェース１０２を介して受信されるＮＦＣ信号を処理するのに必要とされる任意の適切なハードウエア、ロジック、またはアルゴリズムを用いて信号を調整するためのインストラクションを含んでもよい。
【００４７】
暗号化処理ユニット１２５は本明細書で説明された任意の適切なプロセッサであってもよく、ある実施の形態では、支払いトランザクションの処理のための暗号化機能を行ってもよい。例えば、ある実施の形態では、暗号化処理ユニット１２５はひとつ以上の暗号化鍵に基づいてデータを暗号化および復号してもよく、これは、支払いリーダ２２の他のコンポーネントから暗号化機能を隔離することで、暗号化鍵を支払いリーダ２２の他のコンポーネントへの暴露から守るような態様でなされる。
【００４８】
ある実施の形態では、暗号化メモリ１２８は本明細書で説明された任意の適切なメモリまたはその組み合わせであってもよく、支払い処理インストラクション１７６および暗号化インストラクション１７８などの暗号化動作を行うためのインストラクションの複数の集合を含んでもよい。暗号化メモリ128はまた、処理ユニット125と、暗号化メモリ128内に保持されるファームウエア（例えば、インストラクション１７６および１７８のうちのいくつかまたは全てを含むファームウエア）と、を初期化しうるブートローダ179を含んでもよい。支払い処理インストラクション１７６は、特定の支払い手順に関連付けられて用いられるべき暗号化技術を提供することや、アカウントにアクセスして情報を処理することや、任意の他の適切な支払い処理機能や、それらの任意の適切な組み合わせなどの、支払い処理の側面を行うためのインストラクションを含んでもよい。暗号化インストラクション１７８は、暗号化動作を行うためのインストラクションを含んでもよい。暗号化処理ユニット１２５は、暗号化機能や復号機能やサイン機能や、支払いの際の署名を検証したり支払いトランザクションの一部としてトランザクション情報を検証する機能などの各種暗号化機能を行うための暗号化インストラクション１７８を実行してもよい。
【００４９】
無線通信インタフェース１０８は、任意の適切な無線通信ハードウエア（例えば、アンテナ、整合回路など）と、（例えば、ブルートゥースローエナジーなどのプロトコルを介したマーチャントデバイス２９との）無線通信に参加し、関連回路を制御するのに必要な処理能力を有するひとつ以上のプロセッサと、を含んでもよく、関連回路はハードウエアロジック、プロセッサで実行されるコンピュータ可読インストラクション、またはそれらの任意の適切な組み合わせを含むがそれらに限定されない。無線通信インタフェース１０８は任意の適切な態様で実装されうるが、例示的な実施の形態では、無線通信インタフェース１０８は、処理ユニット１８０およびメモリ１８２を含んでもよい、Texas Instruments CC2640デバイスとして実装されてもよい。ある実施の形態では、処理ユニット180およびメモリ182は無線通信インタフェース108にパッケージされたものとして、また特定の態様で構成されるものとして説明されるが、処理ユニット１８０およびメモリ１８２を任意の適切な態様で構成することで、本明細書で説明されるような無線通信インタフェース108の機能を実行できることは理解されるであろう。
【００５０】
処理ユニット１８０は、本明細書で説明される機能を実行するための任意の適切なプロセッサまたは処理ハードウエアを含んでもよい。ある実施の形態では、処理ユニット１８０は、（例えば、ブルートゥースローエナジーを介して）無線通信を送受信し、支払いリーダ２２の他の回路（例えば、リーダチップ１００の処理ユニット１２０）と（例えば、内部バスまたは任意の他の適切な通信方法を用いて）通信するために、無線通信インタフェース１０８のハードウエアおよび他のコンポーネントと相互作用しそれらを制御すべく、メモリ１８２のインストラクションを実行してもよい。メモリ１８２は本明細書で説明されるメモリであり、無線インストラクション１８４などの、無線通信インタフェース１０８の処理動作を行うためのインストラクションの複数の集合を含んでもよい。ある実施の形態では、メモリ１８２はスタティックランダムアクセスメモリ（ＳＲＡＭ）として実装されるが、任意の適切なメモリフォーマットを用いることで、本明細書で説明される支払いリーダ２２の機能を実行してもよい。処理ユニット180と、メモリ182内に保持されるファームウエア（例えば、無線インストラクション184のうちのいくつかまたは全てを含むファームウエア）と、を初期化しうるブートローダ186である。
【００５１】
信号調整デバイス１１２は任意の適切なハードウエア、ソフトウエア、またはそれらの任意の組み合わせを含んでもよいが、例示的な実施の形態では、信号調整デバイスはＦＰＧＡを含んでもよい。信号調整デバイス１１２は、支払いデバイス１０がＮＦＣ通信を用いて支払いリーダ２２と通信したときなどに、非接触インタフェース１０２から送信された信号を受信して調整してもよい。ある実施の形態では、信号調整デバイス１１２は非接触インタフェース１０２とのインタフェースとなる際に用いられる、トランザクションチップ１１４に保持されるインストラクション（例えば、信号調整インストラクション１７０）に基づいて動作してもよい。ある実施の形態では、これらのインストラクションはファームウエアとして保持されてもよく、ある実施の形態では、インストラクション（例えば、信号調整インストラクション１７０）は個々に更新可能であってもよい。
【００５２】
非接触インタフェース102は、チップカード１４やＮＦＣデバイス１２などの非接触デバイスとのＮＦＣ通信を提供してもよい。リーダチップ１００によって提供される信号に基づいて、非接触インタフェース１０２のアンテナはキャリア信号または変調信号のいずれかを出力してもよい。キャリア信号は、１３．５６ＭＨｚなどの固定周波数を有する信号であってもよい。変調信号は、ＩＳＯ  １４４４３やＩＳＯ  １８０９２などの変調手順にしたがい変調されたバージョンのキャリア信号であってもよい。支払いリーダ２２が非接触デバイスと誘導的に結合するとき、非接触デバイスはまたキャリア信号を変調し、変調された信号は非接触インタフェース１０２によって検出され、処理のためにリーダチップ１００に提供されてもよい。キャリア信号のこの変調に基づいて、支払いリーダ２２および非接触デバイスは支払い情報などの情報を伝達することができる。
【００５３】
接点インタフェース104は、チップカード１４のＥＭＶチップなどの支払いチップに給電し、ＥＭＶチップと通信するための適切なインタフェースであってもよい。接点インタフェース104は、ＥＭＶ規格にしたがいチップカード１４との物理的なインタフェースとなる複数の接触ピン（図３では不図示）を含んでもよい。ある実施の形態では、接触インタフェース１０４は、電源（ＶＣＣ）ピンと、グランド（ＧＮＤ）ピンと、ＥＭＶカードをリセットするためのリセット（ＲＳＴ）ピンと、クロック信号を提供するためのクロック（ＣＬＫ）ピンと、ＥＭＶカードにプログラミング電圧を提供するためのプログラミング電圧（ＶＰＰ）ピンと、ＥＭＶ通信を提供するための入出力（Ｉ／Ｏ）ピンと、二つの補助ピンと、を含んでもよい。この態様では、支払いリーダおよびチップカードは支払い情報などの情報を交換することができる。
【００５４】
電源106はＡＣ電源や電池への物理的接続などのひとつ以上の電源を含んでもよい。電源106は、ＡＣ電力を変換するための、および、支払いリーダ２２のコンポーネントによる使用のために複数のＤＣ電圧を生成するための、電力変換回路を含んでもよい。電源106が電池を含む場合、電池は物理的な電力接続を介して、または、誘導充電を介して、または、任意の他の適切な方法を介して、充電可能である。図３では支払いリーダ２２の他のコンポーネントに物理的に接続されているようには描かれていないが、電源１０６はコンポーネントの要件にしたがって、支払いリーダ２２のコンポーネントに各種電圧を供給してもよい。
【００５５】
有線インタフェース１１０は、ＵＳＢやライトニングやファイヤワイヤやイーサネットや任意の他の適切な有線通信インタフェースやそれらの任意の組み合わせなどの、他のデバイスや通信ネットワークとの有線通信のための任意の適切なインタフェースを含んでもよい。ある実施の形態では、有線インタフェース１１０は、支払いリーダが、マーチャントデバイス２９および支払いサーバ４０のうちの一方または両方と通信できるようにしてもよい。
【００５６】
リーダチップ１００のメモリ１２２は、オペレーティングインストラクション１３０やトランザクション処理インストラクション１３２やファームウエア更新インストラクション１３４やブートローダ１３６などの、支払いリーダ２２の動作を制御するためのインストラクションの複数の集合を含んでもよい。
【００５７】
オペレーティングインストラクション１３０は、内部通信や電力管理やメッセージ処理やシステム監視やスリープモードやユーザインタフェース応答および制御や無線インタフェース１０８の動作やトランザクションチップ１１４の動作やインストラクションの他の集合の管理などの、支払いリーダ２２の任意の適切な汎用動作を制御するためのインストラクションを含んでもよい。ある実施の形態では、オペレーティングインストラクション１３０は、支払いリーダ２２のリーダチップ１００の処理ユニット１２０によって実行される処理動作のほとんどを実行するのに必要なオペレーティングシステムおよびアプリケーションを提供してもよい。
【００５８】
オペレーティングインストラクション１３０はまた、マーチャントデバイス２９とのインタフェースとなるためのインストラクションを含んでもよい。ある実施の形態では、マーチャントデバイス２９はポイントオブセールアプリケーションを実行していてもよい。オペレーティングインストラクション１３０は、そのポイントオブセールアプリケーションと情報を交換するための、リーダチップ１００の処理ユニット１２０で実行される相補アプリケーション用のインストラクションを含んでもよい。例えば、ポイントオブセールアプリケーションは、マーチャントなどのユーザが、顧客との購入トランザクションを行うことを容易にするユーザインタフェースを提供してもよい。メニューは、アイテム選択と、税金計算と、チップの追加と、他の関連機能と、を提供してもよい。支払いを受けるときになると、ポイントオブセールアプリケーションは支払いリーダ２２に（例えば、無線インタフェース１０８を介して）メッセージを送信してもよい。オペレーティングインストラクション１３０は、例えば、非接触インタフェース１０２や接触インタフェース１０４を介して支払い情報を取得し、その支払い情報を処理するためにトランザクションチップ１１４を呼び出し、無線インタフェース１０８を介してマーチャントデバイスのポイントオブセールアプリケーションに伝送される応答メッセージを生成することによって、支払い処理を促進する。
【００５９】
オペレーティングインストラクション１３０はまた、支払いサーバ４０の支払いサービスシステム５０とのインタフェースとなるためのインストラクションを含んでもよい。ある実施の形態では、支払いサービスシステム５０は支払いリーダ２２およびマーチャントデバイス２９のポイントオブセールアプリケーションに関連付けられてもよい。例えば、支払いサービスシステム５０は、支払いサービスシステム５０に登録されている（例えば、一意の識別子に基づいて）支払いリーダ２２およびマーチャントデバイス２９についての情報を有してもよい。この情報を用いることで、マーチャントおよび顧客金融機関のサーバとのトランザクションを処理し、マーチャントに解析および報告を提供し、トランザクションデータを収集することができる。支払いリーダ２２は、支払い情報を（例えば、リーダチップ１００およびトランザクションチップ１１４の動作に基づいて）処理し、そのように処理された支払い情報をポイントオブセールアプリケーションに伝達してもよく、そのアプリケーションは次いで支払いサービスシステム５０と通信する。この態様では、支払いリーダ２２からのメッセージは支払いサーバ４０の支払いサービスシステム５０に転送され、この場合、支払いリーダ２２および支払いサービスシステム５０は支払いトランザクションを協働して処理してもよい。
【００６０】
トランザクション処理インストラクション１３２は支払いリーダ２２における支払いトランザクションの処理のためのインストラクションを含んでもよい。ある実施の形態では、トランザクション処理インストラクションは、ＥＭＶによって公表されているもののような支払い標準に準拠してもよい。使用中の支払い方法（例えば、ユーロペイ、マスターカード、ビザ、アメリカンエキスプレス等）に依存して、その支払い方法に関連付けられた特定の処理手順が選択され、その手順にしたがってトランザクションを処理してもよい。処理ユニット１２０によって実行されると、これらのインストラクションは、トランザクションをローカルで処理するか否かを決定し、支払いデバイスからの支払い情報へのアクセスをどのようにするかを決定し、その支払い情報をどのように処理するかを決定し、どの暗号化機能を実行するかを決定し、支払いサーバと交換する通信タイプを決定し、支払いトランザクションの処理に関する任意の他の適切な情報を決定してもよい。ある実施の形態では、トランザクション処理インストラクション１３２は高位の処理を実行し、処理ユニット１２０がトランザクションチップ１１４と通信して大抵のトランザクション処理動作を行うためのインストラクションを提供してもよい。
【００６１】
ファームウエア更新インストラクション１３４は支払いリーダ２２の各種コンポーネントのファームウエアを更新するためのインストラクションを含んでもよい。本明細書では支払いリーダ２２の特定のコンポーネントが更新必須のファームウエアを有するものとして説明されているが、支払いリーダ２２がファームウエアを有する追加のコンポーネントを含んでもよいこと、図３のコンポーネントのうちのひとつ以上がファームウエアを保持しなくてもよいこと、および支払いリーダ２２内でファームウエアが保持される位置が任意の適切な方法で再構成されうること、は理解されるであろう。加えて、ファームウエア更新インストラクション１３４は処理ユニット１２０によって実行される際に任意の適切な動作を行ってもよいものであるが、ある実施の形態では、ファームウエア更新インストラクション１３４は、支払いリーダ２２の各種コンポーネントに保持されるファームウエア用のファームウエアマニフェストを生成し、ファームウエアマニフェストに関して通信し、メモリ（例えば、リーダチップ１００のフラッシュメモリ）に一時的に保持されているファームウエアを受信し、特定の更新用の全てのファームウエアが支払いリーダによって受信されたか否かを判定し、更新が完了するまで（例えば、オフセット値に基づいて）追加的なファームウエアを要求し、ファームウエア更新全体が受信されると特定のコンポーネントのファームウエアを更新してもよい。
【００６２】
ある実施の形態では、ファームウエア更新インストラクション１３４は、支払いリーダ２２によって受信されるファームウエアマニフェストの要求を受信して処理するためのインストラクションを含んでもよい。ファームウエア更新インストラクション１３４は、支払いリーダ２２においてファームウエアマニフェストの要求を任意の適切なタイプの通信によって受信するために用いられ得るが、ある実施の形態では、ファームウエア更新インストラクション１３４は無線インタフェース１０８（例えば、ブルートゥースローエナジーメッセージを介して）または有線インタフェース１１０からファームウエアマニフェストの要求を受信してもよい。
【００６３】
ある実施の形態では、ファームウエア更新インストラクション１３４は、支払いリーダ２２のコンポーネントに保持されるファームウエアについての情報を含むファームウエアマニフェストを生成するためのインストラクションを含んでもよい。本明細書で用いられる場合、ファームウエアマニフェストは本開示にしたがう各種情報を含んでもよい。ファームウエア更新インストラクション１３４は、支払いリーダ２２のコンポーネントに、そのコンポーネントのメモリに保持されるファームウエアについての情報を要求してもよい。ある実施の形態では、その情報は、ファームウエアのバージョンやファームウエアの名称やハッシュ値やＣＲＣやコードのセクションやファームウエアを特定する任意の他の適切な方法やそれらの任意の組み合わせなどの、コンポーネントに関連付けられたファームウエアのバージョンを特定するために用いられてもよい情報を含んでもよい。ある実施の形態では、ファームウエア更新インストラクション１３４は、ファームウエアマニフェストを生成するために、支払いリーダ２２のコンポーネントのいずれかに保持されるファームウエアについての情報を要求してもよい。ある実施の形態では、ファームウエア更新インストラクション１３４は、無線インタフェース１０８のメモリに保持されるファームウエア（例えば、無線ファームウエア）、リーダチップ１１０のメモリに保持されるファームウエア（例えば、オペレーティングファームウエア）、トランザクションチップ１１４の信号調整インストラクション１７０（例えば、信号調整ファームウエア）、トランザクションチップ１１４のデータ認証インストラクション１６８（例えば、データ認証ファームウエア）、トランザクションチップ１１４の汎用メモリ１２６のファームウエア（例えば、トランザクションファームウエア）、およびトランザクションチップ１１４の暗号化メモリのファームウエア（例えば、暗号化ファームウエア）、についての情報を要求してもよい。ファームウエアマニフェストは、ファームウエアのこれらの部分のそれぞれを特定する情報（例えば、ファームウエアのバージョン）を含んでもよい。
【００６４】
ある実施の形態では、ファームウエア更新インストラクション１３４は、例えば、マーチャントデバイス２９または支払いサーバ４０にファームウエアマニフェストを送信するためのインストラクションを含んでもよい。送信は各種形態をとってもよく、無線インタフェース１０８または有線インタフェース１１０を介してマーチャントデバイス２９と交換されるメッセージや任意の他の適切な態様で交換されるメッセージを含む。ある実施の形態では、ファームウエア更新インストラクション１３４は、処理ユニット１２０に、ファームウエアマニフェストを生成して送信するためのインストラクションを提供してもよい。
【００６５】
ある実施の形態では、ファームウエア更新インストラクション１３４は、例えばマーチャントデバイス２９から、複数の圧縮ファームウエア更新ブロックのうちの第１部分を受信するためのインストラクションを含んでもよい。ある実施の形態では、マーチャントデバイス２９は支払いサーバ４０から圧縮ファームウエア更新ブロックを受信してもよく、それらのブロックのそれぞれは圧縮インストラクションのブロックを含み、それは解凍される（かつ必要であれば任意の他の適切な態様で処理される、例えば、復号される）と、支払いリーダ２２のひとつ以上のコンポーネント用のファームウエア更新を含む。例えば、支払いサーバ４０は、マーチャントデバイス２９に、ファームウエア更新の圧縮バージョンを一緒に含む複数の圧縮ファームウエア更新ブロックを送信してもよい。マーチャントデバイス２９は、次いで、支払いリーダ２２に、圧縮ファームウエア更新の各ブロックを送信してもよい。ある実施の形態では、支払いリーダ２２は、試行されるファームウエア更新の一部についてのみアクティブのままとされてもよく、この場合、複数の圧縮ファームウエア更新ブロックのうちの一部（例えば、第１部分）のみが受信され、支払いリーダ２２において（例えば、リーダチップ１００のメモリ１２２のフラッシュメモリに）格納される。ある実施の形態では、ファームウエア更新インストラクション１３４を用いることで、マーチャントデバイス２９との通信を監視し続け、受信した圧縮ファームウエア更新ブロックを処理してメモリ（例えば、フラッシュメモリ）にそれらのブロックを格納するためのインストラクションを処理ユニット１２０に提供してもよい。
【００６６】
ある実施の形態では、ファームウエア更新インストラクション１３４は、受信した圧縮ファームウエア更新ブロックを解凍し復号するためのインストラクションを含んでもよい。復号および解凍は任意の適切な暗号化方法および圧縮方法に基づく任意の適切な態様で行われてもよいが、ある実施の形態では、暗号化は公開鍵暗号化方法（例えば、トリプルＤＥＳやＲＳＡ）や対称鍵暗号化方法（例えば、Blowfish、Twofish、またはアドバンスドエンクリプションスタンダード（ＡＥＳ））を含んでもよく、一方で、圧縮は不可逆圧縮（例えば、ＪＰＥＧやＭＰＥＧアルゴリズム）や可逆圧縮（例えば、ＰＮＧやＧＩＦアルゴリズム）を含んでもよい。ある実施の形態では、処理ユニット１２０は、ファームウエア更新インストラクション１３４を実行することによって、特定の暗号化方法および圧縮方法を特定し、それに基づいて、圧縮ファームウエア更新ブロックの暗号化および解凍を行ってもよい。ファームウエアインストラクションは次いでメモリ（例えば、リーダチップ１００のメモリ１２２のフラッシュメモリ）に格納されてもよい。
【００６７】
ある実施の形態では、ファームウエア更新インストラクション１３４は、ファームウエア更新の全体が支払いリーダ２２において受信されたか否かを判定するためのインストラクションを含んでもよい。ある実施の形態では、処理ユニット１２０は、ファームウエア更新インストラクション１３４を実行することによって、受信されメモリに格納されたデータについての情報と、支払いサーバ４０によって提供されたファームウエア更新についての情報（例えば、非圧縮のファームウエア更新のサイズ）と、を比較してもよい。ファームウエア更新インストラクション１３４は、例えば、マーチャントデバイス２９から送信された圧縮ファームウエア更新ブロックの全てを支払いリーダ２２が受信して解凍したと処理ユニット１２０が判定した場合、メモリに保持されるファームウエア更新とファームウエア更新についての情報（例えば、ファームウエア更新のサイズ）とを比較するためのインストラクションを提供してもよい。
【００６８】
ある実施の形態では、ファームウエア更新の全体が受信されているというわけではない場合、ファームウエア更新インストラクション１３４は、ファームウエア更新のうちのどれくらいが受信されたかを判定するためのインストラクションを含んでもよい。この判定は受信に成功したファームウエアの量を決定しうる任意の適切な態様でなされてもよく、例えば、受信に成功した最後または最新のファームウエアインストラクションを特定し、そのインストラクションに関連付けられているオフセットを特定することによってなされてもよい。ファームウエアがメモリに格納される前に解凍されるある実施の形態では、このオフセットは非圧縮ファームウエアオフセットに対応してもよい。非圧縮ファームウエアオフセットは任意の適切な態様で特定されてもよいが、ある実施の形態では、受信され解凍されたファームウエア更新を保持するメモリは、計算された巡回冗長検査（ＣＲＣ）値を含む位置を含んでもよい。非圧縮ファームウエアオフセットは、ＣＲＣ値が正しいメモリ部分に基づいて特定されてもよい。オフセットはこれらのメモリ位置に基づいて任意の適切な態様で決定されてもよいが、ある実施の形態では、非圧縮ファームウエアオフセットを決定するために良好なＣＲＣ値に関連付けられている最新のファームウエアインストラクションが選択されてもよい。ある実施の形態では、この最新のインストラクションの前のファームウエアインストラクションの総数をその値として用いてもよく、これは、支払いリーダ２２に送信すべき次の圧縮ファームウエアブロックを特定するために送信する次のファームウエアブロックを決定するために（例えば、マーチャントデバイス２９によって）用いられる部分的ファームウエアオフセットとして機能してもよい。
【００６９】
ある実施の形態では、ファームウエア更新インストラクション１３４は、支払いリーダ２２からマーチャントデバイス２９へ部分的ファームウエアオフセットを送信するためのインストラクションを含んでもよい。例えば、ファームウエア更新インストラクション１３４が支払いリーダ２２によって受信された解凍済みファームウエア更新ブロックの第１部分（例えば、ファームウエア更新の不完全送信の第１部分）に基づいて部分的ファームウエアオフセットを決定した後、処理ユニット１２０は、例えば、無線通信インタフェース１０８（例えば、ブルートゥースローエナジーインタフェースを介して）、有線通信インタフェース１１０、または本明細書で説明される任意の他の適切な通信を介して、マーチャントデバイス２９に、部分的ファームウエアオフセットに関連付けられた情報を送信してもよい。
【００７０】
本明細書で用いられる場合、部分的ファームウエアオフセットは、支払いリーダのメモリに保持される非圧縮ファームウエアデータに対応するものとして説明される。ある実施の形態では、支払いリーダはまた、ファームウエア更新ブロックと共にオフセットテーブルを受信してもよく、該テーブルを用いることで非圧縮ファームウエアオフセットを圧縮ファームウエアオフセットに関連付けることができる。このオフセットテーブルおよびメモリからの既知の非圧縮ファームウエアオフセットに基づいて、支払いリーダ２２は、マーチャントデバイス２９への送信対象の圧縮ファームウエアオフセットを決定してもよい（例えば、マーチャントデバイス２９においてオフセットテーブルを保持し、非圧縮データと圧縮データとの間の変換をマーチャントデバイス２９において行う代わりに）。
【００７１】
ある実施の形態では、ファームウエア更新インストラクション１３４は、マーチャントデバイス２９から、部分的ファームウエアオフセットに基づいて、複数の圧縮ファームウエア更新ブロックのうちの第２部分を受信するためのインストラクションを含んでもよい。マーチャントデバイス２９において利用可能な複数の圧縮ファームウエア更新ブロックに含まれる全てのデータを受信する代わりに、ファームウエア更新インストラクション１３４は、処理ユニット１２０によって実行されると、支払いリーダ２２が部分的ファームウエアオフセットに基づいてファームウエア更新の処理を再開することを可能とするインストラクションを含む。例えば、複数の圧縮ファームウエア更新ブロックのうちの第２部分は、支払いリーダ２２によってその全体が以前に受信されてしまっているファームウエア更新ブロックを含まなくてもよい。この態様では、支払いリーダ２２は、ファームウエア更新を最初からもう一度行う代わりに、ファームウエア更新が適切に受信された直近のポイントからファームウエアの更新を続けることができる。
【００７２】
ある実施の形態では、以前に受信したファームウエアの直近の位置は、どの圧縮ファームウエアブロックの開始位置にも対応しない場合がある。ある実施の形態では、マーチャントデバイス２９は最近格納されたファームウエアインストラクションに対応するよう圧縮ファームウエア更新ブロックの第２部分の最初のブロックを切り詰めてもよいが、ある実施の形態では、支払いリーダ２２はファームウエア更新を開始する最初のブロックの位置を決定する必要がある。ある実施の形態では、ファームウエア更新インストラクション１３４は、支払いリーダ２２がマーチャントデバイス２９に送信された部分的ファームウエアオフセットに基づいて複数の圧縮ファームウエア更新ブロックの受信を再開することができるようにする情報を含むメッセージを、支払いリーダ２２がマーチャントデバイス２９と交換することを可能とするためのインストラクションを含んでもよい。例えば、ある実施の形態では、ファームウエア更新インストラクション１３４は、支払いリーダ２２がマーチャントデバイス２９からの複数の圧縮ファームウエア更新ブロックの第２部分の最初のブロックに含まれるデータを無視するためのインストラクションを含んでもよく、該最初のブロックは支払いリーダ２２が既に受信し、メモリ１２２などのメモリに保持しているものである。すなわち、ある実施の形態では、ファームウエア更新インストラクション１３４は、処理ユニット１２０が、部分的ファームウエアオフセットに関する情報（例えば、部分的ファームウエアオフセットに対応する第１データブロックの非圧縮メモリオフセット）を用いることで、マーチャントデバイス２９によって送信される複数の圧縮ファームウエア更新ブロックにおいて支払いリーダ２２が無視すべきデータを特定することを可能とするインストラクションを含んでもよい。
【００７３】
ある実施の形態では、ファームウエア更新インストラクション１３４は、完全に受信されたファームウエア更新に基づいて支払いリーダ２２のファームウエアを更新するためのインストラクションを含んでもよい。支払いリーダ２２のファームウエアを更新するための任意の適切な技術が行われてもよいが、ある実施の形態では、支払いリーダ２２のコンポーネントは処理ユニット１２０と通信し、その結果、それがコンポーネントにファームウエア更新を含むデータを、そのコンポーネントのファームウエアに対する更新として、送信してもよい。ある実施の形態では、コンポーネントのファームウエアの更新は既存のファームウエアの消去を含んでもよい。ある実施の形態では、処理ユニット１２０は、ファームウエア更新インストラクション１３４を実行することによって支払いリーダ２２の他のコンポーネント（例えば、無線通信インタフェース１０８やトランザクションチップ１１４）のプロセッサと通信してもよく、これは、関連ファームウエアおよびメモリに現在保持されているファームウエアの更新要求を含む。
【００７４】
ファームウエア更新インストラクション１３４はまた、ファームウエア更新が行われている間に、支払いリーダ２２においてトランザクションを処理することが許されるか否かを判定するためのインストラクションを含んでもよい。ファームウエア更新は、ファームウエア更新を完了する前に支払いリーダにダウンロードされ、処理され、格納されなければならないデータの量の結果として、比較的長時間かかりうる。（複数のコンポーネントのそれぞれに関連付けられているファームウエアアセットからの）ファームウエアの更新を必要としうる複数のコンポーネントがあると、ファームウエアを更新するのにかかる時間は増大する。さらに、支払いリーダのユーザは異なる利用パターンを有する。あるユーザは支払いリーダ２２をたまにしか用いないことがあり、この場合、周期的なファームウエア更新は、支払いを処理するための支払いリーダ２２の通常利用と干渉しうる。したがって、ファームウエア更新インストラクション１３４は、所定の状況のもとでは、ファームウエア更新が生じているのと同時に、支払いが処理されることを許すインストラクションを含んでもよい。
【００７５】
ある実施の形態では、支払いリーダ２２は、マーチャントデバイス２９を介して支払いサーバ４０から（例えば、支払いサービスシステム５０から）並列処理インジケータを受信してもよい。並列処理インジケータは、ファームウエア更新が生じている間に支払いを処理することが許されるか否かについて支払いリーダに知らせる任意の適切なインジケータ（例えば、メッセージ、識別子、フラグなど）であってもよい。本明細書で後述されるように、ファームウエア更新は、支払いリーダ２２が支払いトランザクションとファームウエア更新との並列処理を行ってもよいような態様で設定されてもよい。例えば、限定された数の更新（「ブロッキング更新」）のみが、セキュリティや支払い処理事項などの重要な事項を解決するものでありえ、この場合、支払いの処理を停止しなければならない。他の例として、ある場合には、支払いリーダ２２はまれな更新や完了に失敗した更新や他の理由の結果として、（支払いリーダの異なるコンポーネントに対する）ファームウエアアセットの組み合わせを有しうる。いずれにせよ、支払いリーダ２２が支払いが処理されてもよいことを示す並列処理インジケータを受信すると、ファームウエア更新インストラクションは支払いリーダ２２の他の処理に、支払いを処理してもよいことを知らせてもよい。支払いリーダ２２が支払いが処理されてはならないことを示す並列処理インジケータを受信すると、ファームウエア更新インストラクションは支払いリーダ２２の他の処理に、支払いを処理してはいけないことを知らせてもよい。
【００７６】
図４は、本開示のある実施の形態に係る、例示的マーチャントデバイス２９を示す。マーチャントデバイス２９は任意の適切な態様で実現されてもよいが、ある実施の形態では、マーチャントデバイス２９は、ユーザインタフェースを提供し、ひとつ以上の他のデバイスと通信する双方向電子デバイスであってもよい。双方向電子デバイスの例は、タブレット、スマートフォン、スマートウォッチ、デスクトップコンピュータ、ラップトップコンピュータ、カスタム電子デバイス、または本明細書で説明される機能を実行するために必要なユーザインタフェースおよび通信能力を有する任意の他の適切な電子デバイスを含む。
【００７７】
図４において特定のコンポーネントが特定の構成で描かれているが、マーチャントデバイス２９が追加のコンポーネントを含んでもよいこと、図4に示されるコンポーネントのうちのひとつ以上がマーチャントデバイス２９に含まれなくてもよいこと、およびマーチャントデバイス２９のコンポーネントが任意の適切な態様で再構成されうること、は理解されるであろう。ある実施の形態では、マーチャントデバイス２９は、処理ユニット２０２と、メモリ２０４と、インタフェースバス２０６と、電源２０８と、ユーザインタフェース２１０と、第１無線インタフェース２１２と、第２無線インタフェース２１４と、有線インタフェース２１６と、を含む。
【００７８】
ある実施の形態では、マーチャントデバイス２９は、マーチャントデバイス２９の必要動作を制御し行うよう構成された処理ユニット２０２およびメモリ２０４を含む。ある実施の形態では、処理ユニット２０２は、メモリ２０４に保持されてもよいインストラクションに基づいて、モバイルオペレーティングシステム、プログラムおよびアプリケーションのインストラクションを実行する汎用プロセッサであってもよい。メモリ２０４は本明細書で説明されるような任意の適切なメモリタイプまたはそれらの組み合わせを含んでもよく、これはインストラクションおよび他のデータを保持し、マーチャントデバイス２９のオペレーティングシステム、プログラムおよびアプリケーションの実行用のワーキングメモリを提供するためのものであり、例えばフラッシュメモリやＲＡＭメモリである。ある実施の形態では、メモリ２０４は、オペレーティングインストラクション２２０やポイントオブセールアプリケーションインストラクション２２２やファームウエア更新インストラクション２２４などのインストラクションの複数の集合を含んでもよい。
【００７９】
処理ユニット２０２は、メモリ２０４のインストラクションを実行することによって、マーチャントデバイス２９のひとつ以上の他のコンポーネントと相互作用し、それを制御してもよい。処理ユニット２０２はマーチャントデバイス２９の他のコンポーネントと任意の適切な態様で通信してもよいが、ある実施の形態では、処理ユニットはインタフェースバス２０６を用いてもよい。インタフェースバス２０６は、I2C、SPI、USB、UART、およびGPIOなどのひとつ以上の通信バスを含んでもよい。ある実施の形態では、処理ユニット２０２は、メモリのインストラクションを実行し、それらのインストラクションに基づいて、インタフェースバス２０６の通信バスを介してマーチャントデバイス２９の他のコンポーネントと通信してもよい。
【００８０】
マーチャントデバイス２９はまた電源２０８を含んでもよい。電源208は、ＡＣ電力を変換するための、および／または、マーチャントデバイス２９のコンポーネントによる使用のために複数のＤＣ電圧を生成するための、電力変換回路を含んでもよい。電源208が電池を含む場合、電池は物理的な電力接続を介して、または、誘導充電を介して、または、任意の他の適切な方法を介して、充電可能である。図4ではマーチャントデバイス２９の他のコンポーネントに物理的に接続されているようには描かれていないが、電源２０８はコンポーネントの要件にしたがって、マーチャントデバイス２９のコンポーネントに各種電圧を供給してもよい。
【００８１】
マーチャントデバイス２９はまたユーザインタフェース２１０を含んでもよい。ユーザインタフェース２１０は、マーチャントデバイス２９のユーザに、マーチャントデバイス２９で実行されているアプリケーションやプログラムと相互作用するための各種オプションを提供してもよい。例示的なユーザインタフェース２１０は、タッチスクリーンインタフェースや音声コマンドインタフェースやキーボードやマウスジェスチャ認識や任意の他の適切なユーザインタフェースやそれらの任意の組み合わせなどの任意の適切なユーザインタフェース用のハードウエアおよびソフトウエアを含んでもよい。ある実施の形態では、ユーザインタフェース２１０は、マーチャントデバイス２９で実行されているポイントオブセールアプリケーションなどのアプリケーションやプログラム用の双方向ユーザインタフェースを表示するタッチスクリーンインタフェースであってもよい。
【００８２】
マーチャントデバイス２９はまた複数の無線通信インタフェースを含んでもよい。無線通信インタフェースは、ブルートゥースクラシックやブルートゥースローエナジーやＷｉＦｉやセルラやショートメッセージサービス（ＳＭＳ）やＮＦＣや任意の他の適切な無線通信インタフェースやそれらの任意の組み合わせなどの無線通信インタフェースを提供するための任意の適切なハードウエアおよびソフトウエアを含んでもよい。ある実施の形態では、第１無線通信インタフェース２１２は主として支払いリーダ２２と通信する無線通信インタフェース（例えば、ブルートゥースローエナジーインタフェース）であってもよく、一方、第２無線通信インタフェース２１４は主として支払いサーバ４０の支払いサービスシステム５０と（例えばインターネットを介して）通信する無線通信インタフェース（例えば、ＷｉＦｉ）であってもよい。
【００８３】
マーチャントデバイスはまた有線インタフェース２１６を含んでもよく、有線インタフェース２１６は、ＵＳＢやライトニングやファイヤワイヤやイーサネットや任意の他の適切な有線通信インタフェースやそれらの任意の組み合わせなどの、他のデバイスや通信ネットワークとの有線通信のための任意の適切なインタフェースを含んでもよい。
【００８４】
メモリ２０４は、オペレーティングインストラクション２２０やポイントオブセールアプリケーションインストラクション２２２やファームウエア更新インストラクション２２４やマーチャントデバイス２９を動作させるための任意の他の適切なインストラクション（例えば、マーチャントデバイス２９のひとつ以上の他のアプリケーションやコンポーネントの動作に関するインストラクション）などの、マーチャントデバイス２９の処理動作を実行するためのインストラクションの複数の集合を含んでもよい。
【００８５】
オペレーティングインストラクション２２０は、内部通信や電力管理やＩ／Ｏデバイスの制御や通信デバイスの制御やマーチャントデバイス２９の他のハードウエアの制御や任意の他の適切なインストラクションやそれらの任意の組み合わせなどの、マーチャントデバイス２９の任意の適切な汎用動作を制御するためのインストラクションを含んでもよい。ある実施の形態では、オペレーティングインストラクションは、マーチャントデバイス２９で動作している大抵のドライバ、プログラムおよびアプリケーションと共にマーチャントデバイス２９のオペレーティングシステムにインストラクションを提供してもよい。
【００８６】
オペレーティングインストラクション２２０は、ユーザインタフェース２１０の動作を制御するためのインストラクションを含んでもよい。ユーザインタフェースは、オペレーティングインストラクション２２０やポイントオブセールアプリケーションインストラクション２２２やファームウエア更新インストラクション２２４のプログラムおよびアプリケーションのインストラクションにしたがい制御されてもよい。ある実施の形態では、ポイントオブセールアプリケーションインストラクション２２２は支払いリーダ２２のファームウエア更新についての情報を表示するためのインストラクションを含んでもよい。ファームウエア更新についての情報は、トランザクションが処理可能となる前にファームウエア更新が必要であることを示す情報や、所定の時刻までにファームウエア更新が行われなければならないことの通知や、ユーザが支払いリーダ２２に提供すべきファームウエア更新を選択できるようにするインタフェースや、ファームウエア更新の処理に関するステータス通知や、支払いリーダ２２のファームウエア更新に関する任意の他の適切な情報を含んでもよい。
【００８７】
オペレーティングインストラクション２２０はまた、支払いサーバ４０の支払いサービスシステム５０とのインタフェースとなり、かつ、支払いリーダ２２とのインタフェースとなるためのインストラクションを含んでもよい。支払いリーダ２２および／またはマーチャントデバイス２９で実行されているアプリケーションは支払いサービスシステム５０に（例えば、登録処理を介して）知られていてもよく、この場合、マーチャントデバイス２９はポイントオブセールアプリケーションインストラクションにしたがって支払いサービスシステム５０と共に支払いを処理してもよい。
【００８８】
ポイントオブセールアプリケーションインストラクション２２２はマーチャントデバイス２９においてポイントオブセールアプリケーションを実行するためのインストラクションを含む。処理ユニット２０２によって実行されると、ポイントオブセールアプリケーションインストラクション２２２は、マーチャントが顧客との支払いトランザクションを処理することを可能とする、双方向インタフェースの豊かな表示を提供してもよい。これらのインストラクションは、マーチャントまたは顧客が、購入商品を選択することや、販売税を計算することや、チップを処理することや、レシートを提供することや、値引きや特別オファーを生成することや、顧客ロイヤリティプログラムを処理することや、アイテムの在庫検索やデリバリ検索をすることや任意の他の適切な小売りオペレーションを行うことを可能とするカスタマイズされたインタフェースを含んでもよい。ある実施の形態では、ポイントオブセールアプリケーションインストラクションは、不正トランザクションおよび改ざん試行に関する情報の豊かな表現と、不正トランザクションおよび改ざん試行に対応してとるべき是正措置の選択肢と、を提供するためのインストラクションを含んでもよい。
【００８９】
ファームウエア更新インストラクション２２４は、本明細書で説明される支払いリーダ２２のファームウエアを更新することを助けるための任意の適切なインストラクションを含んでもよく、支払いリーダ２２からのファームウエアマニフェストに対する要求を支払いサーバ４０から受信し、マーチャントデバイスからファームウエアマニフェストを受信してそのファームウエアマニフェストをサーバに送信し、支払いサーバ４０から複数の圧縮ファームウエア更新ブロックと関連オフセットテーブルとを受信し、支払いリーダ２２に圧縮ファームウエア更新ブロックを送信し、支払いリーダ２２から部分的ファームウエアオフセットを受信し、部分的ファームウエアオフセットおよびオフセットテーブルに保持されるオフセットに基づいて支払いリーダ２２に送信されるべき複数のファームウエア更新ブロックの第２部分を決定することと、複数の圧縮ファームウエア更新ブロックの第２部分を支払いリーダ２２に送信することと、を含む。
【００９０】
ファームウエア更新インストラクション２２４は、マーチャントデバイス２９（または統合支払い端末２０）が、支払いサーバ４０、マーチャントデバイス２９で実行されているポイントオブセールアプリケーションまたはポイントオブセールアプリケーションに対するユーザ入力からのファームウエアマニフェストの要求に基づいて、ファームウエアマニフェストを支払いリーダに要求するためのインストラクションを含んでもよい。ある実施の形態では、マーチャントデバイス２９は、ファームウエアマニフェストを受信し、ファームウエアマニフェストの処理のためにそれを支払いサーバ４０に送信してもよい。
【００９１】
マーチャントデバイスは次いで、支払いサーバ４０（例えば、支払いサーバ４０の支払いサービスシステム５０）と通信してもよく、支払いリーダにファームウエア更新と関連情報とを提供してもよい。ある実施の形態では、ファームウエア更新は、複数の圧縮され暗号化されたファームウエア更新ブロックとして提供されてもよい。ある実施の形態では、関連情報はオフセットテーブルを含んでもよい。圧縮ファームウエア更新ブロックは支払いサーバ４０において非圧縮データのブロックによって生成されていてもよく、この場合、各非圧縮ブロックの開始、終了およびある実施の形態では中間のオフセットは圧縮ブロックのオフセットと関連付けられうる。このオフセットテーブルに基づいて、マーチャントデバイス２９や支払いリーダ２２などのデバイスは圧縮データまたは非圧縮データのいずれかについてのオフセット値を受信し、その情報を用いることで他方のデータタイプ（それぞれ、非圧縮または圧縮）の関連オフセットを見出してもよい。この態様では、支払いサーバ４０とマーチャントデバイス２９との間、および、マーチャントデバイス２９と支払いリーダ２２との間、でデータは圧縮形式で送信されてもよい。支払いリーダ２２はファームウエアを非圧縮形式で保持し、このデータからの部分的オフセットを用いることで、オフセットテーブルの関連性に基づいて圧縮ファームウエア更新ブロックを要求してもよい。ある実施の形態では、圧縮ファームウエア更新ブロックおよびオフセットテーブルは、支払いサーバ４０から受信された後、マーチャントデバイス２９において保持されてもよく、この場合、更新処理およびオフセットテーブルルックアップはファームウエア更新インストラクション２２４に基づいてマーチャントデバイス２９において行われてもよい。
【００９２】
ある実施の形態では、ファームウエア更新インストラクション２２４は、マーチャントデバイス２９が、支払いリーダ２２に、圧縮ファームウエア更新ブロックを送信するためのインストラクションを含んでもよい。マーチャントデバイス２９が支払いリーダ２２から部分的ファームウエアオフセットを受信すると、ファームウエア更新インストラクション２２４は、マーチャントデバイス２９が、支払いリーダ２２に送信すべき複数の圧縮ファームウエア更新ブロックのうちの第２部分を決定するためのインストラクションを含んでもよい。ある実施の形態では、ファームウエア更新インストラクション２２４は、支払いリーダ２２からの部分的ファームウエアオフセットに基づいてオフセットテーブルを用いて第２部分を決定するようマーチャントデバイスに指示してもよい。ある実施の形態では、マーチャントデバイス２９は、オフセットテーブルにおいて支払いリーダ２２からの部分的ファームウエアオフセットに対応する値を探すことによって、圧縮ファームウエア更新ブロックの第２部分を決定してもよい。例えば、例示的な実施の形態では、オフセットテーブルはオフセット値と第２部分（すなわち、複数の圧縮ファームウエア更新ブロックのうち、第２部分として送信されるべき長さを表す値）とを関連付けてもよい。ある実施の形態では、ファームウエア更新インストラクション２２４は、マーチャントデバイス２９が、支払いリーダ２２からの部分的ファームウエアオフセットとオフセットテーブルのオフセット値とをマッチングすることによって、第２部分を決定するためのインストラクションを提供してもよい。
【００９３】
図５は、本開示のある実施の形態に係る、支払いサーバ４０の例示的な支払いサービスシステム５０を示す。支払いサービスシステム５０は単一のサーバとして描かれているが、支払いサービスシステム５０の動作およびメモリは任意の適切な数のサーバに分散していてもよいことは理解されるであろう。図5において特定のコンポーネントが特定の構成で描かれているが、支払いサービスシステム50が追加のコンポーネントを含んでもよいこと、図5に示されるコンポーネントのうちのひとつ以上が支払いサービスシステム50に含まれなくてもよいこと、および支払いサービスシステム50のコンポーネントが任意の適切な態様で再構成されうること、は理解されるであろう。ある実施の形態では、支払いサービスシステム５０が本明細書で支払いサーバ４０に属する機能のいずれかを行うために必要なコンポーネントを含みかつ必要な構成を有してもよいことは理解されるであろう。ある実施の形態では、支払いサービスシステム50は、少なくともひとつの処理ユニット302と、メモリ304と、インタフェースバス306と、電源３０８と、通信インタフェース310と、アセットデータベース332と、を含む。
【００９４】
ある実施の形態では、支払いサービスシステム50は、支払いサービスシステム50の必要動作を制御し行うよう構成された処理ユニット302およびメモリ304を含む。ある実施の形態では、処理ユニット302は、メモリ304に保持されてもよいインストラクションに基づいて、サーバ用のオペレーティングシステム、プログラムおよびアプリケーションのインストラクションを実行する高速プロセッサであってもよい。メモリ304は本明細書で説明されるような任意の適切なメモリタイプまたはそれらの組み合わせを含んでもよく、これはインストラクションおよび他のデータを保持し、支払いサービスシステム50のオペレーティングシステム、プログラムおよびアプリケーションの実行用のワーキングメモリを提供するためのものである。ある実施の形態では、メモリは、オペレーティングインストラクション320や支払い処理インストラクション322やファームウエア更新インストラクション324を含むがそれらに限定されないインストラクションの複数の集合を含んでもよい。
【００９５】
処理ユニット302は、メモリ304のインストラクションを実行することによって、支払いサービスシステム50のひとつ以上の他のコンポーネントと相互作用し、それを制御してもよい。処理ユニット302は支払いサービスシステム50の他のコンポーネントと任意の適切な態様で通信してもよいが、ある実施の形態では、処理ユニット３０２はインタフェースバス306を用いてもよい。インタフェースバス306は、I2C、SPI、USB、UART、およびGPIOなどのひとつ以上の通信バスを含んでもよい。ある実施の形態では、処理ユニット302は、メモリ３０４のインストラクションを実行し、それらのインストラクションに基づいて、インタフェースバス306の通信バスを介して支払いサービスシステム50の他のコンポーネントと通信してもよい。
【００９６】
支払いサービスシステム５０はまた電源308を含んでもよい。電源308は、ＡＣ電力を変換するための、および／または、支払いサービスシステム50のコンポーネントによる使用のために複数のＤＣ電圧を生成するための、電力変換回路を含んでもよい。ある実施の形態では、電源３０８は、停電時のサービス中断を避けるために電池バックアップなどのバックアップシステムを含んでもよい。図5では支払いサービスシステム50の他のコンポーネントに物理的に接続されているようには描かれていないが、電源308はコンポーネントの要件にしたがって、支払いサービスシステム50のコンポーネントに各種電圧を供給してもよい。
【００９７】
支払いサービスシステム５０はまた通信インタフェース310を含んでもよい。通信インタフェース３１０は任意の適切な通信インタフェースまたはそれらの組み合わせを含んでもよいが、ある実施の形態では、通信インタフェース３１０はＷｉＦｉやセルラやイーサネットや光ファイバなどの高速通信インタフェースを用いてもよい。通信インタフェース３１０は、支払いリーダ２２のファームウエア更新に関するメッセージ（例えば、ファームウエアマニフェスト、複数のファームウエア更新ブロック、およびオフセットテーブル）を交換するために、支払い端末２０（例えば、マーチャントデバイス２９を介した支払いリーダ２２）とのセキュアな接続（例えば、ＴＬＳやＳＳＬを介して）を確立してもよい。通信インタフェース３１０はまた、トランザクション処理サーバなどの支払いサーバ４０の他のサーバと通信してもよく、それらはある実施の形態では、支払いサービスシステム５０から離れたところに配置されていてもよく、支払いサービスシステム５０を制御する主体とは異なる主体により運営されていてもよい。例えば、ある実施の形態では、支払いサービスシステム５０は支払いリーダ２２、マーチャントデバイス２９、またはポイントオブセールアプリケーション２２２のうちのひとつ以上を提供する主体によって運営されていてもよい。トランザクション処理サーバはマーチャント、イシュア、または顧客の銀行のうちのひとつ以上に関連付けられ、かつそれによって運営されていてもよい。
【００９８】
メモリ304は、オペレーティングインストラクション320や支払いインストラクション322やファームウエア更新インストラクション324や支払いサービスシステム５０を動作させるための任意の他の適切なインストラクション（例えば、支払いサービスシステム50のひとつ以上の他のアプリケーションやコンポーネントの動作に関するインストラクション）などの、支払いサービスシステム50の処理動作を実行するためのインストラクションの複数の集合を含んでもよい。
【００９９】
オペレーティングインストラクション320は、内部通信や電力管理や通信デバイスの制御や支払いサービスシステム50の他のハードウエアの制御や任意の他の適切なインストラクションやそれらの任意の組み合わせなどの、支払いサービスシステム50の任意の適切な汎用動作を制御するためのインストラクションを含んでもよい。ある実施の形態では、オペレーティングインストラクションは、支払いサービスシステム50で動作している大抵のドライバ、プログラムおよびアプリケーションと共に支払いサービスシステム50のオペレーティングシステムにインストラクションを提供してもよい。
【０１００】
オペレーティングインストラクション320はまた、マーチャントデバイス２９とのインタフェースとなるためのインストラクションを含んでもよい。ある実施の形態では、支払いサービスシステム５０は通信インタフェース３１０を介してマーチャントデバイス２９と通信してもよい。オペレーティングインストラクション３２０は、処理ユニット３０２によって実行された場合、これらの通信を制御し、ＴＬＳやＳＳＬや鍵に基づき暗号化されたデータとしてなどの手順を実装することによってセキュアな通信を提供するインストラクションを含んでもよい。
【０１０１】
支払い処理インストラクション３２２は支払いを処理するためのインストラクションを含み、マーチャントデバイス２９、支払いリーダ２２（例えば、マーチャントデバイス２９を介して）、および／またはトランザクション処理サーバに伝達されるメッセージの内容を制御してもよい。ある実施の形態では、支払い処理インストラクションは、支払いリーダ２２およびインストールされたポイントオブセールアプリケーション２２２を有するマーチャントデバイス２９のそれぞれについての情報を含んでもよい。量やクレジットカード番号などの支払い情報をトランザクション処理システムに提供し、マーチャントに応答を返すことなどの支払い処理機能を実行することに加えて、支払いサービスシステム５０はまた、マーチャントデータの複雑な解析を実行し、それを用いてマーチャント（例えば、複数の場所で複数のマーチャントデバイス２９を運用するマーチャント）にレポートやメトリックや他のデータを提供してもよい。支払い処理インストラクション３２２はまた、支払いデバイス１０、支払いリーダ２２またはマーチャントデバイス２９のうちのひとつ以上によって提供されるデータを暗号化および復号するための共有秘密鍵や公開鍵／秘密鍵ペアの鍵などの暗号化鍵にアクセスするためのインストラクションを含んでもよい。
【０１０２】
ファームウエア更新インストラクション３２４は、支払いサービスシステム５０と通信する支払いリーダ２２にファームウエア更新を提供する（例えば、マーチャントデバイス２９およびネットワーク３０を介して支払いリーダ２２に更新を送信する）ためのインストラクションを含んでもよい。ファームウエア更新インストラクション３２４は本明細書では支払いリーダ２２にファームウエア更新を提供するものとして説明されるが、これらのインストラクションは、支払い端末２０やマーチャントデバイス２９や無線通信デバイスやファームウエア更新を必要とする任意の他の適切なデバイスなどの任意の適切なデバイスにファームウエアを提供してもよいことは理解されるであろう。また、本明細書での議論は支払いサービスシステム５０およびマーチャントデバイス２９の両方での処理を含むが、ファームウエア更新インストラクション３２４のいくらかまたは全ての側面がマーチャントデバイス２９において実行されてもよいこと、ならびに、ファームウエア更新インストラクション２２４のいくらかまたは全ての側面が支払いサービスシステム５０において実行されてもよいことは理解されるであろう。
【０１０３】
ある実施の形態では、数千または数百万もの支払いリーダや同様のデバイスが支払いサービスシステム５０と通信し、例えばソフトウエアのバグを治すために、改善された性能を提供するために、新たな支払い標準や既存標準に対する変更を実装するために、セキュリティ問題を解決するために、および多くの他の理由によって、ときどき更新する必要があるファームウエアを含んでもよい。
【０１０４】
ある実施の形態では、ファームウエア更新インストラクション324は、支払いリーダ２２から、ファームウエアに関する情報（例えばファームウエアマニフェスト）を受信するためのインストラクションを含んでもよい。ある実施の形態では、支払いサービスシステム５０は、例えばファームウエアのバージョンが最新か判定するために定期的に、または支払いリーダ２２のひとつ以上のコンポーネントに対するファームウエア更新に対する大きなアップグレードの後に、支払いリーダにファームウエア情報を要求してもよい。ある実施の形態では、支払いリーダ２２の異なるバージョンは異なるハードウエアを有してもよく、この場合、支払いサービスシステム５０は異なるデバイス用の異なるファームウエアを維持しなければならない。ある実施の形態では、ファームウエア情報（例えば、ファームウエアマニフェスト）は、支払いサーバからの要求を必要とすること無く、例えば各支払いトランザクションと共に、定期的に、電力投入ごとに、または任意の他の適切なタイミングで、支払いリーダ２２によって送信されてもよい。
【０１０５】
ある実施の形態では、ファームウエア更新インストラクション324は、支払いサービスシステム５０に（例えば、アセットデータベース３３２に）保持されるファームウエアにアクセスするためのインストラクションを含んでもよい。アセットデータベース３３２は支払いリーダ２２のファームウエアのバージョンに関する情報を大規模に保持し、アセットデータベース３３２に保持される情報は定期的に更新されてもよい。ある実施の形態では、多くのタイプの支払いリーダ２２があってもよく、支払いリーダ２２の各タイプはメモリに保持されるファームウエアを有してもよい異なるコンポーネントを有してもよい。アセットデータベース３３２は情報を含んでもよく、ファームウエア更新インストラクション３２４がこの情報を用いることで支払いリーダ２２のメモリ内のファームウエアが更新を必要とするか否かを判定することができる。例示的な実施の形態では、アセットデータベース３３２はファームウエア更新インストラクション３２４を用いて抽出可能なファームウエア（例えば、非圧縮ファームウエア）を含んでもよい。例示的な実施の形態では、特定の支払いリーダ２２のファームウエアマニフェストに基づいて支払いリーダの更新が必要であると判定された場合、アセットデータベース３３２に保持されるファームウエア更新が処理ユニット３０２によってアクセスされてもよい。アセットデータベース３３２に保持される情報は、ファームウエア更新位置やファームウエアのバージョンやソフトウエアのバージョンやファームウエア更新ブロックや支払いリーダのタイプやファームウエアマニフェスト情報などの任意の適切な情報を含む。
【０１０６】
ある実施の形態では、ファームウエア更新インストラクション324は、支払いリーダ２２内のファームウエアが更新を必要としているかを判定するためのインストラクションを含んでもよい。ある実施の形態では、ファームウエア更新インストラクション３２４は、支払いリーダ２２からのファームウエアマニフェスト内の情報と、アセットデータベース３３２に保持されているそのタイプの支払いリーダ２２に適するファームウエアについての情報と、を比較することによって、支払いリーダ２２内のファームウエアが更新を必要としているかを判定するためのインストラクションを提供してもよい。例えば、ある実施の形態では、支払いサービスシステム５０は、ファームウエア更新インストラクション３２４を用いることにより、ファームウエアマニフェスト内の情報に基づいて支払いリーダ２２のファームウエアのバージョンを特定してもよい。支払いサービスシステム５０は、ファームウエアマニフェストによって示されるファームウエアのバージョンを記憶し、その特定の支払いリーダタイプのファームウエアが更新を必要とするかを示す情報にアクセスするかそうでなければその情報を探してもよい。一例として、ある実施の形態では、処理ユニット３０２は、ファームウエア更新インストラクション３２４を用いてアセットデータベース３３２に保持されるデータにアクセスし、ファームウエアマニフェストに示されるファームウエアのバージョンと、アセットデータベース３３２に保持される支払いリーダ２２のファームウエアのバージョンと、を比較してもよい。ある実施の形態では、処理ユニット３０２は、ファームウエア更新インストラクション３２４を実行することによって、支払いリーダ２２に保持されるファームウエアが更新を必要とする（例えば、アセットデータベース３３２に保持されるその支払いリーダ２２の最新バージョンよりも古いファームウエアバージョンである）ことをファームウエアマニフェストが示す場合に、ファームウエア更新が必要であると決定してもよい。ファームウエア更新インストラクション３２４を用いることで、更新されなければならない支払いリーダ２２に保持されるファームウエアのバージョンを特定することができ、アセットデータベース３３２に保持されるファームウエア更新を記憶することで、支払いリーダ２２に適切なファームウエア更新を送信することができる。
【０１０７】
アセットデータベース３３２に保持されるデータの解析は任意の適切な態様で行われてもよいが、ある実施の形態では、データを解析するためにルックアップ手法が用いられてもよい。支払いサービスシステム５０は支払いリーダ２２から受信したファームウエアマニフェストに基づいてファームウエア更新が必要であると決定し、それにしたがい適切なファームウエア更新にアクセスしてもよい。支払いサービスシステム５０は同様に、支払いサービスシステム５０によって受信されたメッセージに基づいて、アセットデータベース３３２に保持されるデータを更新してもよい。ある実施の形態では、支払いサービスシステム５０は、アセットデータベース３３２に保持されているバージョンを置き換えるファームウエアの新たなバージョンを受信してもよい。一例として、支払いサービスシステム５０は、支払いリーダ２２のファームウエア更新を含むメッセージを（例えば、支払いサーバ４０、支払いサーバ５０、または支払いリーダ２２を運営する主体から）受信してもよい。ある実施の形態では、支払いサービスシステム５０は、アセットデータベース３３２に新たなファームウエア更新を格納してもよく、ある実施の形態では、これはファームウエア更新をブロックの集合として格納すること（例えば、ファームウエア更新を所定サイズまたは可変サイズのブロックに分割することによって）を含んでもよい。したがって、例示的な実施の形態では、支払いサービスシステム５０は、支払いリーダ２２の最新ファームウエアを表すデータを受信してアセットデータベース３３２に格納し、それにしたがい本明細書で説明されるようなデータに基づいて支払いリーダ２２のファームウエアを更新してもよい。
【０１０８】
ファームウエア更新インストラクション３２４はまた、支払いリーダ２２に送信されるべきファームウエアをブロックに分割し、それらのブロックを圧縮し、それらのブロックを暗号化するためのインストラクションを含んでもよい。複数のファームウエア更新ブロックは、可逆圧縮法、不可逆圧縮法、または他の圧縮法を含む任意の適切な圧縮手法を用いて圧縮されてもよい。ある実施の形態では、ファームウエア更新インストラクション324は、ファームウエア更新の全体を圧縮することで、それが支払いリーダ２２に（例えば、ネットワーク３０を用いてマーチャントデバイス２９を介して）送信されるようにするためのインストラクションを含んでもよい。ある実施の形態では、ファームウエア更新インストラクション３２４は、複数のファームウエア更新ブロックを、ファームウエア更新の全体を表す同数の圧縮ファームウエア更新ブロックへと圧縮してもよい。すなわち、元の非圧縮データブロックと圧縮データブロックとの間に一対一対応があるということである。ある実施の形態では、複数のファームウエア更新ブロックにおけるブロックの数と、ファームウエア更新インストラクション３２４による圧縮の後の圧縮ファームウエア更新ブロックの数と、は同じであってもよい。
【０１０９】
ファームウエア更新インストラクション３２４はまた、本明細書で説明されるように、元の（非圧縮）ファームウエア更新ブロック内のデータの位置と、圧縮ファームウエア更新ブロック内のデータの位置と、の比較に基づいてオフセットテーブルを生成するためのインストラクションを含んでもよい。オフセットテーブルは、各非圧縮ブロックの開始および終了のオフセットと、その対応する圧縮ブロックのオフセットと、を関連付けてもよく、ある実施の形態では、データブロック内の様々な位置を互いに関連付けてもよく、この場合、支払いリーダ２２におけるファームウエア更新中に、対応するデータブロックをより高い精度で（例えば、マーチャントデバイス２９が）特定することができる。
【０１１０】
ある実施の形態では、ファームウエア更新インストラクション324は、マーチャントデバイス29に、オフセットテーブルおよび複数の圧縮ファームウエア更新ブロックを送信するためのインストラクションを含んでもよい。例示的な実施の形態では、ネットワーク３０を介して支払いサービスシステム５０の通信インタフェース３１０を用いてマーチャントデバイス２９に、複数の圧縮ファームウエア更新ブロックおよびオフセットテーブルを送信してもよいが、支払いサービスシステム５０の任意の適切なコンポーネントが用いられてもよい。ある実施の形態では、ファームウエア更新インストラクション324は、本明細書で説明されるように、支払いサービスシステム５０によって生成されたオフセットテーブルと、マーチャントデバイス２９による相関のための複数の圧縮ファームウエア更新ブロックとを関連付けるためのインストラクションを含んでもよい。
【０１１１】
ある実施の形態では、ファームウエア更新インストラクション324は、支払いリーダ用のファームウエア更新手順を管理するためのインストラクションを含んでもよい。ファームウエア更新手順を管理することは任意の適切な機能を含んでもよいが、ある実施の形態では、ファームウエア更新手順を管理することは、特定のファームウエアアセットのための（例えば、支払いリーダの特定のコンポーネントおよび機能に関連付けられたアセットのための）許容可能な更新順序を決定することと、適切な態様で（例えば、動作しないファームウエアの組み合わせを支払いリーダ２２に提供することを避ける適切な順序で）更新を提供することと、支払いリーダ２２がファームウエア更新が生じている間に支払いの処理を継続してもよいか否かを（例えば、支払いリーダ２２に提供される並列処理インジケータに基づいて）判定することと、を含んでもよい。
【０１１２】
本明細書でもちいられる場合、支払いリーダ２２の多くの異なるコンポーネントはそれぞれが自身のファームウエアを有してもよく、この場合、ファームウエアの各部分が必要に応じて個々に更新されてもよい。しかしながら、異なる複数のリーダタイプがあり、それぞれが利用パターンに基づいて異なる間隔で更新されるものであり、各支払いリーダの動作条件に基づいてアドホック的態様で更新が生じる（例えば、この場合、ファームウエア更新の部分集合のみが特定のパワーサイクル中に更新されてもよい）ものでもあり、これらにより、任意の時刻において多くの支払いリーダにおいて多くのバージョンのファームウエアが存在することとなろう。本明細書で説明されるように、ファームウエア更新中の支払いリーダ２２による支払いの処理を禁止することは望ましくない。なぜならば、そのようにするとエンドユーザを頻繁に遮ることとなるからである。したがって、可能な場合はいつでも、ファームウエアアセットの部分集合のみが最新である場合や、支払いリーダ２２におけるファームウエアアセットが最新でない場合でも、支払いリーダ２２を動作可能とすることが望ましい。
【０１１３】
支払いリーダ２２のファームウエアアセットのどれも最新ではないかまたはいくつかのみが最新である場合に支払いトランザクションの処理を許すことが望ましいが、ファームウエアアセットの組み合わせの相互運用性に基づく問題が生じうる。例えば、例示的な支払いリーダは、リーダチップ１００、トランザクションチップ１１４の汎用処理ユニット１２４、トランザクションチップ１１４の暗号化処理ユニット１２５、無線インタフェース１０８の処理ユニット１８０、ＦＰＧＡ１１２、トランザクションチップ１１４の汎用プロセッサ１２４が実行するデータ認証インストラクション１６８（例えば、ＴＭＳ−ＣＡＰＫインストラクション）、のそれぞれ用のファームウエアアセットを含んでもよい。これら六つのファームウエアアセットの任意の組み合わせが許される場合、ファームウエアアセットの可能な組み合わせが数千にのぼることとなり、その数はこれらのアセットについてリリースされたファームウエアのバージョンの数に依存する。支払いトランザクションは高度にセンシティブな金融情報の移送を含むので、テストおよび検証を経ていないファームウエアのバージョンの組み合わせを有することは許容されない。可能な組み合わせが数千もあると、多くのファームウエアのバージョンの相互運用性を保証することは不可能である。したがって、ファームウエア更新インストラクション３２４は、ほとんどの状況下で、中間的なファームウエア状態（すなわち、支払いリーダ２２におけるいくつかではあるが全てではないファームウエアアセットの更新）の処理を可能とする構成をファームウエア更新に与えてもよい。
【０１１４】
アセットデータベース３３２は複数のファームウエアアセットについてのファームウエアバンドルのリストを保持してもよい。ある実施の形態では、各ファームウエアバンドルはファームウエアアセットの特定のリリースを定義してもよい。例示的なファームウエアバンドルは、ファームウエアアセットのそれぞれのバージョンを含んでもよく、この場合、各バンドルはファームウエアアセットの組み合わせの許容可能なリリースを含む。支払いサービスシステム５０が支払いリーダからファームウエアマニフェストを受信すると、それはファームウエアマニフェストのファームウエアバージョンと、支払いリーダのファームウエアバージョンと、を比較してもよい。ファームウエアマニフェスト内で示されているファームウエアバージョンの組み合わせがファームウエアバンドルのうちのひとつに対応する場合、支払いリーダは許容可能なファームウエアバージョンで動作しており、したがって、ファームウエア更新インストラクション３２４が支払い処理を止めることは、ブロッキングバンドルの場合を除いて、必要でない。
【０１１５】
ファームウエア更新インストラクション３２４は、ブロッキングバンドル（例えば、それがブロッキングであるとのインジケータを有する、アセットデータベース３３２に保持されるバンドル）の場合にファームウエア更新を処理するためのインストラクションを含んでもよい。本明細書で説明されるように、所定のファームウエア更新は、セキュリティや支払い処理機能などの重要な機能に対する更新を含んでもよい。そのような重要な更新は、重要なファームウエアのファームウエア更新が完了するまでは支払いリーダは更新を処理することを許されるべきではないようなものであってもよい。ある実施の形態では、ブロッキング更新はバンドル全体に適用されてもよく、この場合、バンドル全体が支払いリーダにおいて更新されるまで、支払いの処理は継続しない（例えば、支払いサービスシステム５０は支払いリーダ２２からの支払いを処理せず、支払いの処理を停止すべきであることを示す並列処理インジケータを支払いリーダ２２に送信してもよい）。ある実施の形態では、バンドル内のファームウエアアセットの部分集合がブロッキングファームウエアアセットとして示されてもよく、この場合、ファームウエアアセットのその部分集合が更新されると支払い処理が再開されてもよい。
【０１１６】
ファームウエア更新インストラクション３２４は、例えばバンドル内のファームウエアアセットの順序に基づいて、順序通りのファームウエア更新を強制するためのインストラクションを含んでもよい。各バンドルは順序付けられていてもよく、その順序はファームウエアアセットのタイプ（すなわち、ファームウエアアセットが関連付けられている支払いリーダ２２のコンポーネント）に基づいてもよい。ファームウエアバンドル内のファームウエアアセットの順序は各ファームウエアアセットの優先度を表してもよく、この場合、ファームウエア更新インストラクション３２４は、支払いサービスシステムに、最も高い優先度のファームウエアアセットを最初に支払いリーダ２２に送信させ、などなどで、最も低い優先度のファームウエアアセットにいたり、それは他の全てのファームウエアアセットが更新されてしまった後にのみ、支払いリーダ２２に提供される。この順序付けは、バンドル間の許可可能中間状態の部分集合の制限を強制してもよい。支払いリーダ２２の例示的な許可可能中間状態は、バンドルの順序により要求されるように適切な順序で二つのバンドル間で部分的に更新されるような状態であってもよい。例えば、例示的な支払いリーダ２２のある実施の形態では、ファームウエアアセットはバンドル内で以下の様に順序付けられてもよい。ここで、（１）は最も高い優先度を、（６）は最も低い優先度を、それぞれ有する。
(１) リーダチップ１００のファームウエア
(２) トランザクションチップ１１４の汎用処理ユニット１２４のファームウエア
(３) トランザクションチップ１１４の暗号処理ユニット125のファームウエア
(４) 無線インタフェース108の処理ユニット180のファームウエア
(５) ＦＰＧＡ１１２とのインタフェースとなるためのファームウエア
(６) トランザクションチップ１１４の汎用処理ユニット１２４によって実行されるデータ認証インストラクション１６８（例えば、ＴＭＳ−ＣＡＰＫインストラクション）のファームウエア
【０１１７】
上述の例では、新たなバンドルへの更新が必要な場合はいつでも、（１）のファームウエアが最初に更新される。更新が完了すると、（２）のファームウエアが更新され、などであり、これが、支払いリーダにおいて、（１）から（６）までの全てがファームウエアバンドルに示されるファームウエアアセットのバージョンに更新されるまで、続く。
【０１１８】
本明細書で説明されるように、ある実施の形態では、ファームウエア更新は、ファームウエアバンドルのアセットのうちのいくつかのみが支払いリーダにおいて更新されるように、中断されてもよい。支払いリーダ２２がそのファームウエアマニフェストを支払いサービスシステム５０に提供する次の機会に、支払いサービスシステムは、ファームウエア更新インストラクション３２４に基づいて、支払いリーダ２２のファームウエアがバンドル間の遷移状態にあると決定してもよい。バンドルが強制順序にしたがって（例えば、上述の例では（１）−（６）の順序で）提供された場合、この遷移状態は、支払いリーダが支払いトランザクションの処理を続けることができ（例えば、次のバンドルがブロッキングバンドルではないと仮定する）、一方で次のファームウエアバンドルに準拠すべくファームウエアアセットの更新を終了できる、許可可能状態にあってもよい。順序付けは、二つのバンドルの間の遷移について限られた数の方法しかないことを要求し、したがって、動作可能であることを証明しなければならないファームウエアバージョンの組み合わせの数を制限することができる。したがって、各遷移状態が、支払いリーダがトランザクションを処理することが許される状態であるかを検証することができる。
【０１１９】
支払いリーダ２２がファームウエアマニフェストを提供し、その中でファームウエアがファームウエアバンドルにも遷移状態にも即さない（すなわち、バンドル内のアセットの順序によって強制される要求順序に従うか）場合、支払いリーダ２２のファームウエアは非準拠状態にあると決定され、この場合、ファームウエア更新インストラクションに基づいて、支払いリーダ２２のファームウエアの全てが最新のバンドルに更新されてしまうまで何の処理も生じないであろう。
【０１２０】
バンドル、ブロッキング更新、遷移状態、および非準拠状態に基づいて、ファームウエア更新インストラクションは、更新のバンドルを選択し、ファームウエア更新インストラクション３２４に基づいて支払いリーダ２２に並列処理インジケータを提供してもよい。本明細書で説明されるように、支払い処理システム５０は支払いリーダ２２からファームウエアマニフェストを受信してもよい。支払い処理システム５０はまた、許可可能バンドルのリストを含むアセットデータベース３３２を含んでもよい。支払い処理システム５０は、まず、ファームウエアマニフェストのファームウエアバージョンがファームウエアバンドルまたは遷移状態に対応するか否かを特定してもよい。そうでなければ、支払いリーダ２２は非準拠状態にあり、メッセージ（例えば、並列処理インジケータ）を支払いリーダ２２に送信することで、支払いトランザクションの処理を停止する。現在の状態がファームウエアバンドルまたは遷移状態に対応する場合、支払いリーダ２２において、アセットデータベースのなかに後続のブロッキングバンドルがない限り、処理を続けることができる。後続のブロッキングバンドルがあると、メッセージ（例えば、並列処理インジケータ）を支払いリーダ２２に送信することで、支払いトランザクションの処理を停止する。
【０１２１】
ファームウエア更新インストラクション324はまた、支払いリーダ２２に提供すべきファームウエアの次のバンドルを選択するためのインストラクションを含んでもよい。後続のバンドルがブロッキングバンドルである場合、ファームウエアを最新のブロッキングバンドルに更新する必要がある。このブロッキング更新が完了するまで支払いトランザクションの処理が生じないので、次の更新は最新のブロッキング更新へと直接に更新してもよい。最新のブロッキング更新の後に後の非ブロッキング更新がある場合、ある実施の形態では、次の更新は最新のバンドルへと直に更新してもよい。支払いリーダのファームウエアがバンドルまたは遷移状態に対応し、後続のブロッキング更新がない実施の形態では、遷移はバンドルのシーケンスにおける次のバンドルへのものであってもよく、この場合、ファームウエア更新が全てのバンドルについて完了しなかった場合、支払いリーダ２２はファームウエア更新処理中でも支払いを許す遷移状にあり続けるであろう。
【０１２２】
上述の構成およびデバイスに照らし、開示される主題にしたがい実装されうる方法は、図６−８のフローチャートを参照することでより良く理解されるであろう。説明の簡単化を目的として、方法が一連のステップとして示され説明されるが、そのような図示または対応する説明はステップの順番に限定されるものではなく、いくつかのステップが本明細書で図示され説明されるものとは異なる順番でおよび／または他のステップと同時に生じうることは理解され認識されるべきである。フローチャートを介して図示される任意のシーケンシャルでないまたは枝分かれのフローは、同じまたは同様の結果を達成する種々の他の枝分かれやフローパスやステップの順番が実装可能であることを示すものとして理解されるべきである。さらに、以下に説明される方法を実装するために、図示される全てのステップが要求されるわけではない場合がある。
【０１２３】
図６は、本開示のある実施の形態に係る、支払いシステムの支払いリーダ２２にファームウエア更新を提供するデータフロー４１０を示す。ある実施の形態では、図６に示されるように、ステップ４００は、支払いリーダ２２、マーチャントデバイス２９、および支払いサーバ４０（すなわち、支払いサービスシステム５０によって）などの支払い端末デバイスによって行われる。ある実施の形態では、これらのステップは特定のデバイスによって行われるように描かれているが、デバイス間でのステップの割り当てが任意の適切な態様で変更されてもよいことや、ステップを行うデバイスの数が任意の適切な態様で変更されてもよいことは、理解されるであろう。
【０１２４】
ステップ５１１で、支払いサーバ４０は、図５を参照して本明細書で説明された通り、支払いリーダ２２からのファームウエアマニフェストの要求を、マーチャントデバイス２９に、送信してもよい。より具体的には、支払いサービスシステム５０は、例えばファームウエアのバージョンが最新か判定するために定期的に、または支払いリーダ２２のひとつ以上のコンポーネントに対するファームウエア更新に対する大きなアップグレードの後に、支払いリーダ２２にファームウエア情報を要求してもよい。ステップ５１１での要求はある実施の形態ではネットワーク３０を介して送信されてもよいが、要求を伝達する任意の適切な手段が用いられてもよい。ステップ５１２で、マーチャントデバイス２９は、支払いサーバ４０、マーチャントデバイス２９で実行されているポイントオブセールアプリケーションまたはポイントオブセールアプリケーションに対するユーザ入力からなどの要求を受信し、その要求を支払いリーダ２２に転送してもよい。ある実施の形態では、支払いサーバ４０は、図２を参照して本明細書で説明された通り、支払い端末２０にその要求を送信してもよい。
【０１２５】
ステップ５１３で、支払いリーダ２２は、支払いリーダ２２のコンポーネントに、そのコンポーネントのメモリに保持されるファームウエアについての情報を要求してもよく、そのような情報は、ファームウエアのバージョンやファームウエアの名称やハッシュ値やＣＲＣやコードのセクションやファームウエアを特定する任意の他の適切な方法などの、ファームウエアの情報を特定するために用いられてもよい情報を含んでもよい。支払いリーダ２２は次いでステップ５１３で、ステップ５１２で受信された要求に応じて、ファームウエアマニフェストを生成してもよい。ある実施の形態では、ステップ５１３で生成されるファームウエアマニフェストは、無線インタフェース１０８（例えば、無線ファームウエア）、リーダチップ１１０（例えば、オペレーティングファームウエア）、トランザクションチップ１１４の信号調整インストラクション１７０（例えば、信号調整ファームウエア）、トランザクションチップ１１４のデータ認証インストラクション１６８（例えば、データ認証ファームウエア）、トランザクションチップ１１４の汎用メモリ１２６のファームウエア（例えば、トランザクションファームウエア）、およびトランザクションチップ１１４の暗号化メモリのファームウエア（例えば、暗号化ファームウエア）、などの、支払いリーダ２２のコンポーネントのいずれかのメモリに保持されるファームウエアについての情報を含んでもよい。図３を参照して本明細書で説明されるように、支払いリーダ２２は支払いサーバ４０から受信した要求に応じて伝送情報を処理してもよい。ステップ５１４で、支払いリーダは、無線インタフェース１０８または有線インタフェース１１０を介してマーチャントデバイス２９にファームウエアマニフェストを送信してもよいし、任意の他の適切な態様でファームウエアマニフェストを送信してもよい。他の実施の形態では、支払いリーダ２２は、支払いサーバ４０からの要求を必要とすること無く、ファームウエアマニフェストを生成し、マーチャントデバイス２９にそれを送信してもよい。マーチャントデバイス２９は、次いで、ステップ５１５で、例えばネットワーク３０を用いて支払いサーバにファームウエアマニフェストを送信してもよい。
【０１２６】
ステップ５１６で、支払いサーバ４０は、ファームウエアマニフェストに基づいて、支払いリーダ２２のファームウエアが更新を必要としているか否かを判定してもよい。ある実施の形態では、ステップ５１６の判定は、支払いリーダ２２からのファームウエアマニフェスト内の情報と、アセットデータベース３３２に保持されているそのタイプの支払いリーダ２２に適するファームウエアについての情報と、を比較することによって、行われてもよい。図５を参照して述べた通り、支払いサーバ４０は、ファームウエア更新インストラクション３２４を用いることにより、ファームウエアマニフェスト内の情報に基づいて支払いリーダ２２のファームウエアのバージョンを特定してもよい。支払いサーバ４０は、ファームウエアマニフェストによって示されるファームウエアのバージョンを記憶し、その特定の支払いリーダタイプのファームウエアが更新を必要とするかを示す情報にアクセスするかそうでなければその情報を探してもよい。ある実施の形態では、支払いサーバ４０は、支払いリーダ２２に保持されるファームウエアが更新を必要とする（例えば、アセットデータベース３３２に保持されるその支払いリーダ２２の最新バージョンよりも古いファームウエアバージョンである）ことをファームウエアマニフェストが示す場合に、ファームウエア更新が必要であると決定してもよい。ある実施の形態では、支払いサーバ４０は、ファームウエアマニフェストに基づいて、ファームウエア更新が不要であると判定された場合、なにもしなくてもよい。ある実施の形態では、支払いサーバ４０は、ファームウエアマニフェストに基づいて支払いリーダ２２のファームウエアを更新する必要があると判定し、ステップ５１７で複数のファームウエア更新ブロック（例えば、所定サイズまたは可変サイズのブロックに分割され、アセットデータベース３３２に格納されたファームウエア更新）にアクセスしてもよい。ある実施の形態では、ステップ５１７でアクセスされるファームウエア更新ブロックは、図５を参照して説明された通り、支払い端末２２についての最新のファームウエアであってもよい。
【０１２７】
ステップ５１８で、支払いサーバ４０は、ステップ５１７でアクセスされ支払いリーダ２２に送信されるべきファームウエアを複数のファームウエア更新ブロックへと分割し、圧縮し、および暗号化してもよい。圧縮は、図５を参照して説明したような、任意の適切なデータ圧縮方法であってもよい。ある実施の形態では、ステップ５１８で行われる圧縮は、複数のファームウエア更新ブロックを、ファームウエア更新の全体を表す同数の圧縮ファームウエア更新ブロックへの圧縮であってもよい。すなわち、元の非圧縮データブロックと圧縮データブロックとの間に一対一対応があるということである。ステップ５１９で、支払いサーバ４０は、本明細書で説明されたように、複数の圧縮ファームウエア更新ブロックに関連付けられたオフセットテーブルを生成してもよい。特に、ステップ６１９で生成されるオフセットテーブルは、本明細書で説明されるように、元の（非圧縮）ファームウエア更新ブロック内のデータの位置（すなわち、ブロックがアセットデータベース３３２に格納されたときのもの）と、圧縮ファームウエア更新ブロック内のデータの位置と、の比較に基づいて生成されてもよい。図５を参照して説明したように、オフセットテーブルは、各非圧縮ブロックの開始および終了のオフセットと、その対応する圧縮ブロックのオフセットと、を関連付けてもよく、ある実施の形態では、データブロック内の様々な位置を互いに関連付けてもよく、この場合、支払いリーダ２２におけるファームウエア更新中に、対応するデータブロックをより高い精度で（例えば、マーチャントデバイス２９が）特定することができる。
【０１２８】
ステップ５２０で、支払いサーバ４０は、例えば通信インタフェース３１０を用いてネットワーク３０を介して、マーチャントデバイス２９へ、オフセットテーブルと複数の圧縮ファームウエア更新ブロックとを送信してもよい。本明細書で説明されるように、ある実施の形態では、ファームウエア更新は、複数の圧縮され暗号化されたファームウエア更新ブロックおよび圧縮され暗号化されたオフセットテーブルとして提供されてもよい。マーチャントデバイス２９が支払いサーバ４０からオフセットテーブルと複数の圧縮ファームウエア更新ブロックとを受信すると、それはステップ５２１でマーチャントデバイス２９のメモリにそれらを格納してもよい。ある実施の形態では、圧縮ファームウエア更新ブロックおよびオフセットテーブルは、支払いサーバ４０から受信された後、マーチャントデバイス２９において保持されてもよく、この場合、更新処理およびオフセットテーブルルックアップはマーチャントデバイス２９において行われてもよい。
【０１２９】
マーチャントデバイス２９は、ステップ５２２で支払いリーダ２２に複数の圧縮ファームウエア更新ブロックのうちの第１部分を送信することによって、支払いリーダ２２への複数の圧縮ファームウエア更新ブロックの送信を開始してもよい。ステップ５２３で、支払いリーダ２２は第１部分を受信し、解凍してしまっていてもよい。図３を参照して本明細書で説明されるように、復号および解凍は任意の適切な暗号化方法および圧縮方法に基づく任意の適切な態様で行われてもよいが、ある実施の形態では、暗号化は公開鍵暗号化方法（例えば、トリプルＤＥＳやＲＳＡ）や対称鍵暗号化方法（例えば、Blowfish、Twofish、またはアドバンスドエンクリプションスタンダード（ＡＥＳ））を含んでもよく、一方で、圧縮アルゴリズムは不可逆圧縮（例えば、ＪＰＥＧやＭＰＥＧアルゴリズム）や可逆圧縮（例えば、ＰＮＧやＧＩＦアルゴリズム）を含んでもよい。ある実施の形態では、支払いリーダ２２は、支払いリーダ２２のメモリ（例えば、フラッシュメモリ）に解凍された第１部分を格納し、ステップ５２４で、支払いリーダ２２のメモリの検査に基づいて、部分的ファームウエアオフセットを決定してもよい。ある実施の形態では、ステップ５２４の判定は、ファームウエア更新のうちのどれくらいが受信されたかを判定することを含んでもよい。この判定は受信に成功したファームウエアの量を決定しうる任意の適切な態様でなされてもよく、例えば、受信に成功した最後または最新のファームウエアインストラクションを特定し、そのインストラクションに関連付けられているオフセットを特定することによってなされてもよい。ファームウエアがメモリに格納される前に解凍されるある実施の形態では、このオフセットは非圧縮ファームウエアオフセットに対応してもよく、受信され解凍されたファームウエア更新を保持するメモリは、計算された巡回冗長検査（ＣＲＣ）値を含む位置を含んでもよい。非圧縮ファームウエアオフセットは、ＣＲＣ値が正しいメモリ部分に基づいて特定されてもよい。図３を参照して説明したように、非圧縮ファームウエアオフセットを決定するために良好なＣＲＣ値に関連付けられている最新のファームウエアインストラクションが選択されてもよい。ある実施の形態では、この最新のインストラクションの前のファームウエアインストラクションの総数がその値として用いられてもよく、これは部分的ファームウエアオフセットとして機能してもよい。部分的ファームウエアオフセットは、支払いリーダ２２に送信すべき次のファームウエアブロックを決定するために用いられてもよい。
【０１３０】
ステップ５２５で、支払いリーダ２２は、マーチャントデバイス２９が、支払いリーダ２２に送信すべき複数の圧縮ファームウエア更新ブロックのうちの第２部分を決定することを可能とするために、マーチャントデバイス２９などに、部分的ファームウエアオフセットを送信してもよい。このオフセットテーブルに基づいて、マーチャントデバイス２９は圧縮データまたは非圧縮データのいずれかについてのオフセット値を受信し、その情報を用いることで他方のデータタイプ（それぞれ、非圧縮または圧縮）の関連オフセットを見出してもよい。ステップ５２６で、マーチャントデバイス２９は、圧縮ファームウエア更新ブロックに関連付けられているオフセットテーブルと、支払いリーダ２２からの既知の非圧縮ファームウエアオフセットと、に基づいて、複数の圧縮ファームウエア更新ブロックの第２部分を決定してもよい。ある実施の形態では、マーチャントデバイス２９は、ステップ５２６の判定に到達し、支払いリーダ２２に送信すべき圧縮ファームウエア更新ブロックの第２部分を特定してもよい。ある実施の形態では、支払いリーダ２２は、マーチャントデバイス２９からの複数の圧縮ファームウエア更新ブロックの第２部分の最初のブロックに含まれるデータを無視してもよく、該最初のブロックは支払いリーダ２２が既に受信し、メモリ１２２などのメモリに保持しているものである。部分的ファームウエアオフセット（例えば、部分的ファームウエアオフセットに対応する第１データブロックの非圧縮メモリオフセット）を用いることで、マーチャントデバイス２９によって送信される複数の圧縮ファームウエア更新ブロックにおいて支払いリーダ２２が無視すべきデータを特定してもよい。この態様では、支払いリーダ２２は、ファームウエア更新を最初からもう一度行う代わりに、ファームウエア更新が適切に受信された直近のポイントからファームウエアの更新を続けることができる。ステップ５２７で、マーチャントデバイス２９は、図４を参照して本明細書で説明された通り、支払いリーダ２２に、複数のファームウエア更新ブロックの第２部分を送信してもよい。
【０１３１】
支払いリーダ２２はステップ５２７で送信された第２部分を受信してもよい。ある実施の形態では、支払いリーダ２２は、マーチャントデバイス２９からの複数の圧縮ファームウエア更新ブロックの第２部分の最初のブロックに含まれるデータを無視してもよく、該最初のブロックは支払いリーダ２２が既に受信し、メモリ１２２などのメモリに保持しているものである。部分的ファームウエアオフセット（例えば、部分的ファームウエアオフセットに対応する第１データブロックの非圧縮メモリオフセット）を用いることで、マーチャントデバイス２９によって送信される複数の圧縮ファームウエア更新ブロックにおいて支払いリーダ２２が無視すべきデータを特定してもよい。この態様では、支払いリーダ２２は、ファームウエア更新を最初からもう一度行う代わりに、ファームウエア更新が適切に受信された直近のポイントからファームウエアの更新を続けることができる。ステップ５２８で、支払いリーダ２２は、図３を参照して本明細書で説明されたように、複数の圧縮ファームウエア更新ブロックの第２部分を解凍し復号してもよい。ある実施の形態では、支払いリーダ２２は、支払いリーダ２２のメモリ（例えば、ＲＡＭ)に解凍された第２部分を格納してもよく、図３を参照して説明されたように支払いリーダ２２の各種コンポーネントのメモリの検査を行い、ステップ５２９へと続いてもよい。
【０１３２】
ステップ５２９で、支払いリーダ２２は、少なくとも解凍された第１部分および第２部分に基づいて、ファームウエア更新の全体が受信されたか判定してもよい。ある実施の形態では、支払いリーダ２２は、そのメモリの検査に基づいて、ファームウエア更新の全体が受信されたかを判定してもよい。ある実施の形態では、ステップ５２９の判定は、支払いリーダ２２のメモリに保持される（例えば、複数の圧縮ファームウエア更新ブロックの解凍された第１部分および第２部分の結果として）ファームウエアデータの量と、支払いサーバ４０から送信されたファームウエア更新の全体に関連付けられたデータの量と、を比較することで、支払いリーダ２２によって行われてもよい。ある実施の形態では、支払いリーダ２２は、この比較に基づいて、ファームウエア更新の全体が受信されたと判定してもよい。
【０１３３】
ステップ５３０で、支払いリーダ２２は、完全に受信されたファームウエア更新に基づいて支払いリーダのファームウエアを更新してもよい。ある実施の形態では、支払いリーダ２２は、ステップ５２９でファームウエア更新の全体が受信されたと判定されるまで、複数のファームウエア更新ブロックのうちの第１部分および第２部分をメモリに保持してもよい。処理ユニット１２０は、支払いリーダ２２の他のコンポーネント（例えば、無線通信インタフェース１０８やトランザクションチップ１１４）のプロセッサと通信してもよく、これは、関連ファームウエアおよびメモリに現在保持されているファームウエアの更新要求を含む。ある実施の形態では、支払いリーダ２２は、次いで、受信されたファームウエア更新に基づいて、適切なコンポーネントのファームウエアを更新してもよい。その後、データフロー４１０は終わってもよい。
【０１３４】
図７は、本開示のある実施の形態に係る、無線通信デバイスに提供するファームウエアを決定する例示的方法を説明する非限定的フロー図を示す。任意の適切なデバイスが無線通信デバイスに提供すべきファームウエアを決定してもよいと理解されるが、例示的な実施の形態では、その決定は、支払いサーバ４０の支払いサービスシステム５０で行われてもよいし、無線通信デバイスは支払いリーダ２２であってもよいし、ファームウエア更新はネットワーク３０を介しマーチャントデバイス２９を介して支払いリーダ２２に提供されてもよい。
【０１３５】
ステップ７０２で、支払いサービスシステム５０は、ファームウエア更新インストラクション３２４を実行する処理ユニット３０２に基づいて、支払いリーダ２２のひとつ以上のコンポーネントに保持されるファームウエアバージョンをリストしたファームウエアマニフェストを受信してもよい。ファームウエアマニフェストは任意の適切な情報を含んでもよいが、ある実施の形態では、ファームウエアマニフェストは、支払いリーダで動作しうる各ファームウエアアセット（例えば、本明細書で説明される六つのファームウエアアセット）と、それらのアセットのそれぞれに関連付けられたバージョンと、を特定してもよい。ファームウエアマニフェストが受信されると、処理はステップ７０４へと続いてもよい。
【０１３６】
ステップ７０４で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行しバンドルに関する情報（例えば、アセットデータベース３３２からの）にアクセスすることに基づいて、受信したファームウエアマニフェストのファームウエアバージョンが既知のバンドルとマッチするか否かを判定してもよい。本明細書で説明されるように、バンドルは、支払いリーダに利用可能な、または、支払いリーダに以前に利用可能とされてしまっている、ファームウエアバージョンの階層的に順序付けられたグループのリストを表してもよい。ファームウエアマニフェストのバージョンがバンドルとマッチすると、処理はステップ７０８へと続いてもよい。ファームウエアマニフェストのバージョンがバンドルとマッチしないと、処理はステップ７０６へと続いてもよい。
【０１３７】
ステップ７０６で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行しバンドルに関する情報（例えば、アセットデータベース３３２からの）にアクセスすることに基づいて、受信したファームウエアのファームウエアバージョンが許容可能遷移状態に対応するか否かを判定してもよい。本明細書で説明されるように、各バンドルはファームウエアアセットが更新されてもよい順序を表すので、それらのバージョンのうちのいくつかが正しい順序で更新された許容可能なバンドル間遷移状態（例えば、新たなバンドルへの更新中）が存在しうる。そのような遷移は、支払い処理の継続にとって許容可能であってもよい。一方、ファームウエアマニフェストのファームウエアバージョンが許容可能な遷移状態にない（例えば、ファームウエアバージョンはバンドルの間のものであるが、正しい順序で更新されていない）場合、これはテストされていない状態である蓋然性が高く、支払いトランザクションは処理されるべきでない。ファームウエアマニフェストのバージョンが許容可能な遷移状態にあると、処理はステップ７０８へと続いてもよい。ファームウエア更新のバージョンが許容可能な遷移状態にないと、処理はステップ７１０へと続いてもよい。
【０１３８】
ステップ７０８で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行しバンドルに関する情報（例えば、アセットデータベース３３２からの）にアクセスすることに基づいて、後続のブロッキングバンドル（例えば、ファームウエアバージョンのブロッキングバンドルとしてマークされている後に利用可能なファームウエアバージョンを含むバンドル）が存在するか否かを決定してもよい。本明細書で説明されるように、ブロッキングバンドルは、支払いリーダ２２が支払いトランザクションを続ける前になされなければならない重要な更新を表してもよい。ブロッキングバンドルである後続のバンドルがあると、処理はステップ７１２へと続いてもよい。ブロッキングバンドルである後続のバンドルがないと、処理はステップ７１８へと続いてもよい。
【０１３９】
ステップ７１０で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行することに基づいて、支払いリーダに関連付けられたファームウエアを非準拠としてマークしてもよい。本明細書で説明されるように、非準拠ファームウエアバージョンは、ファームウエアマニフェストのファームウエアバージョンのうち、バンドルにマッチすることも、許容可能な遷移状態にマッチすることも、ないファームウエアバージョンであってもよい。次いで、処理はステップ７１２に続いてもよい。
【０１４０】
ステップ７１２で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行することに基づいて、支払いサービスシステム５０におけるファームウエアマニフェストを送信した支払いリーダ２２からの支払い処理を停止してもよい。マニフェストのファームウエアバージョンが非準拠である（ステップ７０６およびステップ７１０）か、または、後続のブロッキングバンドルが特定された（ステップ７０８）ことに基づいて、処理はステップ７１２に到達しうる。処理がステップ７１２に到達すると、その特定の支払いリーダ２２によって開始される支払いトランザクションについての支払い処理インストラクションは実行されなくてもよい。次いで、処理はステップ７１４に続いてもよい。
【０１４１】
ステップ７１４で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行することに基づいて、支払いリーダ２２および／または支払いリーダ２２に関連付けられたマーチャントデバイス２９に並列処理インジケータを送信することで、支払いリーダ２２がファームウエアの更新と並列してトランザクションを処理してはならないことを示してもよい。そのようなインジケータに基づいて、支払いリーダ２２はトランザクションの処理を停止してもよく、ある実施の形態では、ファームウエア更新の処理を速めるために、他の処理の制限を試行し、無線接続を維持してもよい。同様にして、マーチャントデバイス２９は、支払い処理を続ける前にファームウエア更新が必要であることを示し、かつ、ファームウエア更新の進行などの他の情報を提供するインジケーションまたは警告をマーチャントまたはユーザに提供してもよい。次いで、処理はステップ７１６に続いてもよい。
【０１４２】
ステップ７１６で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行することに基づいて、支払いリーダ２２を新たなバンドルへと更新してもよい。他のバンドルを選択することも可能ではあるが、ある実施の形態ではファームウエアは最新のバンドルまたは最新のブロッキングバンドルへと更新されてもよい。この態様では、いずれにせよ支払いリーダの非常に多くのファームウエアアセットを更新する必要があるので、最新のバージョンへの更新が望ましい。更新でどのファームウエアアセットが提供されるにせよ、それらは本明細書で説明されるように更新のために支払いリーダ２２に（例えば、マーチャントデバイス２９を介して）提供されてもよい。
【０１４３】
支払いトランザクションの処理が続く場合（例えば、支払いリーダのファームウエアが非準拠でないか、またはブロッキングバンドルがない場合）、処理は（例えば、ステップ７０８から）ステップ７１８へと続き、この場合、処理ユニット３０２がファームウエア更新インストラクション３２４を実行することに基づいて、支払いトランザクションは支払いサービスシステム５０によって処理され続ける。この態様では、支払いサービスシステム５０は、支払いリーダ２２にファームウエア更新を提供し続けているにもかかわらず、支払いリーダ２２からのトランザクションを処理し続けてもよい。次いで、処理はステップ７２０に続いてもよい。
【０１４４】
ステップ７２０で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行することに基づいて、支払いリーダ２２および／または支払いリーダ２２に関連付けられたマーチャントデバイス２９に並列処理インジケータを送信することで、支払いリーダ２２がファームウエアの更新と並列してトランザクションの処理を継続してもよいことを示してもよい。そのようなインジケータに基づいて、支払いリーダ２２およびマーチャントデバイス２９は、本明細書で説明されるように、バックグラウンドでファームウエア更新を生じさせつつ、トランザクションの処理を続けてもよい。次いで、処理はステップ７１６に続いてもよい。
【０１４５】
ステップ７２２で、支払いサービスシステム５０は、処理ユニット３０２がファームウエア更新インストラクション３２４を実行することに基づいて、支払いリーダ２２を新たなバンドルへと更新してもよい。他のバンドルを選択することも可能ではあるが、ある実施の形態ではファームウエアは次に利用可能なバンドルへと更新されてもよい。この態様では、任意の一回の更新で限定された数のファームウエアアセットのみの更新が求められ、その更新は支払い処理の継続中にバックグラウンドで生じてもよい。例えば、本明細書で説明されるように、更新対象の特定のアセットがマーチャントデバイス２９に提供されてもよい。ある実施の形態では、それらの更新は一度にひとつずつ支払いリーダ２２に送信されてもよい。アセットの完全な更新が受信されると、支払いリーダは適切な時刻に（例えば、支払いリーダ２２のリブート時や活動の無い期間の後）特定のアセットを更新してもよい。この処理はアセットの全てが更新されるまで繰り返されてもよい。支払いリーダが新たなバンドルへと更新されてしまうと、処理は終わってもよい。
【０１４６】
図８は、本開示のある実施の形態に係る、無線通信デバイスにおいてファームウエアを更新する例示的ステップを説明する非限定的フロー図を示す。任意の適切な無線通信デバイスが更新されてもよいと理解されるが、例示的な実施の形態では、無線通信デバイスは支払いリーダ２２であってもよい。
【０１４７】
ステップ８０２で、支払いリーダ２２は、処理ユニット１２０がファームウエア更新インストラクション１３４を実行することに基づいて、支払いリーダ２２のひとつ以上のコンポーネントに保持されるファームウエアバージョンをリストしたファームウエアマニフェストを送信してもよい。ファームウエアマニフェストは任意の適切な情報を含んでもよいが、ある実施の形態では、ファームウエアマニフェストは、支払いリーダで動作しうる各ファームウエアアセット（例えば、本明細書で説明される六つのファームウエアアセット）と、それらのアセットのそれぞれに関連付けられたバージョンと、を特定してもよい。ファームウエアマニフェストが送信されると、処理はステップ８０４へと続いてもよい。
【０１４８】
ステップ８０４で、支払いリーダ２２は、処理ユニット１２０がファームウエア更新インストラクション１３４を実行することに基づいて、支払いリーダ２２に保持されるファームウエアアセットのための更新対象のファームウエアを受信してもよい。本明細書で説明されるように、複数のファームウエアアセットは、支払いリーダ２２の異なるコンポーネントまたは機能に関連付けられてもよく、この場合、各アセットは個々に受信され、更新されてもよい。ファームウエアアセットの完全なファームウエア更新が受信されると、処理はステップ８０６へと続いてもよい。
【０１４９】
ステップ８０６で、支払いリーダ２２は、処理ユニット１２０がファームウエア更新インストラクション１３４を実行することに基づいて、並列処理インジケータを受信してもよく、それは支払いリーダ２２がファームウエアの更新と並列してトランザクションの処理を継続してもよいことを示してもよい。並列処理インジケータが受信されると、処理はステップ８０８へと続いてもよい。
【０１５０】
ステップ８０８で、支払いリーダ２２は、処理ユニット１２０がファームウエア更新インストラクション１３４を実行することに基づいて、受信した並列処理インジケータに基づいて、支払いトランザクションの処理を続けるか否かを判定してもよい。トランザクションの処理を継続してもよい場合、処理はステップ８１０へと続いてもよい。トランザクションの処理を継続すべきでない場合、処理はステップ８１２へと続いてもよい。
【０１５１】
ステップ８１０で、支払いリーダ２２は、処理ユニット１２０がトランザクション処理インストラクション１３４およびファームウエア更新インストラクション１３４を実行することに基づいて、本明細書で説明されるように、（例えば、マーチャントデバイス２９を介して支払いサービスシステム５０と）トランザクションを処理してもよい。本明細書で説明されるように、ファームウエア更新はバックグラウンドで生じてもよい。次いで、処理はステップ８１４に続いてもよい。
【０１５２】
ステップ８１２で、支払いリーダ２２は、処理ユニット１２０がファームウエア更新インストラクション１３４を実行することに基づいて、支払いトランザクションを拒否してもよい。支払いリーダ２２はトランザクションの処理を停止してもよく、ある実施の形態では、ファームウエア更新の処理を速めるために、他の処理の制限を試行し、無線接続を維持してもよい。同様にして、マーチャントデバイス２９は、支払い処理を続ける前にファームウエア更新が必要であることを示し、かつ、ファームウエア更新の進行などの他の情報を提供するインジケーションまたは警告をマーチャントまたはユーザに提供してもよい。次いで、処理はステップ８１４に続いてもよい。
【０１５３】
ステップ８１４で、支払いリーダ２２は、処理ユニット１２０がファームウエア更新インストラクション１３４を実行することに基づいて、受信したファームウエアを更新してもよい。トランザクションが処理される場合、本明細書で説明されるように、そのような更新はバックグラウンドで生じてもよい。トランザクションが処理されない場合、トランザクションが生じる前に更新を完了する必要がありうる。例えば、本明細書で説明されるように、更新対象の特定のアセットがマーチャントデバイス２９に提供されてもよい。ある実施の形態では、それらの更新は一度にひとつずつ支払いリーダ２２に送信されてもよい。アセットの完全な更新が受信されると、支払いリーダは適切な時刻に（例えば、支払いリーダ２２のリブート時や支払い処理が継続される場合の活動の無い期間の後やトランザクションがブロックされるとすぐに）特定のアセットを更新してもよい。支払いリーダが新たなバンドルへと更新されてしまうと、処理は終わってもよい。
【０１５４】
ある実施の形態では、本開示は、支払いシステムの支払いリーダにファームウエア更新を提供する方法を提供してもよい。方法は、ポイントオブセールアプリケーションを実行するマーチャントデバイスに、支払いリーダからのファームウエアマニフェストを要求することを含んでもよい。方法は、支払いリーダにおいて、ファームウエアマニフェストにアクセスすることを含んでもよい。方法は、マーチャントデバイスを介して支払いリーダから、ファームウエアマニフェストを支払いサーバに送信することを含んでもよい。方法は、支払いサーバにおいて、ファームウエアマニフェストに基づいてファームウエア更新が必要とされているか否かを判定することを含んでもよい。方法は、支払いサーバにおいて、複数のファームウエア更新ブロックにアクセスすることであって、複数のファームウエア更新ブロックが合わせてファームウエア更新を構成する、アクセスすることを含んでもよい。方法は、支払いサーバにおいて、複数のファームウエア更新ブロックのそれぞれを圧縮することで、複数の圧縮ファームウエア更新ブロックを生成することを含んでもよい。方法は、支払いサーバにおいて、オフセットテーブルを生成することであって、オフセットテーブルが、圧縮されたファームウエア更新に関連付けられている複数の圧縮オフセットのそれぞれを、ファームウエア更新の解凍バージョンに関連付けられている対応する解凍されたオフセットに、関連付ける、生成することを含んでもよい。方法は、支払いサーバからマーチャントデバイスへ、オフセットテーブルおよび複数の圧縮ファームウエア更新ブロックを送信することを含んでもよい。方法は、マーチャントデバイスにおいて、オフセットテーブルおよび複数の圧縮ファームウエア更新ブロックを格納することを含んでもよい。方法は、マーチャントデバイスから、複数の圧縮ファームウエア更新ブロックの第１部分を支払いリーダに送信することを含んでもよい。方法は、支払いリーダにおいて、複数の圧縮ファームウエア更新ブロックの第１部分を解凍することを含んでもよい。方法は、支払いリーダにおいて、解凍された第１部分に関連付けられた部分的ファームウエアオフセットを決定することを含んでもよい。方法は、支払いリーダからマーチャントデバイスへ、部分的ファームウエアオフセットを送信することを含んでもよい。方法は、マーチャントデバイスにおいて、部分的ファームウエアオフセットとオフセットテーブルに保持されるオフセットとに基づいて、支払いリーダに送信すべき複数の圧縮ファームウエア更新ブロックの第２部分を決定することを含んでもよい。方法は、マーチャントデバイスから、複数の圧縮ファームウエア更新ブロックの第２部分を支払いリーダに送信することを含んでもよい。方法は、支払いリーダにおいて、複数の圧縮ファームウエア更新ブロックの第２部分を解凍することを含んでもよい。方法は、支払いリーダにおいて、少なくとも解凍された第１部分および第２部分に基づいて、ファームウエア更新の全体が受信されたか判定することを含んでもよい。方法は、受信されたファームウエア更新に基づいて支払いリーダのファームウエアを更新することを含んでもよい。
【０１５５】
上記の方法のある実施の形態では、支払いリーダにおいて、ファームウエア更新の全体が受信されたか判定することは、支払いリーダにおいて、ファームウエア更新の更新サイズを受信することと、支払いリーダにおいて、受信されたファームウエア更新のサイズと更新サイズとを比較することと、比較に基づいて、ファームウエア更新が受信されたか否か判定することと、を含む。
【０１５６】
ある実施の形態では、上記の方法はさらに、支払いリーダにおいて、第１部分と第２部分との間の重複を特定することであって、重複が第１部分および第２部分の共通ファームウエア更新ブロックとファームウエア更新の第２部分を書き込むための開始点とに基づく、特定することと、重複および開始点に基づいて、ファームウエア更新の第２部分を書き込むことと、を含んでもよい。
【０１５７】
上記の方法のある実施の形態では、ファームウエア更新の第２部分を書き込むための開始点が、ファームウエア更新を書き込むためのメモリ内の巡回冗長検査の位置に基づく。
【０１５８】
ある実施の形態では、本開示は、支払いリーダに支払いサーバからファームウエア更新を提供する方法を提供してもよい。方法は、ポイントオブセールアプリケーションを実行するマーチャントデバイスに、支払いリーダからのファームウエアマニフェストを要求することを含んでもよい。方法は、支払いリーダにおいて、ファームウエアマニフェストにアクセスすることであって、ファームウエアマニフェストが複数のファームウエアアセットのそれぞれについてのファームウエアバージョンを含み、各ファームウエアアセットが支払いリーダのコンポーネントを動作させるためのインストラクションを含む、アクセスすることを含んでもよい。方法は、マーチャントデバイスを介して支払いリーダから、ファームウエアマニフェストを支払いサーバに送信することを含んでもよい。方法は、支払いサーバにおいて、複数のファームウエアバンドルにアクセスすることであって、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む、アクセスすることを含んでもよい。方法は、支払いサーバにおいて、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することを含んでもよい。判定することは、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することと、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を含んでもよい。方法は、支払いサーバにおいて、ファームウエアアセットのひとつに対してファームウエア更新を特定することを含んでもよい。ファームウエア更新を特定することは、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを順番に比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしない第１ファームウエアバージョンに基づいてファームウエア更新を特定することと、を含んでもよい。方法は、支払いサーバにおいて、並列処理インジケータを生成することを含んでもよい。方法は、支払いサーバにおいて、ファームウエア更新および並列処理インジケータを送信することを含んでもよい。方法は、マーチャントデバイスを介して支払いリーダにおいて、ファームウエア更新および並列処理インジケータを受信することを含んでもよい。方法は、支払いリーダにおいて、支払いを処理するための要求を受信することを含んでもよい。方法は、ファームウエア更新中に支払いが処理されてもよいことを並列処理インジケータが示す場合、支払いリーダにおいて支払いを処理することを含んでもよい。方法は、支払いリーダにおいて、ファームウエア更新に関連付けられたファームウエアアセットを更新することを含んでもよい。
【０１５９】
本明細書で説明される方法の実施の形態では、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することは、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、後続のブロッキングファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、次のファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を含んでもよい。
【０１６０】
本明細書で説明される方法の実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
【０１６１】
本開示の実施の形態では、サーバからファームウエア更新を提供する方法は、サーバにおいて、デバイスのファームウエアマニフェストを受信することであって、ファームウエアマニフェストがそのデバイスの複数のファームウエアアセットのそれぞれのファームウエアバージョンを含む、受信することを含んでもよい。方法は、サーバにおいて、複数のファームウエアバンドルにアクセスすることであって、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む、アクセスすることを含んでもよい。方法は、サーバにおいて、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することを含んでもよい。方法は、サーバにおいて、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することを含んでもよい。方法は、サーバにおいて、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することを含んでもよい。方法は、サーバにおいて、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することを含んでもよい。方法は、サーバにおいて、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか否かを判定することを含んでもよい。方法は、サーバにおいて、ファームウエアマニフェストまたは更新ファームウエアバンドルに基づいて並列処理インジケータを生成することであって、並列処理インジケータがファームウエア更新中にデバイスにおいて並列処理が継続すべきか否かを示す、生成することを含んでもよい。方法は、サーバから、ファームウエア更新および並列処理インジケータを送信することを含む。
【０１６２】
本明細書で説明される方法の実施の形態では、各ファームウエアアセットはデバイスのコンポーネントを動作させるためのインストラクションを含んでもよい。
【０１６３】
本明細書で説明される方法の実施の形態では、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することは、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を含んでもよい。
【０１６４】
本明細書で説明される方法の実施の形態では、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することは、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしないファームウエアバージョンに基づいてファームウエア更新を特定することと、を含んでもよい。
【０１６５】
本明細書で説明される方法の実施の形態では、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することは、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、第１ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、第２ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を含んでもよい。
【０１６６】
本明細書で説明される方法の実施の形態では、第１ファームウエアバンドルは最新のブロッキングファームウエアバンドルを含んでもよい。
【０１６７】
本明細書で説明される方法の実施の形態では、第１ファームウエアバンドルは最新のブロッキングファームウエアバンドルの後続のバンドルを含んでもよい。
【０１６８】
本明細書で説明される方法の実施の形態では、第２ファームウエアバンドルは複数のファームウエアバンドルの次のファームウエアバンドルを含んでもよい。
【０１６９】
本明細書で説明される方法の実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
【０１７０】
本開示の実施の形態では、サーバは、デバイスからファームウエアマニフェストを受信し、デバイスに並列処理インジケータを送信し、デバイスにファームウエア更新を送信するよう構成された通信インタフェースを含んでもよい。サーバは、ファームウエア更新インストラクションと複数のファームウエアバンドルに関する情報とを含むひとつ以上のメモリを備えてもよく、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む。サーバは、ファームウエア更新インストラクションを実行することによって、ファームウエアマニフェストを受信し、複数のファームウエアバンドルに関する情報にアクセスするよう構成された処理ユニットを含んでもよい。処理ユニットは、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することと、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することと、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することと、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することと、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか否かを判定することと、ファームウエアマニフェストまたは更新ファームウエアバンドルに基づいて並列処理インジケータを生成することと、通信インタフェースにファームウエア更新および並列処理インジケータを提供することであって、並列処理インジケータがファームウエア更新中にデバイスにおいて並列処理が継続すべきか否かを示す、提供することと、を行うよう構成される。
【０１７１】
本明細書で説明されるサーバの実施の形態では、各ファームウエアアセットはデバイスのコンポーネントを動作させるためのインストラクションを含んでもよい。
【０１７２】
本明細書で説明されるサーバの実施の形態では、処理ユニットはさらに、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を行うよう構成されてもよい。
【０１７３】
本明細書で説明されるサーバの実施の形態では、処理ユニットはさらに、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしないファームウエアバージョンに基づいてファームウエア更新を特定することと、特定されたファームウエアバージョンに基づいてファームウエア更新を生成することと、を行うよう構成されてもよい。
【０１７４】
本明細書で説明されるサーバの実施の形態では、処理ユニットはさらに、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、第１ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、第２ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を行うよう構成されてもよい。
【０１７５】
本明細書で説明されるサーバの実施の形態では、第１ファームウエアバンドルは最新のブロッキングファームウエアバンドルを含んでもよい。
【０１７６】
本明細書で説明されるサーバの実施の形態では、第１ファームウエアバンドルは最新のブロッキングファームウエアバンドルの後続のバンドルを含んでもよい。
【０１７７】
本明細書で説明されるサーバの実施の形態では、第２ファームウエアバンドルは複数のファームウエアバンドルの次のファームウエアバンドルを含んでもよい。
【０１７８】
本明細書で説明されるサーバの実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
【０１７９】
本開示のある実施の形態では、非一時的コンピュータ可読保持媒体はそれに保持されるインストラクションを備え、インストラクションはひとつ以上のプロセッサによって実行された場合、ひとつ以上のプロセッサに動作を行わせる。動作は、複数のファームウエアバンドルにアクセスすることであって、各ファームウエアバンドルが複数のファームウエアアセットのファームウエアバージョンの許された組み合わせの順序付けられたリストを含む、アクセスすることを含む。動作は、ファームウエアマニフェストのファームウエアバージョンの順序付けられたリストと、ファームウエアバンドルのうちのひとつ以上と、を比較することを含む。動作は、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することを含む。動作は、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することを含む。動作は、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することを含む。動作は、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか否かを判定することを含む。動作は、ファームウエアマニフェストまたは更新ファームウエアバンドルに基づいて並列処理インジケータを生成することであって、並列処理インジケータがファームウエア更新中にデバイスにおいて並列処理が継続すべきか否かを示す、生成することを含む。動作は、ファームウエア更新および並列処理インジケータを提供することを含む。
【０１８０】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、各ファームウエアアセットはデバイスのコンポーネントを動作させるためのインストラクションを含んでもよい。
【０１８１】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、ファームウエアマニフェストのファームウエアバージョンがファームウエアバージョンの許される組み合わせであるか否かを判定することは、ファームウエアマニフェストの順序付けられたリストがファームウエアバンドルのうちのひとつにマッチする場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、ファームウエアマニフェストの順序付けられたリストが二つのファームウエアバンドルの間の遷移状態に対応する場合、ファームウエアマニフェストのファームウエアバージョンを許される組み合わせとして特定することと、を含んでもよい。
【０１８２】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、更新ファームウエアバンドルおよびファームウエアマニフェストに基づいて、ファームウエア更新を生成することは、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンと更新ファームウエアバンドルの対応するファームウエアバージョンとを比較することと、ファームウエアマニフェストの順序付けられたリストのファームウエアバージョンのうちの更新ファームウエアバンドルの対応するファームウエアバージョンとマッチしないファームウエアバージョンに基づいてファームウエア更新を特定することと、を含んでもよい。
【０１８３】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、複数のファームウエアバンドルのうちの更新ファームウエアバンドルを特定することは、後続のブロッキングファームウエアバンドルが存在するか否かを判定することと、後続のブロッキングバンドルが存在する場合、第１ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、後続のブロッキングバンドルが存在しない場合、第２ファームウエアバンドルを更新ファームウエアバンドルとして特定することと、を含んでもよい。
【０１８４】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、第１ファームウエアバンドルは最新のブロッキングファームウエアバンドルを含んでもよい。
【０１８５】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、第１ファームウエアバンドルは最新のブロッキングファームウエアバンドルの後続のバンドルを含んでもよい。
【０１８６】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、第２ファームウエアバンドルは複数のファームウエアバンドルの次のファームウエアバンドルを含んでもよい。
【０１８７】
本明細書で説明される非一時的コンピュータ可読保持媒体の実施の形態では、並列処理インジケータは、更新ファームウエアバンドルがブロッキングファームウエアバンドルであるか、または、ファームウエアマニフェストのファームウエアバージョンが許される組み合わせではないことを示す。
【０１８８】
上記は本開示の原理の単なる説明に過ぎず、当業者であれば本開示の範囲から逸脱することなく種々の変更を行える。上述の実施の形態は、限定では無く説明の目的のために示されたものである。本開示はまた、本明細書で明示的に説明されたもの以外の多くの形態をとることができる。したがって、本開示は明示的に開示された方法、システムおよび装置に限定されず、むしろそれらの変形例や変更例であって以下の請求の範囲内のものを含むことが意図されていることを強調しておく。
【０１８９】
さらなる例として、本明細書で示され説明された提供された構成、デバイスおよび方法をさらに最適化するために、装置またはプロセスパラメータ（例えば、寸法、設定、コンポーネント、プロセスステップの順番等）の変更を行うことができる。いずれにせよ、本明細書で説明される構成およびデバイス、ならびに関連方法は、多くのアプリケーションを有する。したがって、開示された主題は本明細書で説明されるいずれかの単一の実施の形態に限定されるべきではなく、むしろ添付の請求の範囲にしたがう範囲において解釈されるべきものである。
【図１】
2019519829.tif 000002
【図２】
2019519829.tif 000003
【図３】
2019519829.tif 000004
【図４】
2019519829.tif 000005
【図５】
2019519829.tif 000006
【図６】
2019519829.tif 000007
【図７】
2019519829.tif 000008
【図８】
2019519829.tif 000009
【国際調査報告】
2019519829.tif 000010
2019519829.tif 000011