クレジットカードストライプパーサーは、クレジットカードの磁気ストライプデータを解析・分析するためのPythonライブラリ兼コマンドラインツールです。ISO/IEC 7811-2およびISO/IEC 7813規格で規定されているトラック1とトラック2の両方のフォーマットをサポートしています。
注 このツールは教育およびテスト目的でのみ使用することを意図しています。支払いカードデータを扱う際は、常にPCI DSS要件および適用される法令を遵守してください。
このガイドでは、クレジットカードストライプパーサーライブラリの使用方法について説明します。
from credit_card_stripe_parser import FullTrackParser
# パーサーインスタンスを作成
parser = FullTrackParser()
# トラックデータの例
track_data = "%B5168755544412233^PKMMV/UNEMBOXXXX ^1807111100000000000000111000000?;5168755544412233=18071111000011100000?"
# トラックデータを解析
result = parser.parse(track_data)
# 解析データにアクセス
if result.is_track_one_valid and result.track_one:
print(f"カード名義人: {result.track_one.card_holder_name.strip()}")
print(f"PAN: {result.track_one.pan}")
print(f"有効期限: {result.track_one.expiration_date[:2]}/{result.track_one.expiration_date[2:]}")
if result.is_track_two_valid and result.track_two:
print(f"サービスコード: {result.track_two.service_code}")
from credit_card_stripe_parser import FullTrackParser
parser = FullTrackParser()
track1_data = "%B5168755544412233^PKMMV/UNEMBOXXXX ^1807111100000000000000111000000?"
try:
track1 = parser.parse_track_one(track1_data)
print(f"トラック1データ: {track1}")
except Exception as e:
print(f"トラック1の解析エラー: {e}")
from credit_card_stripe_parser import FullTrackParser
parser = FullTrackParser()
track2_data = ";5168755544412233=18071111000011100000?"
try:
track2 = parser.parse_track_two(track2_data)
print(f"トラック2データ: {track2}")
except Exception as e:
print(f"トラック2の解析エラー: {e}")
ライブラリは、さまざまなエラーシナリオに対応するための特定の例外を提供します:
from credit_card_stripe_parser import (
FullTrackParser,
InvalidTrackOneException,
InvalidTrackTwoException,
InvalidTrackDataException
)
parser = FullTrackParser()
try:
result = parser.parse(invalid_track_data)
except InvalidTrackOneException as e:
print(f"無効なトラック1データ: {e}")
except InvalidTrackTwoException as e:
print(f"無効なトラック2データ: {e}")
except InvalidTrackDataException as e:
print(f"無効なトラックデータ: {e}")
except Exception as e:
print(f"予期しないエラー: {e}")
ライブラリは、解析されたトラックデータを操作するためのデータモデルを提供します:
from credit_card_stripe_parser.models import TrackOneModel, TrackTwoModel
# TrackOneModelインスタンスを作成
track1 = TrackOneModel(
format_code='B',
pan='5168755544412233',
card_holder_name='TANAKA TARO',
expiration_date='2512',
service_code='123',
discretionary_data='123456789012345678901',
source_string='%B5168755544412233^TANAKA TARO^251212312345678901234567890?'
)
# TrackTwoModelインスタンスを作成
track2 = TrackTwoModel(
pan='5168755544412233',
expiration_date='2512',
service_code='123',
pvki=None,
pvv_or_cvv='1234',
discretionary_data='123456789012345678901234567890',
source_string=';5168755544412233=2512123123412345678901234567890?'
)
パーサーをサブクラス化してカスタムバリデーションを実装できます:
from credit_card_stripe_parser import FullTrackParser
class CustomTrackParser(FullTrackParser):
def validate_track_one(self, track_data: str) -> bool:
# トラック1のカスタムバリデーションロジック
if not super().validate_track_one(track_data):
return False
# カスタムバリデーションをここに追加
return True
def validate_track_two(self, track_data: str) -> bool:
# トラック2のカスタムバリデーションロジック
if not super().validate_track_two(track_data):
return False
# カスタムバリデーションをここに追加
return True
LRC(縦方向冗長検査)検証を有効にするには:
parser = FullTrackParser(validate_lrc=True)
# LRC検証に失敗した場合は例外が発生します
try:
result = parser.parse(track_data_with_lrc)
except Exception as e:
print(f"LRC検証エラー: {e}")
注 LRC検証では、トラックデータの最後にLRC文字が含まれている必要があります。
このライブラリは、教育およびテスト目的でクレジットカードの磁気ストライプデータを解析・分析するために設計されています。
このツールは、PCI DSS要件および適用される法令を遵守して使用する必要があります。支払いカードデータを扱う際は、適切なセキュリティ対策を講じてください。
このライブラリは、ISO/IEC 7811-2およびISO/IEC 7813規格で規定されているトラック1とトラック2のフォーマットをサポートしています。
ライブラリは、さまざまなエラーシナリオに対応するための特定の例外を提供します。例については、エラーハンドリングのセクションを参照してください。
支払いカードデータを扱う際は、常にPCI DSS要件に従ってください。このライブラリには、機密情報をマスキングするためのヘルパー関数が含まれています。
from credit_card_stripe_parser.utils import mask_pan
pan = "5168755544412233"
masked_pan = mask_pan(pan) # 例: "516875******2233"
print(f"マスクされたPAN: {masked_pan}")