2

EMV Book_3 は次のように述べています。

CLA: 80
INS: A8
P1 : 00
P2 : 00
Lc : var
データ: 処理オプション データ オブジェクト リスト (PDOL) 関連データ
Le: 00

そして、私の APDU コマンドは次のようになります: "80 A8 00 00 0C PDOL 00", where PDOL = "9F 66 04 9F 02 06 9F 37 04 5F 2A 02".

受信中:6A 80 使用している CC は Visa PayWave 非接触型です。完全な FCI (ファイル制御情報) 独自のテンプレートは次のとおりです。

"50 0C 56 69 73 61 20 43 6C 61 73 73 69 63 87 01 01 9F 38 0C 9F 66 04 9F 02 06 9F 37 04 5F 2A 02 5F 2D 04 62 67 65 6E"

私は何が欠けていますか?正しい Get Processing Option コマンドはどれですか?

4

1 に答える 1

2

PDOL タグは、次に指定されたバイト数で指定されたタグが、コマンドの最後に連結されるデータを表すことを意味します。あなたの質問では、PDOL タグ 9f 38 は、カードに送信されるデータを示す次の 0C hex (12 dec ) バイトを指定します。あなたが持っている:

  • 9f 66 04 - タグ 9f 66 は端末トランザクション修飾子を表します。したがって、PDOL には、4 バイトにコード化されたターミナル トランザクション修飾子の 4h (16 進数) バイトが必要です。

  • 9f 02 06 - タグ 9f 02 は承認された金額を表します。PDOL リストには、6h バイトにコード化された承認済みの量が追加されている必要があります。

  • 9f 37 04 - タグ 9f 37 は予測不可能な数値を表すため、そのような数値を 4 バイトにエンコードしてリストに追加します。

....

残りも同様に翻訳します。リストは、カードから受信したタグ データで指定された順序である必要があります。たとえば、リストでは、TTQ が最初で、その後に承認された金額などが続く必要があります。結果から、データの合計サイズは 4+6+4+ である必要があります。 2= 16 = 10h バイト。したがって、サンプル データを使用した最終的なコマンドは次のようになります。

                        <------the data concatenated together--------->
=> 80 a8 00 00 12 83 10 f3 20 40 00 00 00 00 01 00 00 04 04 06 03 05 08 00 

注意: Lc、12h、およびその後の 2 バイトの値に注意してください。16 進値 0x83 は Lc の直後に存在する必要があり、その後のバイトはデータの実際の長さ、つまり 10h である必要があるため、上記のように Lc = 10h + 2 = 12h となります。最後にLeを忘れないでください!

于 2015-01-16T14:43:50.510 に答える