models.py 2.85 KB
from sqlalchemy import (
    Column,
    Integer,
    Float,
    DateTime,
    String,
    ForeignKey,
    func,
    JSON,
    )
from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()


class Rpc(Base):
    __tablename__ = 'linkaja_trx'
    id = Column(Integer, primary_key=True)  # Bill Ref
    created = Column(
        DateTime(timezone=True), nullable=False, server_default=func.now())
    ip = Column(String(15), nullable=False)
    conf_name = Column(String(16), nullable=False)
    merchant = Column(String(100), nullable=False)
    terminal = Column(String(100), nullable=False)
    trx_type = Column(String(3), nullable=False)
    msisdn = Column(String(20), nullable=False)
    # Invoice ID = SPPT ID di PBB
    acc_no = Column(String(64), nullable=False)
    msg = Column(String(100))
    trx_date = Column(DateTime(timezone=True), nullable=False)
    # Dari inquiry response
    amount = Column(Float)
    # Dari inquiry response (Bill Ref),
    # diisi saat payment request (bill_ref) 
    inquiry_id = Column(Integer, ForeignKey('linkaja_trx.id'))
    # Dari payment request (trx_id)
    ntb = Column(String(32))
    # Penerjemahan bit 39
    resp_code = Column(String(2))
    # Penjelasan resp_code untuk pelanggan
    resp_msg = Column(String(100))
    # Penjelasan resp_code untuk audit sistem
    resp_orig_msg = Column(String(100))
    # Nama wajib pajak
    biller_name = Column(String(100))
    # Dari payment response (Transaction ID)
    ntp = Column(String(32))
    # Dari bit 11, dibutuhkan untuk reversal
    stan = Column(String(6))


class Log(Base):
    __tablename__ = 'log_iso'
    id = Column(Integer, primary_key=True)
    created = Column(
            DateTime(timezone=True), nullable=False, server_default=func.now())
    rpc_id = Column(Integer, ForeignKey(Rpc.id), nullable=False)
    ip = Column(String(15))
    conf_name = Column(String(16), nullable=False)
    mti = Column(String(4), nullable=False)
    bit_002 = Column(String(99))
    bit_003 = Column(String(6))
    bit_004 = Column(String(12))
    bit_007 = Column(String(10))
    bit_011 = Column(String(6))
    bit_012 = Column(String(6))
    bit_013 = Column(String(4))
    bit_015 = Column(String(4))
    bit_018 = Column(String(4))
    bit_022 = Column(String(3))
    bit_032 = Column(String(4))
    bit_033 = Column(String(10))
    bit_035 = Column(String(99))
    bit_037 = Column(String(12))
    bit_039 = Column(String(2))
    bit_041 = Column(String(8))
    bit_042 = Column(String(15))
    bit_043 = Column(String(40))
    bit_047 = Column(String(99))
    bit_048 = Column(String(99))
    bit_049 = Column(String(3))
    bit_059 = Column(String(16))
    bit_060 = Column(String(3))
    bit_061 = Column(String(22))
    bit_062 = Column(String(512))
    bit_063 = Column(String(255))
    bit_102 = Column(String(32))
    bit_107 = Column(String(8))
    bit_062_data = Column(JSON)