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 c1ebab42
authored
Oct 04, 2019
by
Solo Group
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
penambahan cek sukses dan Noref+1
1 parent
78053f22
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
166 additions
and
474 deletions
src/agratek/api/merchant/views/tangselpjk/bphtb.py
src/agratek/api/merchant/views/tangselpjk/pajak.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 @
c1ebab4
import
base64
import
logging
import
json
import
re
import
re
from
time
import
sleep
from
datetime
import
datetime
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
import
urllib3
from
opensipkd.base.tools
import
get_random_number
from
.pajak
import
Vendor
as
VendorClass
log
=
logging
.
getLogger
(
__name__
)
urllib3
.
disable_warnings
()
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
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/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
"""
"""
class
Vendor
(
VendorClass
):
class
Vendor
(
VendorClass
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
# id_pel, customer_id, cust_trx, row
settings
=
get_settings
()
self
.
mid
=
'tangselpjk_mid'
in
settings
and
settings
[
'tangselpjk_mid'
]
or
None
self
.
key
=
'tangselpjk_key'
in
settings
and
settings
[
'tangselpjk_key'
]
or
None
self
.
url
=
'tangselpjk_url'
in
settings
and
settings
[
'tangselpjk_url'
]
or
None
key
=
":"
.
join
([
self
.
mid
,
self
.
key
])
.
encode
()
self
.
auth
=
base64
.
b64encode
(
key
)
.
decode
()
self
.
inq_url
=
'{0}/bphtbJson/inq'
.
format
(
self
.
url
)
self
.
inq_url
=
'{0}/bphtbJson/inq'
.
format
(
self
.
url
)
self
.
pay_url
=
'{0}/bphtbJson/pay'
.
format
(
self
.
url
)
self
.
pay_url
=
'{0}/bphtbJson/pay'
.
format
(
self
.
url
)
def
get_headers
(
self
):
return
{
'Content-Type'
:
'application/json'
}
def
get_url
(
self
,
url
=
None
):
return
url
and
self
.
url
+
url
or
self
.
url
def
inquiry_field
(
self
):
def
inquiry_field
(
self
):
kini
=
datetime
.
now
()
kini
=
datetime
.
now
()
date_settlement
=
kini
.
strftime
(
"
%
m
%
d"
)
date_settlement
=
kini
.
strftime
(
"
%
m
%
d"
)
...
@@ -75,11 +39,6 @@ class Vendor(VendorClass):
...
@@ -75,11 +39,6 @@ class Vendor(VendorClass):
}
}
def
inquiry_error
(
self
,
resp
):
code
=
int
(
resp
[
"responseCode"
])
message
=
resp
[
"responseDesc"
]
return
dict
(
code
=
code
,
message
=
message
)
def
response_field
(
self
):
def
response_field
(
self
):
resp
=
self
.
response
resp
=
self
.
response
if
resp
[
"responseCode"
]
==
"00"
:
if
resp
[
"responseCode"
]
==
"00"
:
...
@@ -90,52 +49,6 @@ class Vendor(VendorClass):
...
@@ -90,52 +49,6 @@ class Vendor(VendorClass):
result
=
self
.
get_price
(
sub_total
)
result
=
self
.
get_price
(
sub_total
)
admin
=
int
(
self
.
vendor_produk
.
produk
.
harga
)
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
""""
"nilaiPasarObjekPajak": "000000002780000",
"jumlahBPHTBYangDibayar": "000000000650000",
"luasTanah": "000000139",
"terminalLoc": "Tangerang Selatan",
"nPWP": "0_.___.___._-__",
"rTWajibPajak": "009",
"accountCurrency": "360",
"namaNotaris": "CAMAT CITANGKIL",
"kelurahanObjekPajak": "TAMAN BARU",
"terminalId": "02W001",
"namaOperatorBank": "",
"alamatWajibPajak": "JL. PRAMUKA ASRI IV BLOK CII",
"dateSettlement": "0825",
"nop": "367503000700702270",
"responseCode": "00",
"jenisSetoran": "",
"terminalName": "Mobile POS Tangsel",
"kodePosWajibPajak": "0____",
"noRef": "859308",
"iDOperatorBank": "",
"namaBank": "",
"merchantType": "6014",
"tahunPajak": "2019",
"alamatObjekPajak": "KP SONDOL",
"kecamatanObjekPajak": "CITANGKIL",
"kelurahanWajibPajak": "RAWAASRI",
"namaWajibPajak": "INA NURJANAH",
"nomerPermohonan": "0000001",
"namaKCPBank": "",
"nomorTransaksi": "",
"luasBangunan": "000000000",
"kotaWajibPajak": "KOTA CILEGON",
"responseDesc": "SUCCESS",
"jenisPerolehanHak": "01",
"denda": "000000000000000",
"kecamatanWajibPajak": "CEMPAKA PUTIH",
"rWWajibPajak": "005"
"""
rincian
=
dict
(
rincian
=
dict
(
pokok
=
pokok
,
pokok
=
pokok
,
denda
=
denda
,
denda
=
denda
,
...
@@ -165,108 +78,9 @@ class Vendor(VendorClass):
...
@@ -165,108 +78,9 @@ class Vendor(VendorClass):
# = resp["namaKCPBank": "",
# = resp["namaKCPBank": "",
# = resp["nomorTransaksi": "",
# = resp["nomorTransaksi": "",
# = resp["responseDesc": "SUCCESS",
# = resp["responseDesc": "SUCCESS",
)
)
result
.
update
(
dict
(
rincian
=
rincian
))
result
.
update
(
dict
(
rincian
=
rincian
))
return
result
return
result
else
:
else
:
return
self
.
inquiry_error
(
resp
)
return
self
.
inquiry_error
(
resp
)
\ No newline at end of file
\ No newline at end of file
def
_inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
return
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
self
.
save_log
(
"inquiry"
)
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
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
"responseCode"
not
in
self
.
response
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
parsd
=
self
.
response_field
()
return
self
.
set_success
(
parsd
,
typ
=
"inquiry"
)
def
payment
(
self
):
resp
=
self
.
_inquiry
()
if
not
resp
:
return
self
.
set_failed
()
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
self
.
response
[
"noRef"
]
=
str
(
int
(
self
.
response
[
"noRef"
])
+
1
)
params
=
json
.
dumps
(
self
.
response
)
log
.
info
(
"Payment url: {} params: {}"
.
format
(
self
.
pay_url
,
params
))
try
:
resp
=
requests
.
post
(
self
.
pay_url
,
data
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
Exception
as
e
:
self
.
response
=
e
resp
=
None
if
resp
is
None
:
self
.
status
=
0
return
self
.
set_pending
()
if
resp
.
status_code
!=
200
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
return
self
.
set_pending
()
try
:
result
=
json
.
loads
(
resp
.
text
)
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
except
:
self
.
response
=
resp
.
text
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
return
self
.
set_pending
()
parsd
=
self
.
response_field
()
self
.
serial_number
=
'ntb'
in
result
and
result
[
"ntb"
]
.
strip
()
\
or
self
.
serial_number
parsd
[
"rincian"
]
.
update
(
dict
(
ntb
=
self
.
serial_number
,
ntp
=
'ntp'
in
result
and
result
[
"ntp"
]
.
strip
()
or
''
))
return
self
.
set_success
(
parsd
)
def
advice
(
self
):
raise
JsonRpcError
(
message
=
"Not Implemented"
)
src/agratek/api/merchant/views/tangselpjk/pajak.py
0 → 100644
View file @
c1ebab4
import
base64
import
json
import
logging
import
requests
from
opensipkd.base
import
get_settings
from
pyramid_rpc.jsonrpc
import
JsonRpcError
from
..vendor
import
VendorClass
import
urllib3
log
=
logging
.
getLogger
(
__name__
)
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
)
settings
=
get_settings
()
self
.
mid
=
'tangselpjk_mid'
in
settings
and
settings
[
'tangselpjk_mid'
]
or
None
self
.
key
=
'tangselpjk_key'
in
settings
and
settings
[
'tangselpjk_key'
]
or
None
self
.
url
=
'tangselpjk_url'
in
settings
and
settings
[
'tangselpjk_url'
]
or
None
key
=
":"
.
join
([
self
.
mid
,
self
.
key
])
.
encode
()
self
.
auth
=
base64
.
b64encode
(
key
)
.
decode
()
self
.
inq_url
=
None
self
.
pay_url
=
None
def
get_headers
(
self
):
return
{
'Content-Type'
:
'application/json'
}
def
get_url
(
self
,
url
=
None
):
return
url
and
self
.
url
+
url
or
self
.
url
def
inquiry_field
(
self
):
#Overide Please
pass
def
inquiry_error
(
self
,
resp
):
code
=
int
(
resp
[
"responseCode"
])
message
=
resp
[
"responseDesc"
]
return
self
.
set_response
(
message
=
message
,
code
=
code
)
def
response_field
(
self
):
#Overide PLease
pass
def
_inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
return
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
)
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
self
.
save_log
(
"inquiry"
)
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
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
"responseCode"
not
in
self
.
response
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
parsd
=
self
.
response_field
()
return
self
.
set_success
(
parsd
,
typ
=
"inquiry"
)
def
payment
(
self
):
resp
=
self
.
_inquiry
()
if
not
resp
:
return
self
.
set_failed
()
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
self
.
response
[
"noRef"
]
=
str
(
int
(
self
.
response
[
"noRef"
])
+
1
)
params
=
json
.
dumps
(
self
.
response
)
log
.
info
(
"Payment url: {} params: {}"
.
format
(
self
.
pay_url
,
params
))
try
:
resp
=
requests
.
post
(
self
.
pay_url
,
data
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
Exception
as
e
:
self
.
response
=
e
resp
=
None
if
resp
is
None
:
self
.
status
=
0
return
self
.
set_pending
()
if
resp
.
status_code
!=
200
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
return
self
.
set_pending
()
try
:
result
=
json
.
loads
(
resp
.
text
)
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
except
:
self
.
response
=
resp
.
text
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
return
self
.
set_pending
()
parsd
=
self
.
response_field
()
self
.
serial_number
=
'ntb'
in
result
and
result
[
"ntb"
]
.
strip
()
\
or
self
.
serial_number
parsd
[
"rincian"
]
.
update
(
dict
(
ntb
=
self
.
serial_number
,
ntp
=
'ntp'
in
result
and
result
[
"ntp"
]
.
strip
()
or
''
))
return
self
.
set_success
(
parsd
)
def
advice
(
self
):
raise
JsonRpcError
(
message
=
"Not Implemented"
)
src/agratek/api/merchant/views/tangselpjk/pbb.py
View file @
c1ebab4
import
base64
import
json
import
logging
import
logging
from
datetime
import
datetime
from
datetime
import
datetime
import
requests
import
urllib3
import
urllib3
from
opensipkd.base
import
get_settings
from
opensipkd.base.tools
import
get_random_number
from
opensipkd.base.tools
import
get_random_number
from
opensipkd.base.tools.api
import
JsonRpcBillAllreadyPaidError
,
JsonRpcBillNotFoundError
from
.pajak
import
Vendor
as
VendorClass
from
pyramid_rpc.jsonrpc
import
JsonRpcError
from
..vendor
import
VendorClass
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
urllib3
.
disable_warnings
()
urllib3
.
disable_warnings
()
...
@@ -17,22 +10,9 @@ urllib3.disable_warnings()
...
@@ -17,22 +10,9 @@ urllib3.disable_warnings()
class
Vendor
(
VendorClass
):
class
Vendor
(
VendorClass
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
# id_pel, customer_id, cust_trx, row
settings
=
get_settings
()
self
.
mid
=
'tangselpjk_mid'
in
settings
and
settings
[
'tangselpjk_mid'
]
or
""
self
.
key
=
'tangselpjk_key'
in
settings
and
settings
[
'tangselpjk_key'
]
or
""
self
.
url
=
'tangselpjk_url'
in
settings
and
settings
[
'tangselpjk_url'
]
or
""
key
=
":"
.
join
([
self
.
mid
,
self
.
key
])
.
encode
()
self
.
auth
=
base64
.
b64encode
(
key
)
.
decode
()
self
.
inq_url
=
'{0}/pbbJson/inq'
.
format
(
self
.
url
)
self
.
inq_url
=
'{0}/pbbJson/inq'
.
format
(
self
.
url
)
self
.
pay_url
=
'{0}/pbbJson/pay'
.
format
(
self
.
url
)
self
.
pay_url
=
'{0}/pbbJson/pay'
.
format
(
self
.
url
)
def
get_headers
(
self
):
return
{
'Content-Type'
:
'application/json'
}
def
get_url
(
self
,
url
=
None
):
return
url
and
self
.
url
+
url
or
self
.
url
def
inquiry_field
(
self
):
def
inquiry_field
(
self
):
kini
=
datetime
.
now
()
kini
=
datetime
.
now
()
date_settlement
=
kini
.
strftime
(
"
%
m
%
d"
)
date_settlement
=
kini
.
strftime
(
"
%
m
%
d"
)
...
@@ -53,11 +33,6 @@ class Vendor(VendorClass):
...
@@ -53,11 +33,6 @@ class Vendor(VendorClass):
}
}
def
inquiry_error
(
self
,
resp
):
code
=
int
(
resp
[
"responseCode"
])
message
=
resp
[
"responseDesc"
]
return
dict
(
code
=
code
,
message
=
message
)
def
response_field
(
self
):
def
response_field
(
self
):
resp
=
self
.
response
resp
=
self
.
response
if
resp
[
"responseCode"
]
==
"00"
:
if
resp
[
"responseCode"
]
==
"00"
:
...
@@ -99,116 +74,3 @@ class Vendor(VendorClass):
...
@@ -99,116 +74,3 @@ class Vendor(VendorClass):
else
:
else
:
return
self
.
inquiry_error
(
resp
)
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
)
try
:
resp
=
requests
.
post
(
self
.
inq_url
,
data
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
20
)
except
Exception
as
e
:
log
.
info
(
"Error: {}"
.
format
(
e
))
self
.
response
=
e
return
if
not
resp
:
msg
=
"No Response From Biller"
log
.
info
(
msg
)
self
.
response
=
msg
return
try
:
result
=
json
.
loads
(
resp
.
text
)
except
:
result
=
resp
.
text
self
.
response
=
result
self
.
save_log
(
"inquiry"
)
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
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
"responseCode"
not
in
self
.
response
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
self
.
response
[
"responseCode"
]
!=
"00"
:
self
.
inquiry_error
(
self
.
response
)
return
self
.
set_failed
(
typ
=
"inquiry"
)
parsd
=
self
.
response_field
()
return
self
.
set_success
(
parsd
,
typ
=
"inquiry"
)
def
payment
(
self
):
resp
=
self
.
_inquiry
()
if
resp
is
None
or
resp
and
resp
.
status_code
!=
200
:
return
self
.
set_pending
()
if
"responseCode"
not
in
self
.
response
:
return
self
.
set_pending
()
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
# ditambahkan disini karena minta noRefnya Berbeda
self
.
response
[
"noRef"
]
=
str
(
int
(
self
.
response
[
"noRef"
])
+
1
)
params
=
json
.
dumps
(
self
.
response
)
log
.
info
(
"Payment Request url: {} params: {}"
.
format
(
self
.
pay_url
,
params
))
try
:
resp
=
requests
.
post
(
self
.
pay_url
,
data
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
Exception
as
e
:
self
.
response
=
e
resp
=
None
if
resp
is
None
:
self
.
status
=
0
return
self
.
set_pending
()
if
resp
.
status_code
!=
200
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
return
self
.
set_pending
()
try
:
result
=
json
.
loads
(
resp
.
text
)
except
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
self
.
status
=
0
return
self
.
set_pending
()
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
if
"responseCode"
not
in
self
.
response
\
or
self
.
response
[
"responseCode"
]
!=
"00"
:
self
.
inquiry_error
(
self
.
response
)
return
self
.
set_failed
()
parsd
=
self
.
response_field
()
self
.
status
=
1
# sukses
self
.
serial_number
=
'ntb'
in
result
and
result
[
"ntb"
]
.
strip
()
\
or
self
.
serial_number
parsd
[
"rincian"
]
.
update
(
dict
(
ntb
=
self
.
serial_number
,
ntp
=
'ntp'
in
result
and
result
[
"ntp"
]
.
strip
()
or
''
))
return
self
.
set_success
(
parsd
)
def
advice
(
self
):
raise
JsonRpcError
(
message
=
"Not Implemented"
)
src/agratek/api/merchant/views/tangselpjk/pdl.py
View file @
c1ebab4
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
import
logging
from
datetime
import
datetime
log
=
logging
.
getLogger
(
__name__
)
from
opensipkd.base.tools
import
get_random_number
from
.pajak
import
Vendor
as
VendorClass
import
urllib3
import
urllib3
log
=
logging
.
getLogger
(
__name__
)
urllib3
.
disable_warnings
()
urllib3
.
disable_warnings
()
"""
"""
...
@@ -39,22 +27,9 @@ http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
...
@@ -39,22 +27,9 @@ http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
class
Vendor
(
VendorClass
):
class
Vendor
(
VendorClass
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
# id_pel, customer_id, cust_trx, row
settings
=
get_settings
()
self
.
mid
=
'tangselpjk_mid'
in
settings
and
settings
[
'tangselpjk_mid'
]
or
None
self
.
key
=
'tangselpjk_key'
in
settings
and
settings
[
'tangselpjk_key'
]
or
None
self
.
url
=
'tangselpjk_url'
in
settings
and
settings
[
'tangselpjk_url'
]
or
None
key
=
":"
.
join
([
self
.
mid
,
self
.
key
])
.
encode
()
self
.
auth
=
base64
.
b64encode
(
key
)
.
decode
()
self
.
inq_url
=
'{0}/pjdlJson/inq'
.
format
(
self
.
url
)
self
.
inq_url
=
'{0}/pjdlJson/inq'
.
format
(
self
.
url
)
self
.
pay_url
=
'{0}/pjdlJson/pay'
.
format
(
self
.
url
)
self
.
pay_url
=
'{0}/pjdlJson/pay'
.
format
(
self
.
url
)
def
get_headers
(
self
):
return
{
'Content-Type'
:
'application/json'
}
def
get_url
(
self
,
url
=
None
):
return
url
and
self
.
url
+
url
or
self
.
url
def
inquiry_field
(
self
):
def
inquiry_field
(
self
):
kini
=
datetime
.
now
()
kini
=
datetime
.
now
()
date_settlement
=
kini
.
strftime
(
"
%
m
%
d"
)
date_settlement
=
kini
.
strftime
(
"
%
m
%
d"
)
...
@@ -73,17 +48,6 @@ class Vendor(VendorClass):
...
@@ -73,17 +48,6 @@ class Vendor(VendorClass):
}
}
def
inquiry_error
(
self
,
resp
):
code
=
int
(
resp
[
"responseCode"
])
message
=
resp
[
"responseDesc"
]
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
):
def
response_field
(
self
):
resp
=
self
.
response
resp
=
self
.
response
if
resp
[
"responseCode"
]
==
"00"
:
if
resp
[
"responseCode"
]
==
"00"
:
...
@@ -116,108 +80,3 @@ class Vendor(VendorClass):
...
@@ -116,108 +80,3 @@ class Vendor(VendorClass):
else
:
else
:
return
self
.
inquiry_error
(
resp
)
return
self
.
inquiry_error
(
resp
)
def
_inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
return
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
Exception
as
e
:
self
.
response
=
e
log
.
info
(
"Biller Error: {}"
.
format
(
e
))
return
if
not
resp
:
msg
=
"No Response From Biller"
log
.
info
(
msg
)
self
.
response
=
msg
return
try
:
result
=
json
.
loads
(
resp
.
text
)
except
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Inquiry Response:
%
s"
%
self
.
response
)
return
self
.
response
=
result
self
.
save_log
(
"inquiry"
)
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
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
"responseCode"
not
in
self
.
response
:
return
self
.
set_failed
(
typ
=
"inquiry"
)
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
parsd
=
self
.
response_field
()
return
self
.
set_success
(
parsd
,
typ
=
"inquiry"
)
def
payment
(
self
):
resp
=
self
.
_inquiry
()
if
not
resp
:
return
self
.
set_failed
()
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
self
.
response
[
"noRef"
]
=
str
(
int
(
self
.
response
[
"noRef"
])
+
1
)
params
=
json
.
dumps
(
self
.
response
)
log
.
info
(
"Payment url: {} params: {}"
.
format
(
self
.
pay_url
,
params
))
try
:
resp
=
requests
.
post
(
self
.
pay_url
,
data
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
Exception
as
e
:
self
.
response
=
e
resp
=
None
if
resp
is
None
:
return
self
.
set_pending
()
if
resp
.
status_code
!=
200
:
self
.
response
=
resp
.
text
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
return
self
.
set_pending
()
try
:
result
=
json
.
loads
(
resp
.
text
)
except
:
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
return
self
.
set_pending
()
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
if
self
.
response
[
"responseCode"
]
!=
"00"
:
return
self
.
inquiry_error
(
self
.
response
)
parsd
=
self
.
response_field
()
self
.
serial_number
=
'ntb'
in
result
and
result
[
"ntb"
]
.
strip
()
\
or
self
.
serial_number
parsd
[
"rincian"
]
.
update
(
dict
(
ntb
=
self
.
serial_number
,
ntp
=
'ntp'
in
result
and
result
[
"ntp"
]
.
strip
()
or
''
))
return
self
.
set_success
(
parsd
)
def
advice
(
self
):
raise
JsonRpcError
(
message
=
"Not Implemented"
)
\ No newline at end of file
\ No newline at end of file
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