ISO 8583 を使用して、サーバーにメッセージを送信し、verifone vx520 端末に応答を返すサンプル コードが知りたいです。
1 に答える
あなたの質問へのコメントで述べたように、これはコード共有サイトではないため、このような自由回答式の質問には答えるのが少し難しいですが、おそらく私はあなたが正しい足で始めることができるでしょう.
まず最初に、端末コードとそれが通信するサーバーを制御できる場合は、ISO8583 を使用しないことをお勧めします。はい、業界標準であり、データを効率的に通信しますが、VISA-1 や XML、JSON などよりもはるかに使いにくいものです。つまり、コードにバグが入り込む可能性が高くなります。また、何か問題が発生した場合、何が起こったのかを理解し、それを修正しようとするために、より多くの努力が必要になることも意味します. 私はこれらすべてのプロトコルやその他のプロトコルを使用してきましたが、ISO8583 は私が最も扱いたくないプロトコルの 1 つです。
選択肢がなく、ISO8583 を使用する必要があると仮定すると、ISO8583 は、通信するためにデータ パケットを組み立てる方法に関する仕様に過ぎないことに注意してください。Vx520 端末 (またはその他の VeriFone 端末) について、実装方法と他の C++ プラットフォームでの実装方法を変更する特別なことは何もありません。必要に応じて自由に使用または無視できます。
このライブラリを使用する必要はまったくありません。あなたは自分自身を転がすことができ、大丈夫です。仕様自体の詳細については、Wikipedia、Code Project、およびその他のいくつかの場所を参照してください (お気に入りの検索エンジンに聞いてください)。私が 8583 プロジェクトを行ったとき、このライブラリは利用できなかったことに注意してください。もし私がこのプロトコルにアクセスできていたら、おそらく私はこのプロトコルをそれほど嫌いではなかったでしょう...誰が知っていますか?
あなたがまだこれを読んでいるなら、ISO8583 が必要条件であり (あるいは、あなたは大食漢であり)、VeriFone が提供するこのエンジンを試すことに興味があると思います。
最初に行う必要があること (そして、できれば既に完了していることを願っています) は、開発スイートの一部として ACT をインストールすることです (開始する前に、DevNet にアクセスして最新バージョンの ACT を入手することもお勧めします.. .)。インストールが完了すると、ライブラリ ヘッダーが にあります%evoact%\include\iso8583.h
。使用方法に関するドキュメントは、 にあります%evoact%\docs
。特に、 の第 6 章を参照してくださいDOC00310_Verix_eVo_ACT_Programmers_Guide.pdf
。
明らかに、章全体に相当する情報をここに含めることは範囲外ですが、エンジンがどのように機能するかについての概要を説明するために、いくつかの抜粋を共有させてください。
このエンジンは、テーブル駆動になるように設計されています。ISO 8583 パケットの組み立てと分解には、1 つのルーチンが使用されます。ISO 8583 パケットの組み立てと分解は、次の構造によって駆動されます。
- マップパケット アセンブリを駆動し、メッセージの内容を示す 64 ビットの 1 つまたは複数のコレクション。
- フィールド テーブルアプリケーションで使用されるすべてのフィールドを定義します。
- 変換テーブルデータ変換ルーチンを定義します。
- バリアント テーブルバリアント フィールドを定義するために使用されるオプションのテーブル。
process_8583()ルーチンは、ISO 8583 パケットの組み立てと分解に使用されます。
使用例はprocess_8583()
、次のように別の場所に示されています。
#include "appl8583.h"
int packet_sz;
void assemble_packet ()
{
packet_sz = process_8583 (0, field_table, test_map, buffer, sizeof( buffer));
printf ("\ fOUTPUT SIZE %d", packet_sz);
}
void disassemble_packet ()
{
packet_sz = process_8583 (1, field_table, test_map, buffer, packet_sz);
printf ("\ fINPUT NOT PROCESSED %d", packet_sz);
}
このエンジンをアプリケーションに組み込むには、APPL8583.C および APPL8583.H ファイルを変更して、ビット マップに必要なすべてのアプリケーション変数がそれぞれ含まれるようにし、マップを適切に設定します。APPL8583.C をコンパイルし、アプリケーションと ISO 8583 ライブラリにリンクします。ISO 8583 インターフェイス エンジンを使用して ISO 8583 パケットを送受信するには、次の手順を使用します。
ISO 8583 パケットを送信するには
1 送信するアプリケーション変数にデータ値を設定します。
2 prot8583_main() ルーチンを呼び出します。これにより、完全なメッセージが構築され、構築されたメッセージのバイト数が返されます。
3 write() を呼び出してメッセージを送信します。
メッセージを受信するには
1 read() を呼び出してメッセージを受信します。
2 process_8583() ルーチンを呼び出します。これにより、すべてのフィールドがアプリケーション変数に格納されます。
3 アプリケーション変数の値を使用します。