Initial commit
This commit is contained in:
58
Emoney Info/Classes/api/MegaCashApi.swift
Executable file
58
Emoney Info/Classes/api/MegaCashApi.swift
Executable file
@ -0,0 +1,58 @@
|
||||
//
|
||||
// MegaCashApi.swift
|
||||
// Emoney Info
|
||||
//
|
||||
// Created by Wira Irawan on 27/07/24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
public class MegaCashApi : UnifiedNfcApi {
|
||||
var emoney : Emoney = Emoney()
|
||||
var riwayatList: [RiwayatCard] = []
|
||||
|
||||
public override init() {}
|
||||
|
||||
public func getBalance(resp : Data){
|
||||
self.emoney.setCardLabel("MegaCash")
|
||||
let value = resp.hexEncodedString()
|
||||
self.emoney.setCardNumber(value.subString(from: 4, to: value.count))
|
||||
apduRunner.exchangeApdu(apduCommand: EmoneyApduCommands.MEGA_APDU02, completionHandler: {response in
|
||||
if (response.sw1 == 0x90 && response.sw2 == 0x00){
|
||||
let balance = response.getData().hexEncodedString()
|
||||
self.emoney.setBalance(self.getRealBalance(reverseHexa: balance))
|
||||
self.emoney.setTampilRiwayat(false)
|
||||
self.updateScreen()
|
||||
self.apduRunner.sessionEx?.alertMessage = "readFinish".localizeString(string: self.langCode!)
|
||||
self.apduRunner.invalidateSession()
|
||||
} else {
|
||||
self.apduRunner.invalidateSession(msg: "readFailed".localizeString(string: self.langCode!))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func getRealBalance(reverseHexa: String?) -> Int {
|
||||
guard let reverseHexa = reverseHexa?.trimmingCharacters(in: .whitespacesAndNewlines), !reverseHexa.isEmpty else {
|
||||
return 0
|
||||
}
|
||||
|
||||
if reverseHexa.count % 2 != 0 {
|
||||
return 0
|
||||
}
|
||||
|
||||
var sb = ""
|
||||
for l in stride(from: reverseHexa.count / 2, through: 1, by: -1) {
|
||||
let index1 = reverseHexa.index(reverseHexa.startIndex, offsetBy: l * 2 - 2)
|
||||
let index2 = reverseHexa.index(reverseHexa.startIndex, offsetBy: l * 2 - 1)
|
||||
sb.append(reverseHexa[index1])
|
||||
sb.append(reverseHexa[index2])
|
||||
}
|
||||
return sb.hex2decimal()
|
||||
}
|
||||
|
||||
private func updateScreen(){
|
||||
if (self.apduRunner.callback != nil){
|
||||
self.apduRunner.callback?.complete(emoney: self.emoney)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user