structure.py
5.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
from opensipkd.iso8583.network.structure import NETWORK_BITS
TRANSACTION_BITS = NETWORK_BITS.copy()
TRANSACTION_BITS.update({
2: ['PAN', 'Primary Account Number', 'LL', 99, 'n'],
3: ['Processing', 'Processing Code', 'N', 6, 'n'], # 301099 / 501099
4: ['Amount', 'Amount Transaction', 'N', 12, 'n'],
12: ['Time', 'Time Local Transaction', 'N', 6, 'n'],
13: ['Date', 'Date Local Transaction', 'N', 4, 'n'],
15: ['Settlement', 'Settlement Date', 'N', 4, 'n'],
18: ['Merchant', 'Merchant Type', 'N', 4, 'n'], # 6010 Teller, 6011 ATM
22: ['POS', 'POS Entry Mode Code', 'N', 3, 'n'], # '021'
32: ['Acquiring', 'Acquiring Institution Code', 'LL', 99, 'n'], # '110'
33: ['Forwarding', 'Forwarding Institution ID Code', 'LL', 99, 'n'], # '00110'
35: ['Track', 'Track 2 Data', 'LL', 99, 'n'],
37: ['Sequence', 'Sequence Number', 'N', 12, 'n'],
39: ['Response Code', 'Response Code', 'N', 2, 'n'],
41: ['Terminal', 'Terminal Identification Number', 'ANS', 8, 'ans'],
43: ['Card', 'Card Acceptor Name / Location', 'ANS', 40, 'ans'],
47: ['NTPD', 'Nomor Transaksi Pendapatan Daerah', 'LLL', 999, 'n'],
49: ['Currency', 'Transaction Currency Code', 'N', 3, 'n'],
61: ['Invoice ID', 'Invoice ID', 'LLL', 999, 'ans'],
62: ['Error', 'Error Message', 'LLL', 999, 'ans'],
})
#########################
# Response Code, Bit 39 #
#########################
RC_OK = '00'
RC_INVALID_NUMBER = '33'
RC_ALREADY_PAID = '54'
RC_NOT_AVAILABLE = '55'
RC_EXPIRE = '56'
RC_OTHER_ERROR = '76'
RC_INVALID_NIK = '85'
RC_DUPLIKASI_TGL_AKHIR_PAJAK = '87'
####################
# Response Message #
####################
ERR_INVALID_BANK = 'Bank ID {bank_id} tidak diperkenankan'
ERR_INVALID_NUMBER = 'NIK {nik} tidak benar, harus 16 angka'
ERR_INVALID_NUMBER_2 = 'Invoice ID {invoice_id} tidak benar'
ERR_INVALID_CHANNEL = 'Tidak diperkenankan nomor bayar {nomor_bayar} '\
'berawalan 01/02 melalui channel {channel_id}'
ERR_NOT_AVAILABLE = 'Invoice ID {invoice_id} tidak ada'
ERR_EXPIRE = 'Invoice ID {invoice_id} expire'
ERR_DUPLIKASI_TGL_AKHIR_PAJAK = 'Invoice ID {invoice_id} ganda. Perlu SMS '\
'untuk mendapatkan kode bayar.'
ERR_ALREADY_PAID = 'Invoice ID {invoice_id} sudah lunas'
ERR_ALREADY_PAID_2 = 'Invoice ID {invoice_id} status tidak tertagih tapi '\
'nilainya {nominal}'
ERR_INQUIRY_TIMEOUT = 'Jawaban inquiry tidak ada. kd_bayar {kd_bayar}'
ERR_OTHER = 'Under construction'
ERR_INVALID_NIK = 'NIK tidak sama. Identitas bank {identitas_bank}, '\
'identitas pemprov {identitas_pemprov}'
ERR_PAYMENT_TIMEOUT = 'Jawaban pembayaran tidak ada. '\
'kd_bayar {kd_bayar}, ntb {ntb}'
ERR_PAYMENT_FAILED = 'Jawaban pembayaran berstatus {kd_status}. '\
'kd_bayar {kd_bayar}, ntb {ntb}'
ERR_TRANSACTION_DATE = 'Transaction date {d} tidak benar'
ERR_SETTLEMENT_DATE = 'Settlement date {d} tidak benar'
# Saat reversal
ERR_PAYMENT_NOT_FOUND = 'Pembayaran tidak ditemukan. '\
'invoice_id {invoice_id}, ntb {ntb}'
ERR_REVERSAL_DONE = 'Pembayaran memang sudah dibatalkan. '\
'invoice_id {invoice_id}, ntb {ntb}'
ERR_REVERSAL_TIMEOUT = 'Jawaban pembatalan tidak ada. '\
'kd_bayar {kd_bayar}, ntb {ntb}'
ERR_REVERSAL_FAILED = 'Pembatalan gagal. kd_bayar {kd_bayar}, ntb {ntb}, '\
'kd_status {kd_status}'
ERR_DB = 'Database error'
##########################
# Bit 3 to name function #
##########################
INQUIRY_CODE = '301099'
PAYMENT_CODE = '541099'
REPRINT1_CODE = '901099'
REPRINT2_CODE = '601099'
########################
# Bit 61 saat MTI 0200 #
########################
INVOICE_ID = [
('Nomor Bayar', 16, 'A'),
('Nomor Identitas', 16, 'A'),
]
INVALID_NIK = [
('Nomor Identitas Bank', 16, 'N'),
('Nomor Identitas Pemprov', 16, 'N'),
]
########################
# Bit 61 saat MTI 0210 #
########################
INVOICE_PROFILE = [
('Nomor Bayar', 16),
('Nomor Rangka', 25),
('Nomor Mesin', 25),
('Nomor Identitas', 18),
('Nama Pemilik', 25),
('Alamat Pemilik', 40),
('Nomor Polisi', 9),
('Warna Plat', 6),
('Milik Ke', 3, 'N'),
('Nama Jenis KB', 15),
('Nama Merk KB', 15),
('Nama Model KB', 30),
('Tahun Buatan', 4, 'N'),
('Tgl Akhir Pajak Lama', 8, 'N'), # YMD
('Tgl Akhir Pajak Baru', 8, 'N'), # YMD
('Pokok BBN', 12, 'N'),
('Denda BBN', 12, 'N'),
('Pokok PKB', 12, 'N'),
('Denda PKB', 12, 'N'),
('Pokok SWD', 12, 'N'),
('Denda SWD', 12, 'N'),
('Pokok Adm STNK', 12, 'N'),
('Pokok Adm TNKB', 12, 'N'),
('Jumlah', 12, 'N'),
('Keterangan', 90),
('Kode Wilayah', 5),
]
ERR_INVALID_NUMBER = 'Invoice ID {invoice_id} tidak benar'
ERR_INVALID_BANK = 'Bank ID {id} tidak diperkenankan'
ERR_SETTLEMENT_DATE = 'Settlement date {raw} tidak benar'
ERR_TRANSACTION_DATETIME = 'Transaction datetime {raw} tidak benar'
ERR_TRANSACTION_DATE = 'Transaction date {raw} tidak benar'
ERR_TRANSACTION_TIME = 'Transaction time {raw} tidak benar'