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 ef35ab3e
authored
Aug 25, 2019
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
retribusi
1 parent
cfbd28d5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
281 additions
and
49 deletions
src/agratek/api/merchant/views/tangselpjk/bphtb.py
src/agratek/api/merchant/views/tangselpjk/pasar.py
src/agratek/api/merchant/views/tangselpjk/pbb.py
src/agratek/api/merchant/views/tangselpjk/pdl.py
src/agratek/api/merchant/views/tangselpjk/bphtb.py
View file @
ef35ab3
...
...
@@ -75,15 +75,17 @@ class Vendor(VendorClass):
}
def
set_
inquiry_error
(
self
,
resp
):
def
inquiry_error
(
self
,
resp
):
code
=
int
(
resp
[
"responseCode"
])
message
=
resp
[
"responseDesc"
]
if
code
==
54
:
raise
JsonRpcBillAllreadyPaidError
()
elif
code
==
55
:
raise
JsonRpcBillNotFoundError
()
else
:
raise
JsonRpcError
(
code
=
code
,
message
=
message
)
return
dict
(
code
=
code
,
message
=
message
)
# if code == 54:
# raise JsonRpcBillAllreadyPaidError()
# elif code == 55:
# raise JsonRpcBillNotFoundError()
# else:
# raise JsonRpcError(code=code, message=message)
def
response_field
(
self
):
resp
=
self
.
response
...
...
@@ -176,7 +178,7 @@ class Vendor(VendorClass):
return
result
else
:
self
.
set_
inquiry_error
(
resp
)
return
self
.
inquiry_error
(
resp
)
def
_inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
...
...
@@ -226,7 +228,7 @@ class Vendor(VendorClass):
return
self
.
set_failed
()
if
self
.
response
[
"responseCode"
]
!=
"00"
:
self
.
set_
inquiry_error
(
self
.
response
)
return
self
.
inquiry_error
(
self
.
response
)
params
=
json
.
dumps
(
self
.
response
)
log
.
info
(
"Payment url: {} params: {}"
.
format
(
self
.
pay_url
,
params
))
...
...
src/agratek/api/merchant/views/tangselpjk/pasar.py
0 → 100644
View file @
ef35ab3
import
base64
import
json
import
re
from
time
import
sleep
from
datetime
import
datetime
import
requests
from
opensipkd.base
import
get_settings
from
opensipkd.base.tools
import
get_random_string
,
get_random_number
from
opensipkd.base.tools.api
import
JsonRpcBillAllreadyPaidError
,
JsonRpcBillNotFoundError
from
opensipkd.pasar.models
import
PartnerProduk
,
H2hArInvoiceDet
from
pyramid_rpc.jsonrpc
import
JsonRpcError
from
..vendor
import
VendorClass
import
logging
log
=
logging
.
getLogger
(
__name__
)
import
urllib3
urllib3
.
disable_warnings
()
class
Vendor
(
VendorClass
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
# id_pel, customer_id, cust_trx, row
settings
=
get_settings
()
self
.
mid
=
'tangselrtr_mid'
in
settings
and
settings
[
'tangselrtr_mid'
]
or
None
self
.
key
=
'tangselrtr_key'
in
settings
and
settings
[
'tangselrtr_key'
]
or
None
self
.
url
=
'tangselrtr_url'
in
settings
and
settings
[
'tangselrtr_url'
]
or
None
key
=
":"
.
join
([
self
.
mid
,
self
.
key
])
.
encode
()
self
.
auth
=
base64
.
b64encode
(
key
)
.
decode
()
self
.
inq_url
=
'{0}/inquiry'
.
format
(
self
.
url
)
self
.
pay_url
=
'{0}/payment'
.
format
(
self
.
url
)
def
get_headers
(
self
):
return
{
'Content-Type'
:
'application/json'
,
'x-api-key'
:
self
.
key
}
def
get_url
(
self
,
url
=
None
):
return
url
and
self
.
url
+
url
or
self
.
url
def
inquiry_field
(
self
):
return
\
{
"kode_pedagang"
:
self
.
id_pel
,
}
def
inquiry_error
(
self
,
resp
):
if
resp
[
"response_code"
]
==
"C8111"
:
code
=
55
message
=
"Data tidak dtitemukan"
elif
resp
[
"response_code"
]
==
"C3077"
:
code
=
54
message
=
"Data sudah dibayar"
else
:
code
=
999
message
=
resp
[
"message"
]
return
dict
(
code
=
code
,
message
=
message
)
def
response_field
(
self
):
resp
=
self
.
response
if
resp
[
"code"
]
==
200
and
resp
[
"is_error"
]
==
0
:
data
=
resp
[
"content"
]
pokok
=
int
(
data
[
"biaya_tagihan"
]
or
'0'
)
denda
=
0
disc_biller
=
0
sub_total
=
pokok
+
denda
-
disc_biller
result
=
self
.
get_price
(
sub_total
)
admin
=
int
(
self
.
vendor_produk
.
produk
.
harga
)
# todo: cek kembali harga apakah wajar atau tidak
# adm_biller = int(resp["diskon"] or '0')
# jika harga admin biller > dari admin
# if self.amt_buy < sub_total+adm_biller:
# raise
# if admin < adm_biller:
# admin = adm_biller
rincian
=
dict
(
pokok
=
pokok
,
denda
=
denda
,
discount
=
disc_biller
,
subtotal
=
sub_total
,
admin
=
admin
,
total
=
sub_total
+
admin
,
npwrd
=
data
[
"kode_pedagang"
],
nama
=
data
[
"nama_pemilik"
],
no_hp_wr
=
data
[
"nomor_hp_pemilik"
],
no_tel_wr
=
data
[
"nomor_tlp_pemilik"
],
email_wr
=
data
[
"email_pemilik"
],
nama_toko
=
data
[
"nama_toko"
],
alamat
=
data
[
"lokasi_pasar"
],
blok
=
data
[
"blok_toko"
],
keterangan
=
data
[
"keterangan_alamat_toko"
]
or
""
,
luas
=
data
[
"luas_toko"
],
kategori
=
data
[
"kategori_usaha"
],
)
result
.
update
(
dict
(
rincian
=
rincian
))
return
result
else
:
return
self
.
inquiry_error
(
resp
)
def
_inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
return
self
.
set_response
(
message
=
'Parameter tidak lengkap'
)
self
.
request
=
self
.
inquiry_field
()
log
.
info
(
"Inquiry Request: url: {} params {}"
.
format
(
self
.
inq_url
,
self
.
request
))
self
.
save_log
(
"inquiry"
)
params
=
json
.
dumps
(
self
.
request
)
log
.
info
(
params
)
try
:
resp
=
requests
.
post
(
self
.
inq_url
,
data
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
20
)
except
:
log
.
info
(
"Biller Error"
)
return
if
not
resp
:
log
.
info
(
"No Response From Biller"
)
return
try
:
result
=
json
.
loads
(
resp
.
text
)
except
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Inquiry Response:
%
s"
%
self
.
response
)
return
resp
def
inquiry
(
self
):
resp
=
self
.
_inquiry
()
if
resp
is
None
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
resp
.
status_code
==
200
:
parsd
=
self
.
response_field
()
if
"code"
in
parsd
and
parsd
[
"code"
]
!=
0
:
return
self
.
set_response
(
code
=
parsd
[
"code"
],
message
=
parsd
[
"message"
],
typ
=
"inquiry"
)
return
self
.
set_success
(
parsd
,
typ
=
"inquiry"
)
else
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
def
payment
(
self
):
resp
=
self
.
_inquiry
()
typ
=
"payment"
if
not
resp
:
return
self
.
set_failed
()
if
self
.
response
[
"code"
]
!=
200
or
self
.
response
[
"is_error"
]
!=
0
:
parsd
=
self
.
inquiry_error
(
self
.
response
)
return
self
.
set_response
(
code
=
parsd
[
"code"
],
message
=
parsd
[
"message"
],
typ
=
typ
)
data
=
self
.
response_field
()
params
=
self
.
inquiry_field
()
params
.
update
({
"jumlah_retribusi"
:
data
[
'rincian'
][
'subtotal'
]})
self
.
request
=
params
self
.
save_log
(
typ
=
typ
)
log
.
info
(
"Payment url: {} params: {}"
.
format
(
self
.
pay_url
,
json
.
dumps
(
params
)))
try
:
resp
=
requests
.
post
(
self
.
pay_url
,
data
=
json
.
dumps
(
params
),
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
:
resp
=
None
if
resp
is
None
:
self
.
status
=
0
return
self
.
set_pending
()
try
:
result
=
json
.
loads
(
resp
.
text
)
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
except
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
self
.
status
=
0
return
self
.
set_pending
()
if
self
.
response
[
"code"
]
!=
200
or
self
.
response
[
"is_error"
]
!=
0
:
parsd
=
self
.
inquiry_error
(
self
.
response
)
return
self
.
set_response
(
code
=
parsd
[
"code"
],
message
=
parsd
[
"message"
],
typ
=
typ
)
elif
resp
.
status_code
==
200
:
self
.
status
=
1
# sukses
content
=
result
[
"content"
]
self
.
serial_number
=
'no_reff'
in
content
and
content
[
"no_reff"
]
.
strip
()
\
or
self
.
serial_number
data
[
"rincian"
]
.
update
(
dict
(
serial_number
=
self
.
serial_number
))
return
self
.
set_success
(
data
)
else
:
self
.
status
=
0
return
self
.
set_pending
()
def
advice
(
self
):
raise
JsonRpcError
(
message
=
"Not Implemented"
)
# if not self.v_produk_kd or not self.id_pel or not self.invoice_det:
# return dict(code=9999,
# message='Parameter tidak lengkap')
#
# if self.kategori == 'e-payment':
# order_id = self.invoice_det.vend_inv_no
# url = self.get_url('/order/{order_id}'.format(order_id=order_id))
# params = None
# self.request = url
# else:
# params = dict(
# data=dict(
# denom=self.v_produk_kd,
# number=self.id_pel
# )
# )
# self.request = params
# url = self.get_url('/prepaid/purchase-get')
#
# self.save_log("advice")
# try:
# resp = requests.get(url, params=params, verify=False,
# headers=self.get_headers(), timeout=15)
# except:
# return self.set_response()
#
# try:
# result = json.loads(resp.text)
# except:
# result = resp.text
#
# self.response = result
# if resp.ok:
# self.status = 1 # sukses
# data = "data" in result and result["data"] or None
# parsd = self.pars_data(data)
#
# elif resp.status_code == 400:
# self.status = -3
# parsd = dict(code=resp.status_code,
# message=resp.text)
# else:
# self.status = -4
# parsd = dict(code=500,
# message="Other Error")
#
# self.save_log('advice')
# return parsd
src/agratek/api/merchant/views/tangselpjk/pbb.py
View file @
ef35ab3
import
base64
import
json
from
time
import
sleep
import
logging
from
datetime
import
datetime
import
requests
import
urllib3
from
opensipkd.base
import
get_settings
from
opensipkd.base.tools
import
get_random_
string
,
get_random_
number
from
opensipkd.base.tools
import
get_random_number
from
opensipkd.base.tools.api
import
JsonRpcBillAllreadyPaidError
,
JsonRpcBillNotFoundError
from
opensipkd.pasar.models
import
PartnerProduk
,
H2hArInvoiceDet
from
pyramid_rpc.jsonrpc
import
JsonRpcError
from
..vendor
import
VendorClass
import
logging
log
=
logging
.
getLogger
(
__name__
)
import
urllib3
urllib3
.
disable_warnings
()
"""
PJDL
http://103.66.86.115:8989/interface-tangerang-1.0.0/pjdlJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/pjdlJson/pay
PBB
http://103.66.86.115:8989/interface-tangerang-1.0.0/pbbJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/pbbJson/pay
BPHTB
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
"""
class
Vendor
(
VendorClass
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
...
...
@@ -72,15 +53,10 @@ class Vendor(VendorClass):
}
def
set_
inquiry_error
(
self
,
resp
):
def
inquiry_error
(
self
,
resp
):
code
=
int
(
resp
[
"responseCode"
])
message
=
resp
[
"responseDesc"
]
if
code
==
54
:
raise
JsonRpcBillAllreadyPaidError
()
elif
code
==
55
:
raise
JsonRpcBillNotFoundError
()
else
:
raise
JsonRpcError
(
code
=
code
,
message
=
message
)
return
dict
(
code
=
code
,
message
=
message
)
def
response_field
(
self
):
resp
=
self
.
response
...
...
@@ -122,7 +98,7 @@ class Vendor(VendorClass):
return
result
else
:
self
.
set_
inquiry_error
(
resp
)
return
self
.
inquiry_error
(
resp
)
def
_inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
...
...
@@ -172,7 +148,7 @@ class Vendor(VendorClass):
return
self
.
set_failed
()
if
self
.
response
[
"responseCode"
]
!=
"00"
:
self
.
set_
inquiry_error
(
self
.
response
)
return
self
.
inquiry_error
(
self
.
response
)
params
=
json
.
dumps
(
self
.
response
)
log
.
info
(
"Payment url: {} params: {}"
.
format
(
self
.
pay_url
,
params
))
...
...
src/agratek/api/merchant/views/tangselpjk/pdl.py
View file @
ef35ab3
...
...
@@ -73,15 +73,16 @@ class Vendor(VendorClass):
}
def
set_
inquiry_error
(
self
,
resp
):
def
inquiry_error
(
self
,
resp
):
code
=
int
(
resp
[
"responseCode"
])
message
=
resp
[
"responseDesc"
]
if
code
==
54
:
raise
JsonRpcBillAllreadyPaidError
()
elif
code
==
55
:
raise
JsonRpcBillNotFoundError
()
else
:
raise
JsonRpcError
(
code
=
code
,
message
=
message
)
return
dict
(
code
=
code
,
message
=
message
)
# if code == 54:
# raise JsonRpcBillAllreadyPaidError()
# elif code == 55:
# raise JsonRpcBillNotFoundError()
# else:
# raise JsonRpcError(code=code, message=message)
def
response_field
(
self
):
resp
=
self
.
response
...
...
@@ -121,7 +122,7 @@ class Vendor(VendorClass):
return
result
else
:
self
.
set_
inquiry_error
(
resp
)
return
self
.
inquiry_error
(
resp
)
def
_inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
...
...
@@ -171,7 +172,7 @@ class Vendor(VendorClass):
return
self
.
set_failed
()
if
self
.
response
[
"responseCode"
]
!=
"00"
:
self
.
set_
inquiry_error
(
self
.
response
)
return
self
.
inquiry_error
(
self
.
response
)
params
=
json
.
dumps
(
self
.
response
)
log
.
info
(
"Payment url: {} params: {}"
.
format
(
self
.
pay_url
,
params
))
...
...
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