2013-05-04 25 views
5

Tôi đang tìm kiếm một cách để dịch một phản ứng EMV với Java như với tùy chọn trực tuyến này:EMV TLV Java Chức năng

http://www.emvlab.org/tlvutils/

nơi bạn đặt một cái gì đó giống như phản ứng EMV này:

6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02

và nó sẽ cho bạn thấy mọi thứ một cách hoàn hảo, tôi bắt đầu tự mình làm một việc nhưng sau đó tôi nhận ra rằng có lẽ chúng tôi ld có hai chuỗi 9F38 (PDOL) không phải là hai thẻ giống nhau cuz Tôi biết điều đó là không thể nhưng có lẽ giá trị của một thẻ kết thúc bằng 9F và bắt đầu từ khóa tiếp theo sẽ là 38 và điều đó sẽ cho tôi một lỗi ... Tôi đề cập đến nó, là có thể? vì đó là một trong những lý do chính khiến tôi ngừng hoạt động chức năng của chính mình ..

Có ai trong số các bạn đã viết một hàm để làm điều này chưa?

Cảm ơn!

Trả lời

7

https://github.com/binaryfoo/emv-bertlv nên làm các trick.

Sử dụng ví dụ của bạn, đoạn code sau:

List<DecodedData> decoded = new RootDecoder().decode("6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02", "EMV", "constructed"); 
new DecodedWriter(System.out).write(decoded, ""); 

Will đầu ra:

[6F (FCI template)] 8407A0000000031010A52F500B56495341204352454449548701015F...1A02 
[84 (dedicated file name)] A0000000031010 
[A5 (FCI proprietary template)] 500B56495341204352454449548701015F2D086573656E707466729F...1A02 
    [50 (application label)] VISA CREDIT 
    [87 (application priority indicator)] 01 
    [5F2D (language preference)] esenptfr 
    [9F12 (application preferred name)] CREDITO 
    [9F11 (issuer code table index)] 01 
    [9F38 (PDOL - Processing data object list)] 9F1A02 
    9F1A (terminal country code) 2 bytes 
+0

không thể giải mã bằng mã sau. –

0

Bạn đang đi đúng hướng. Bạn có thể dễ dàng xây dựng trình phân tích cú pháp EMV của riêng bạn bằng cách sử dụng kỹ thuật gọi TLV (Giá trị độ dài thẻ). Dữ liệu thô của bạn luôn quay trở lại với Thẻ, sau khi thẻ là độ dài, sử dụng độ dài có thể giúp bạn có được giá trị.

Vì vậy, tạo ra ba phương pháp

phương pháp 1: Chứa tất cả các thẻ ngắn phương pháp 2: Chứa tất cả các thẻ dài phương pháp 3: Chứa tất cả các thẻ độc quyền

Vì vậy, khi bạn vượt qua trong EMV liệu của bạn tag:

6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02

Vòng qua tất cả những t hree phương pháp, nó sẽ cung cấp cho bạn tất cả các thông tin tốt đẹp mà bạn cần.

Các vấn đề liên quan