structure.py 4.68 KB
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),
    ]