Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Kunto
/
backoffice
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 377ad8ac
authored
Jul 22, 2019
by
Solo Group
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
vsi_pln_post
1 parent
1ea65b75
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
171 additions
and
9 deletions
src/agratek/api/merchant/views/vsi_pln_pre.py
src/agratek/api/merchant/views/vsi_pln_pre.py
View file @
377ad8a
...
@@ -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
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment