vsi_pln_pre.py 8.65 KB
"""
XML-HTTP
PARTNER
PLN-PREPAID MODULE
Version 1.0.0 (June 2016)
2016
REVISIONS
VERSION DATE DESCRIPTION
1.0.0 June 7th, 2016 Initial release
1
PREPAID
"""
# 1. Inquiry: protokol untuk melakukan pengecekan data tagihan/pembelian
"""
REQ :
?
        modul=PRE
        command=INQ
        msn={IDPEL/MSN}
        cid={CLIENTID}
        dt={DTTRX}
        hc={HASH}
        trxid={UniqueID}
        resp=XML

Contoh response Sukses:
<?xml version="1.0"?>
<root>
    <status>SUCCESS</status>
    <rc>0000</rc>
    <rcm>[0] CEK TAGIHAN SUKSES ke:88888888888 refnum:D0EE65CAB0C04601878612867541EEA5</rcm>
    <text>88888888888
        TestDu''mmyP
        R2/7000 VA
        Token Unsold: 0
        Adm 1.600,00
        *Denom Belum Termasuk Admin
    </text>
    <refnum>D0EE65CAB0C04601878612867541EEA5</refnum>
    <msn>88888888888</msn>
    <idpel>885555555555</idpel>
    <nama>TestDu''mmyPanjang8855555</nama>
    <tarifdaya>R2/7000</tarifdaya>
    <adm>1600</adm>
    <jmltokenunsold>0</jmltokenunsold>
</root>

        Contoh response Error:
<?xml version="1.0"?>
<root>
    <status>ERROR</status>
    <rc>0014</rc>
    <rcm>[14] IDPEL YANG ANDA MASUKKAN SALAH, MOHON TELITI KEMBALI. ke:888888888</rcm>
</root>
"""
# 2. Payment:
"""
        modul=PRE
        command=PAY
        nominal={NOMINAL}
        refnum={INQREF}
        cid={CLIENTID}
        dt={DTTRX}
        hc={HASH}
        trxid={UniqueID}
        resp=XML

Contoh response Sukses:

<?xml version="1.0"?>
<root>
    <status>SUCCESS</status>
    <rc>0000</rc>
    <rcm>[0] PEMBAYARAN SUKSES ke:88888888888 refnum:05062135116139A54A95CCC549DDA94C</rcm>
    <text>08/06/16 11:50
        05062135116139A54A95CCC549DDA94C
        TestDu''mmyP
        88888888888
        881111111111
        R2/6600 VA
        RP 201.600
        KWH352,0
        STROOM/TOKEN 2593 0960 8106 1072 1376
        ADM 1.600,00</text>
    <tanggal>2016-06-08 11:50:22</tanggal>
    <nama>TestDu''mmyPanjang8811111</nama>
    <msn>88888888888</msn>
    <idpel>881111111111</idpel>
    <tarifdaya>R2/6600</tarifdaya>
    <nominal>201600</nominal>
    <jmlkwh>352</jmlkwh>
    <token>2593-0960-8106-1072-1376</token>
    <ppn>0</ppn>
    <ppj>0</ppj>
    <adm>1600</adm>
    <angsuran>24000</angsuran>
    <materai>0</materai>
</root>

Contoh response Error:
<?xml version="1.0"?>
<root>
    <status>ERROR</status>
    <rc>0068</rc>
    <rcm>[68] TRANSAKSI TIDAK BISA DILAKUKAN SAAT INI, SILAHKAN LAKUKAN MANUAL
        ADVICE BEBERAPA SAAT LAGI. ke:233313211212
    </rcm>
</root>
"""
# 3. Advice: protokol untuk melakukan pengecekan transaksi dengan input payment refnum
"""
REQ :
?
        modul=PRE
        command=ADV
        nominal={NOMINAL}
        refnum={PAYREF}
        cid={CLIENTID}
        dt={DTTRX}&hc={HASH}
        trxid={UniqueID}
        resp=XML

        Contoh Response Sukses:
<?xml version="1.0"?>
<root>
<status>SUCCESS</status>
    <rc>0000</rc>
    <rcm>[0] PEMBAYARAN SUKSES ke:88888888888 refnum:051158BB9F2741AB893DCE972396DB59</rcm>
    <text>08/06/16 11:50
        05062135116139A54A95CCC549DDA94C
        TestDu''mmyP
        88888888888
        881111111111
        R2/6600
        RP 201.600
        KWH352,0
        STROOM/TOKEN 2593 0960 8106 1072 1376
        ADM 1.600,00
    </text>
    <tanggal>2016-06-08 11:50:22</tanggal>
    <nama>TestDu''mmyPanjang8811111</nama>
    <msn>88888888888</msn>
    <idpel>881111111111</idpel>
    <tarifdaya>R2/6600</tarifdaya>
    <nominal>201600</nominal>
    <jmlkwh>352</jmlkwh>
    <token>2593-0960-8106-1072-1376</token>
    <ppn>0</ppn>
    <ppj>0</ppj>
    <adm>1600</adm>
    <angsuran>24000</angsuran>
    <materai>0</materai>
</root>

Contoh response Error:
<?xml version="1.0"?>
<root><status>ERROR</status><rc>0096</rc><rcm>[96] ERROR TRANSAKSI TIDAK DITEMUKAN
ke:23331321121</rcm></root>
"""
# 4. Auto Payment :protokol untuk melakukan pembayaran/pembelian dengan tanpa melakukan inquiry
"""
REQ :
?
    modul=PRE
    command=PAY
    msn={22222222222}
    nominal={NOMINAL}
    cid={CLIENTID}
    dt={DTTRX}
    hc={HASH}
    trxid={UniqueID}
    resp=XML
Contoh Response Sukses:

Contoh response Error:
<?xml version="1.0"?>
<root><status>ERROR</status><rc>0068</rc><rcm>[68] TRANSAKSI TIDAK BISA DILAKUKAN SAAT INI,
SILAHKAN LAKUKAN MANUAL ADVICE BEBERAPA SAAT LAGI. ke:233313211212</rcm></root>
5. Advice Tanpa PAYREF: protokol untuk melakukan pengecekan transaksi tanpa input payment refnum
REQ :
?modul=PRE&command=ADV&msn={22222222222}&nominal={NOMINAL}&cid={CLIENTID}&dt={DTTRX}&hc={HASH
}&trxid={UniqueID}&resp=XML
Contoh Response:
<?xml version="1.0"?>
<root>
    <status>SUCCESS</status>
    <rc>0000</rc>
    <rcm>[0] PEMBAYARAN SUKSES ke:88888888888
        refnum:051158BB9F2741AB893DCE972396DB59</rcm><text>08/06/16 11:50
        05062135116139A54A95CCC549DDA94C
        TestDu''mmyP
        88888888888
        881111111111
        R2/6600
        RP 201.600
        KWH 352,0
        STROOM/TOKEN 2593 0960 8106 1072 1376
        ADM 1.600,00</text>
    <tanggal>2016-06-08 11:50:22</tanggal>
    <nama>TestDu''mmyPanjang8811111</nama>
    <msn>88888888888</msn>
    <idpel>881111111111</idpel>
    <tarifdaya>R2/6600</tarifdaya>
    <nominal>201600</nominal>
    <jmlkwh>352</jmlkwh>
    <token>2593-0960-8106-1072-1376</token>
    <ppn>0</ppn>
    <ppj>0</ppj>
    <adm>1600</adm>
    <angsuran>24000</angsuran>
    <materai>0</materai>
</root>

Contoh response Error:
<?xml version="1.0"?>
<root>
    <status>ERROR</status>
    <rc>0096</rc>
    <rcm>[96] ERROR TRANSAKSI TIDAK DITEMUKAN ke:23331321121</rcm>
</root>

Keterangan:
1. cid = identitas mitra, akan diinfokan ke mitra pada saat test maupun production.
2. dt = tanggal jam transaksi (YYYYMMDD).
3. hc = SHA256(cid+dt+secret key) , secret key dan cid akan diinfokan ke mitra pada saat test maupun production.
4. Semua info/nilai yang diapit oleh {…} wajib diganti dengan nilai yang seharusnya (tanpa mengandung {}).
5. trxid merupakan unique id dari mitra per transaksi dengan panjang maksimum 50 character.
6. resp merupakan format respon yang diinginkan (XML), secara default jika dikosongkan maka responnya merupakan format plaintext.Pesan Transaksi :
Pembayaran Sukses
[4] ERROR Biller Tidak terdaftar
[5] ERROR Lainnya
[6] ERROR Sentral diblok
[7] ERROR PPID diblok
[8] ERROR Waktu akses tidak valid
[9] ERROR Akun tidak aktif
[11] ERROR NEED TO SIGN ON
[12] ERROR Tidak bisa dibatalkan
[13] ERROR Nilai Transaksi tidak valid
8
[14] ERROR ID Tidak Terdaftar
[15] ERROR No Meter Tidak Terdaftar
[16] ERROR PRR SUBSCRIBER
[17] ERROR ID Punya Tunggakan
[18] ERROR Permintaan Sedang diproses
[26] Quota Transaksi Agen Tidak Mencukupi. Silahkan Kontak Agen.
[29] ERROR Kode Hash tidak valid
[30] ERROR Pesan tidak valid
[31] ERROR Kode Bank tidak terdaftar
[32] ERROR Sentral tidak terdaftar
[33] ERROR Produk tidak terdaftar
[34] ERROR PPID Tidak terdaftar
[35] ERROR Akun Tidak Terdaftar
[41] ERROR Nilai Transaksi dibawah Nilai Minimum
[42] ERROR Nilai Transaksi diatas Nilai Maximum
[43] ERROR Daya Baru Lebih Kecil dari Daya Sekarang
[44] ERROR Nilai Daya Tidak Valid
[45] ERROR Nilai Biaya Administrasi Tidak Valid
[46] ERROR Deposit Tidak Mencukupi
[47] ERROR Diluar Batas KWH
[48] ERROR Permintaan sudah kadaluarsa
[51] ERROR Transaksi Gagal dari Mesin Vending
[52] ERROR Transaksi dipending dari Mesin Vending
[53] ERROR Produk tidak ditemukan
[54] ERROR Jawaban dari Biller Tidak ditemukan
[55] ERROR Lainnya Mesin Vending
[56] ERROR Nomor Telpon Tidak diketahui
[63] ERROR Tidak ada Pembayaran
[60] ERROR Akun sudah didaftarkan
[67] ERROR CANNOT CONNECT
[68] ERROR Timeout
[69] ERROR Sertifikat tidak dikenal
[70] ERROR Timeout tidak refund
[72] ERROR Permintaan tidak mungkin dilayani
[73] ERROR Request dipending di Biller
[77] ERROR Id di suspend
[88] ERROR Tagihan sudah dibayar
[89] ERROR Tagihan tidak tersedia
[90] ERROR sedang proses CUT OFF
[91] ERROR Database
[92] ERROR Nomor Referensi Switching tidak ditemukan
[93] ERROR Nomor Referensi Switching tidak valid
[94] ERROR Pembatalan sudah dilakukan
[95] ERROR Kode Merchant tidak terdaftar
[96] ERROR Transaksi tidak ditemukan
[97] ERROR SW BANK Tidak identik
[98] ERROR Nomor Referensi Switching tidak valid
[146] ERROR di servis deposit
"""

import requests
import xmltodict

from .vsi import Vendor as VendorClass


class Vendor(VendorClass):
    def __init__(self, product_kd, cid=None, trx_id=None):
        VendorClass.__init__(self, product_kd, cid, trx_id)

    def inquiry(self):
        params = self.get_params('INQ')
        params["msn"] = self.cid
        result = requests.get(self.url, params=params)
        data = xmltodict(result)
        return data

    def payment(self):

        params = self.get_params('PAY')
        params["msn"] = self.cid
        result = requests.get(self.url, params=params)
        data = xmltodict(result)
        return data