5. 取引コンテキストを表示する
最終更新
役に立ちましたか?
役に立ちましたか?
func displayTransactionContext(_ context: TransactionContext) {
// これをあなたのロケールに設定してください。
let locale = Locale(identifier: "en_US")
// ISO-4217 の数値コードをアルファベットコードにマップします。
// サポートする通貨に基づいてこのマッピングを拡張してください。
let iso4217NumToCode: [Int: String] = [
978: "EUR",
840: "USD"
]
let currencyFormatter = NumberFormatter()
currencyFormatter.locale = locale
currencyFormatter.numberStyle = .currency
if let currencyCode = iso4217NumToCode[context.currencyCode.bcdToInt()] {
currencyFormatter.currencyCode = currencyCode
}
let rawDateFormatter = DateFormatter()
rawDateFormatter.dateFormat = "yyMMdd"
guard let transactionDate = rawDateFormatter.date(from: context.transactionDate.bcdToString()) else {
// フォールバック: 解析に失敗した場合は日付の表示をスキップします。
return
}
let displayDateFormatter = DateFormatter()
displayDateFormatter.locale = locale
displayDateFormatter.dateStyle = .medium
let amountStr = currencyFormatter.string(from: context.amount as NSNumber) ?? "-"
let dateStr = displayDateFormatter.string(from: transactionDate)
let transactionTypeStr = context.transactionType.bcdToString()
switch transactionTypeStr {
case "00":
// 購入
break
case "20":
// 返金 / 修正
break
default:
// 不明なトランザクション種別
break
}
// amountStr、dateStr、scheme、isTransit、および transactionID で UI を更新します。
}