Commit 377ad8ac by Solo Group

vsi_pln_post

1 parent 1ea65b75
...@@ -294,20 +294,182 @@ from .vsi import Vendor as VendorClass ...@@ -294,20 +294,182 @@ from .vsi import Vendor as VendorClass
class Vendor(VendorClass): class Vendor(VendorClass):
#def __init__(self, product_kd, cid=None, trx_id=None, vendor_id): def pars_data(self, data):
# VendorClass.__init__(self, product_kd, cid, trx_id, vendor_id) return {
"bill_no": "subid" in data and data["subid"] or self.bill_no,
"nama": "nama" in data and data["nama"] or "NO-NAME",
"pokok": "tagihan" in data and data["tagihan"] or 0,
"denda": "denda" in data and data["denda"] or 0,
"admin": "admin" in data and data["admin"] or 0,
"total": "total" in data and data["total"] or 0,
"ppn": "ppn" in data and data["ppn"] or 0,
"trx_id": "trxid" in data and data["trxid"] or self.partner_log_id,
"ref_no": "refnum" in data and data["refnum"] or "",
"jml_bulan": "bulan" in data and data["bulan"] or "",
"tgh_bulan": "blth" in data and data["blth"] or "",
"tarif": "tarif" in data and data["tarif"] or "",
"tgl_bayar" : "date" in data and data["date"] or "",
"info" : "info1" in data and data["info1"] or "",
"stand_meter" : "standmeter" in data and data["standmeter"] or "",
}
def inquiry(self): def inquiry(self):
params = self.get_params('INQ') """
params["msn"] = self.cid :return:
:parameter url tobe submitted
cid = {CLIENTID}
dt = {DATE}
hc = {HASHCODE}
modul = pln
command = INQ
idpel = {IDPELANGGAN}
resp = XML
trxid = {IDTRANSAKSI}
:sukses response
<?xml version="1.0"?>
<root>
<status>SUCCESS</status>
<rc>0000</rc>
<rcm>
[0] CEK TAGIHAN SUKSES ke:532110000060 refnum:33ECE3543E62474AA0C6C3147D94A31D
</rcm>
<text>532110000060
DU'MMY-VSI-532110000
1 BLN
JUN16
RP TAG PLN RP 887.817
ADM RP 1.600
TOTAL RP 890.929
</text>
<refnum>33ECE3543E62474AA0C6C3147D94A31D</refnum>
<idpel>532110000060</idpel>
<nama>DU'MMY-VSI-532110000060</nama>
<bulan>1 BLN</bulan>
<blntagihan>JUN16</blntagihan>
<admin>1600</admin>
<tagihan>889329</tagihan>
<total>890929</total>
</root>
:error response
<?xml version = "1.0"?>
<root>
<status>ERROR</status>
<rc>0014</rc>
<rcm>
[14] IDPEL YANG ANDA MASUKKAN SALAH, MOHON TELITI KEMBALI.
</rcm>
< / root >
: notes
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.
"""
params = self.get_params(cmd='INQ', modul='PRE')
params["msn"] = self.bill_no
# params["voucherid"] = self.v_produk_kd
self.request = params
self.save_log('inquiry')
params['trxid'] = self.partner_log_id
result = requests.get(self.url, params=params) result = requests.get(self.url, params=params)
data = xmltodict(result) if result.ok:
data = xmltodict.parse(result.text)["root"]
else:
data = dict(error=result.text,
code=result.status_code)
self.response = data
self.save_log('inquiry')
if "status" in data and data["status"] and data["status"] == "SUCCESS":
# data = self.pars_data(data)
pass
elif "status" in data and data["status"] and data["status"] == "ERROR":
#todo: apakah data akan dimapping errornya?
data = dict(error=data["rcm"],
code=data["rc"])
return data return data
def payment(self): def payment(self):
"""
params = self.get_params('PAY') :parameter
params["msn"] = self.cid cid = {CLIENTID}
dt = {DATE}
hc = {HASHCODE}
modul = pln
command = PAY
idpel = {IDPELANGGAN}
resp = XML
trxid = {IDTRANSAKSI}
:response sukses
<?xml version="1.0"?>
<root>
<status>SUCCESS</status>
<rc>0000</rc>
<rcm>[0] PEMBAYARAN SUKSES ke:532110000060 refnum:0506213515100D3399B27293E3DBC535</rcm>
<text>22/06/16 14:29
0506213515100D3399B27293E3DBC535
532110000060
DU'MMY-VSI-532110000
R1/450
BLN JUN16
RP 887.729
ADM RP 1.600
TOTAL RP 890.929
SUKSES
</text>
<date>2016-06-22 14:29:25</date>
<refnum>0506213515100D3399B27293E3DBC535</refnum>
<idpel>532110000060</idpel>
<nama>DU'MMY-VSI-532110000060</nama>
<segmenpower>R1/450</segmenpower>
<startend>888800-889900</startend>
<blntagihan>JUN16</blntagihan>
<ppn>0</ppn>
<denda>0</denda>
<totaltagihanpln>887729</totaltagihanpln>
<admin>1600</admin>
<total>890929</total>
<info1>Informasi Hubungi Call Center: 123 Atau Hub. PLN Terdekat:</info1>
<info2>Terima Kasih</info2>
</root>
:response error
<?xml version="1.0"?>
<root>
<status>ERROR</status>
<rc>0088</rc>
<rcm>[88] TAGIHAN SUDAH TERBAYAR</rcm>
</root>
"""
params = self.get_params(cmd='PAY', modul='PRE')
params["msn"] = self.bill_no
# params["voucherid"] = self.v_produk_kd
self.request = params
# todo: apakah harus di cek dulu data inquirynya
self.save_log('payment')
params['trxid'] = self.partner_log_id
result = requests.get(self.url, params=params) result = requests.get(self.url, params=params)
data = xmltodict(result) if result.ok:
data = xmltodict.parse(result.text)["root"]
else:
data = dict(error=result.status_code)
self.response = data
self.save_log('payment')
if "status" in data and data["status"] and data["status"] == "SUCCESS":
# data = self.pars_data(data)
pass
elif "status" in data and data["status"] and data["status"] == "ERROR":
#todo: apakah data akan dimapping errornya?
data = dict(error=data["rcm"],
code=data["rc"])
return data return data
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!