Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
Prepaid Bank Simulator
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OPEN-SHARING
Prepaid Bank Simulator
Commits
b0f590b8
Commit
b0f590b8
authored
Mar 21, 2025
by
Abdullah Hafizh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add readme
parent
be8f4edd
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
246 additions
and
0 deletions
+246
-0
README.md
README.md
+246
-0
No files found.
README.md
View file @
b0f590b8
# Prepaid Bank Simulator
## 1. Inisiasi Library
Note : untuk menginisiasi library ke aplikasi.
-
debugResponse = 8ED5A3240F19B3CEF2E80ECD37A217A9BEBB5E2E28DCD30DF63819243EC6C119A4A31F6821DBB259D4809041E3B42F35F218F992A0FC0B1BD6CA7CEE2D2BFD2B70FDD3A030F0C6C7A698BB3BFAE1973183D4681E9A8F14035FD32443F483C1B5242AE78D49220BB47A7E826A3E0C8DF76A043921C46CA021A251B480E75454064FAEDAF6E0215A5412B468DD903CBCDC183DCB8A89E7A10F272F10110BDDF0108E7612E3F4C2B40DA895634840AD335ECA39BDB5A91C74BE5C6230E2AA7AFEC9CE41278990FD997337A14B205620EF6EA12380024DC6C1751C9003035C9DBE342B611ACFF5D5D8CEC75363FE9D3AEF357E35AC316C4712EB3C5B15C2434D54DCEC94246571D7DD8C5B271DD3136445A89EA6118397AC0BDD978A16F0E70A685A5B7ED527461064E218B04C348FF4D6E568DB0C69CFE1B1EC5B21E1E44C17AAF2E456FE1DD60CC79D619EA140B8A034A0E1017B5652E1BA1520712E9262E51423423988A387F8A474
| Variable | value | Type | Length | Remark |
| :--------------- | :---------------: | :---------------: | :---------------: | :--------------------------: |
| debugResponse |
*
contoh di atas | String | | didapat dari API unlockAAR |
```
val unlockAarResponse: UnlockAarResponse = aarDevice.unlockLibrary(
accessToken,
DeviceEnvironment.UNLOCK,
aarDevice.getDeviceId(),
debugToken,
"1"
)
val debugResponse: String = unlockAarResponse.data.debugResponse
```
Log dari library
```
2025-03-21 07:59:35.976 16741-16741 NATIVE LIBRARY id.mdd.prepaidbank V 1.02
2025-03-21 07:59:36.088 16741-16741 native-lib id.mdd.prepaidbank W Version: [20300331.235959]
2025-03-21 07:59:36.088 16741-16741 native-lib id.mdd.prepaidbank D builds: 158688023.000000
2025-03-21 07:59:36.088 16741-16741 native-lib id.mdd.prepaidbank D Lets fireup Cryptographic Enggine
2025-03-21 07:59:36.088 16741-16741 native-lib id.mdd.prepaidbank D Load everything
2025-03-21 07:59:36.088 16741-16741 native-lib id.mdd.prepaidbank D Load Driver 10 = 10
2025-03-21 07:59:36.095 16741-16741 Lib BCA id.mdd.prepaidbank D Version : BCAdll v.1.0.4
2025-03-21 07:59:36.112 16741-16741 ReaderLib id.mdd.prepaidbank V 1.09
2025-03-21 07:59:36.147 16741-16741 NATIVE LIBRARY id.mdd.prepaidbank D IMEI = 869583050017388
2025-03-21 07:59:36.153 16741-16741 NATIVE LIBRARY id.mdd.prepaidbank D strData = ���${e 2026-03-21
SIGNATURE 1.00
Mac (Wifi) = 02:00:00:00:00:00
Mac (lan) = BE:F8:A6:EF:69:99
DeviceId(IMEI) = 869583050017388
DeviceSoftwareVersion = 78
MANDIRI = OK
BNI = OK
BRI = OK
BCA = OK
DEBUG = OK
DKI = OK
NOBU = OK
MDD = OK
ICONOX = OK
MDRTOPOFF = OK
MDRC2C = OK
MDRAPI = OK
BNIC2C = OK
BNIAPI = OK
BRIAPI = OK
MEGA = OK
LOKET = OK
DKITOPAPI = OK
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[2026-03-21]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[SIGNATURE 1.00]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[Mac (Wifi) = 02:00:00:00:00:00]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[Mac (lan) = BE:F8:A6:EF:69:99]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[DeviceId(IMEI) = 869583050017388]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[DeviceSoftwareVersion = 78]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[MANDIRI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[BNI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[BRI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[BCA = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[DEBUG = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[DKI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[NOBU = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[MDD = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[ICONOX = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[MDRTOPOFF = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[MDRC2C = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[MDRAPI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[BNIC2C = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[BNIAPI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[BRIAPI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[MEGA = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[LOKET = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[DKITOPAPI = OK]
2025-03-21 07:59:36.153 16741-16741 native-lib id.mdd.prepaidbank D key=[ ]
2025-03-21 07:59:36.625 16741-16741 native-lib id.mdd.prepaidbank D Expirity : 31507224.000000
```
## 2. Fungsi findCard
Note : untuk mendeteksi kartu yang ditempel.
-
DEFAULT_TIMEOUT = lama menunggu kartu untuk ditempel ke reader
-
uid = id kartu yang didapat dari reader
-
uidLen = panjang uid yang didapatkan
-
cardType = tipe kartu yang ditempel
```
myReader.findCard(DEFAULT_TIMEOUT, uid, uidLen, cardType)
```
## 3. Fungsi samInit*
Note : untuk menginisiasi konfigurasi SAM (Secure Access Module) Bank.
### 3.1 Bank Mandiri
-
samPin = pin sam Mandiri
-
mid = mid sam Mandiri
-
tid = tid sam Mandiri
```
if (myReader.mandiriEnabled()) {
val samPin: String = "$sampin"
val mid: String = "$mid"
val tid: String = "$tid"
val bpin = utilsLib.HexStringToByteArray(samPin)
val bmid = utilsLib.HexStringToByteArray(mid)
val btid = utilsLib.HexStringToByteArray(tid)
myReader.mandiriDeductSetConfig(bpin, bmid, btid)
myReader.readerMandiriSetSamSlot(OrganicDriver.ORGANIC_SAM2)
myReader.readerMandiriEnableFastDeduct()
}
```
### 3.2 Bank BNI
-
merriedCode = merriedcode sam BNI
-
bniTid = tid sam BNI
```
if (myReader.bniEnabled()) {
val merriedCode = utilsLib.HexStringToByteArray("$merriedCode")
val bniTid = utilsLib.HexStringToByteArray("$bniTid")
myReader.bniSetConfig(merriedCode, bniTid)
myReader.readerBniSetSamSlot(OrganicDriver.ORGANIC_SAM3)
}
```
### 3.3 Bank BRI
-
brimid = mid sam BRI
-
britid = tid sam BRI
-
briprocode = procode sam BRI
-
batch = batchnumber transaction
-
reference = reference number transaction
```
if (myReader.briEnabled()) {
val brimid = utilsLib.HexStringToByteArray("$brimid")
val britid = utilsLib.HexStringToByteArray("$britid")
val briprocode = utilsLib.HexStringToByteArray("$briprocode")
val batch: Int = 3
val reference: Int = 1
myReader.briSetConfig(brimid, britid, briprocode, batch.toByte(), reference)
myReader.readerBriSetSamSlot(OrganicDriver.ORGANIC_SAM1)
}
```
### 3.4 Bank BCA
-
bcamid = mid sam BCA
-
bcatid = tid sam BCA
-
bcaMinBalance = minimum balance transaction
```
if (myReader.bcaEnabled()) {
val bcamid: String = "$bcamid"
val bcatid: String = "$bcatid"
val bcaMinBalance: Int = 0
myReader.readerBcaSetSamSlot(OrganicDriver.ORGANIC_SAM4)
val strlogRsp = arrayOfNulls<String>(1)
myReader.bcaSetConfig(bcamid, bcatid, bcaMinBalance, strlogRsp)
}
```
### 3.5 Bank DKI
-
dkimid = mid sam DKI
-
dkitid = tid sam DKI
-
reff = refference number transaksi
```
val dkimid: ByteArray = utilsLib.HexStringToByteArray("$dkimid")
val dkitid: ByteArray = utilsLib.HexStringToByteArray("$dkitid")
val reff: Int = 0
myReader.readerDkiSetSamSlot(OrganicDriver.ORGANIC_SAM2)
myReader.dkiSetDevMode(true)
myReader.dkiSetConfig(dkimid, dkitid, reff.toByte())
```
## 4. Fungsi readerDeduct
Note : untuk memotong saldo kartu prepaid.
-
cardType = tipe kartu yang didapat dari findCard
-
StrDate = tanggal dilakukannya transaksi (yyyyMMddHHmmss)
-
value = amount yang akan dideduct
-
bankType = respon tipe bank dari kartu prepaid yang digunakan
-
balance = respon balance kartu prepaid setelah transaksi
-
cardNumber = respon nomor kartu prepaid yang digunakan
-
report = respon deduct report (disimpan untuk generate settlement)
-
errorCode = code error deduct process
-
deductMode = mode untuk deduct (readerLib.DEDUCT_SIMULATE_NORMAL)
```
myReader.readerDeduct(cardType[0], StrDate, value, bankType, balance, cardNumber, report, errorCode)
```
## 5. Fungsi readerBalance
Note : untuk mendapatkan saldo kartu prepaid.
-
cardType = tipe kartu yang didapat dari findCard
-
StrDate = tanggal dilakukannya transaksi (yyyyMMddHHmmss)
-
bankType = respon tipe bank dari kartu prepaid yang digunakan
-
balance = respon balance kartu prepaid
-
cardNumber = respon nomor kartu prepaid yang digunakan
-
errorCode = code error deduct process
```
myReader.readerGetBalance(cardType[0], StrDate, bankType, balance, cardNumber, errorCode)
```
## 6. Error Code
Berikut pengertian dari Error Code yang mungkin terjadi :
| Return Code | Remarks |
| :--------: | :-------------------------- |
| 0x9000 | APDU_ERROR_NONE (SUCCESS) |
| 0x00BE | ERROR_BRI_INSUFFICIENT_FUND |
| 0x1001 | ERROR_SAM_NOT_INIT |
| 0x1002 | ERROR_INIT_PARAM |
| 0x1003 | ERROR_INSUFFICIENT_FUND |
| 0x1004 | ERROR_TIMEOUT |
| 0x1005 | ERROR_INVALID_PIN |
| 0x1006 | ERROR_WRONG_INSTITUTION |
| 0x1007 | ERROR_OVERLIMIT |
| 0x1008 | ERROR_INACTIVECARD |
| 0x100A | ERROR_GRACE_PERIOD |
| 0x100B | ERROR_INSUFFICIENT_FUND1 |
| 0x100C | ERROR_UNCOMPLETTE (PARTIAL) |
| 0x100E | ERROR_SAM_NOT_SUPPORT |
| 0x100D | ERROR_DEDUCT_TOO_FAST |
| 0x100F | ERROR_EXPIRED_CARD |
| 0x1022 | ERROR_WRONG_NOCOMPLETTE_CARD|
| 0x1025 | ERROR_BANK_NOT_SUPPORTED |
| 0x1026 | ERROR_UNKNOWN_CMD |
| 0x1027 | ERROR_CRC_ERROR |
| 0x1100 | ERROR_UNCOMPLETTE |
| 0x5000 | ERROR_MIFARE_LOADKEY |
| 0x5001 | ERROR_MIFARE_AUTH |
| 0x5002 | ERROR_CARD_TYPE |
| 0x5003 | ERROR_REQUEST_DATA |
| 0x5004 | ERROR_REQUEST_LOGOUT |
| 0x5005 | ERROR_MIFARE_READ |
| 0x5006 | ERROR_MIFARE_WRITE |
| 0x5103 | ERROR_BNI_PURSE_DISABLED |
| 0x5104 | ERROR_BNI_UNMERRIED_SAM |
| 0xD000 | ERROR_CLASS_NOT_INIT |
| 0xE000 | ERROR_ACTIVATION_VAILED |
| 0xE001 | ERROR_ACTIVATION_REQUIRED |
| 0xE002 | ERROR_SELECTED_BANK_DISABLED|
| 0xFFEC | ERROR_APDU_EXCHANGE |
| 0xFFED | ERROR_HW_NOACK |
| 0xFFEF | SW_ERROR_LOOP |
| 0xFFFE | HW_ERROR_UNKNOWN |
| 0x6C00 | MANDIRI_SAM_BLOCKED |
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment