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 3f809681
authored
Aug 04, 2019
by
Solo Group
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
VSI
1 parent
1d67c30f
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
173 additions
and
175 deletions
src/agratek/api/merchant/views/odeo/__init__.py
src/agratek/api/merchant/views/vendor_trx.py
src/agratek/api/merchant/views/vsi/bpjskes.py
src/agratek/api/merchant/views/vsi/pln_post.py
src/agratek/api/merchant/views/vsi/pln_pre.py
src/agratek/api/merchant/views/vsi/pulsa.py
src/agratek/api/merchant/views/odeo/__init__.py
View file @
3f80968
...
@@ -27,45 +27,35 @@ class Vendor(VendorClass):
...
@@ -27,45 +27,35 @@ class Vendor(VendorClass):
key
=
":"
.
join
([
self
.
mid
,
self
.
key
])
.
encode
()
key
=
":"
.
join
([
self
.
mid
,
self
.
key
])
.
encode
()
self
.
auth
=
base64
.
b64encode
(
key
)
.
decode
()
self
.
auth
=
base64
.
b64encode
(
key
)
.
decode
()
def
set_response
(
self
,
result
=
None
,
data
=
None
,
message
=
None
,
code
=
None
):
def
set_response
(
self
,
data
=
None
,
message
=
None
,
code
=
999
,
typ
=
"inquiry"
):
if
result
:
if
not
data
and
message
:
self
.
response
=
result
elif
not
data
and
message
:
code
=
code
and
code
or
500
message
=
message
and
message
or
"Biller No Response"
message
=
message
and
message
or
"Biller No Response"
data
=
dict
(
code
=
code
,
data
=
dict
(
code
=
code
,
message
=
message
)
message
=
message
)
self
.
result
=
data
self
.
result
=
data
self
.
save_log
(
'inquiry'
)
self
.
save_log
(
typ
)
log
.
info
(
"Res
ponse To Cus
t:
%
s"
%
data
)
log
.
info
(
"Res
ul
t:
%
s"
%
data
)
return
data
return
data
def
request_post
(
self
,
params
,
url
=
None
):
def
get_headers
(
self
):
headers
=
{
'Authorization'
:
'Bearer {key}'
.
format
(
key
=
self
.
auth
)}
return
{
'Authorization'
:
'Bearer {key}'
.
format
(
key
=
self
.
auth
)}
data
=
json
.
dumps
(
params
)
url
=
url
and
self
.
url
+
url
or
self
.
url
try
:
with
requests
.
session
():
resp
=
requests
.
post
(
url
,
data
=
data
,
verify
=
False
,
headers
=
headers
,
timeout
=
15
)
except
:
resp
=
None
return
resp
def
get_url
(
self
,
url
=
None
):
return
url
and
self
.
url
+
url
or
self
.
url
def
request_get
(
self
,
params
,
url
=
None
):
# def request_post(self, data, url=None):
headers
=
{
'Authorization'
:
'Bearer {key}'
.
format
(
key
=
self
.
auth
)}
# # data = json.dumps(params)
url
=
url
and
self
.
url
+
url
or
self
.
url
# url = url and self.url + url or self.url
try
:
# return requests.post(url, data=data, verify=False,
# headers=self.get_headers(), timeout=15)
# # try:
# # pass
# except requests.exceptions.RequestException as e:
# resp = None
#
# return resp
with
requests
.
session
():
resp
=
requests
.
get
(
url
,
params
=
params
,
verify
=
False
,
headers
=
headers
,
timeout
=
15
)
except
:
resp
=
None
return
resp
def
inquiry
(
self
):
def
inquiry
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
:
...
@@ -75,21 +65,22 @@ class Vendor(VendorClass):
...
@@ -75,21 +65,22 @@ class Vendor(VendorClass):
params
=
dict
(
params
=
dict
(
number
=
self
.
id_pel
number
=
self
.
id_pel
)
)
url
=
'/prepaid/pln/inquiry'
url
=
self
.
get_url
(
'/prepaid/pln/inquiry'
)
else
:
else
:
params
=
dict
(
params
=
dict
(
denom
=
self
.
v_produk_kd
,
denom
=
self
.
v_produk_kd
,
number
=
self
.
id_pel
number
=
self
.
id_pel
)
)
url
=
'/postpaid/inquiry'
url
=
self
.
get_url
(
'/postpaid/inquiry'
)
self
.
request
=
params
self
.
request
=
params
log
.
info
(
"Inquiry Request: url:
%
s params
%
s"
%
(
url
,
params
))
log
.
info
(
"Inquiry Request: url:
%
s params
%
s"
%
(
url
,
params
))
self
.
save_log
(
"inquiry"
)
self
.
save_log
(
"inquiry"
)
try
:
try
:
resp
=
self
.
request_get
(
params
,
url
)
resp
=
requests
.
get
(
url
,
params
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
:
except
:
return
self
.
set_response
(
message
=
"Biller No Response"
)
return
self
.
set_response
(
message
=
"Biller No
t
Response"
)
if
not
resp
:
if
not
resp
:
return
self
.
set_response
(
message
=
"Biller No Response"
)
return
self
.
set_response
(
message
=
"Biller No Response"
)
...
@@ -98,50 +89,60 @@ class Vendor(VendorClass):
...
@@ -98,50 +89,60 @@ class Vendor(VendorClass):
result
=
json
.
loads
(
resp
.
text
)
result
=
json
.
loads
(
resp
.
text
)
except
:
except
:
result
=
resp
.
text
result
=
resp
.
text
self
.
response
=
result
log
.
info
(
"Inquiry Response:
%
s"
%
result
)
log
.
info
(
"Inquiry Response:
%
s"
%
self
.
response
)
if
resp
.
ok
:
if
resp
.
status_code
==
200
:
self
.
status
=
1
# sukses
self
.
status
=
1
# sukses
data
=
"data"
in
result
and
result
[
"data"
]
or
None
data
=
"data"
in
result
and
result
[
"data"
]
or
None
parsd
=
self
.
pars_data
(
data
)
parsd
=
self
.
pars_data
(
data
)
if
parsd
:
if
parsd
:
parsd
.
update
(
code
=
0
,
parsd
.
update
(
code
=
0
,
status
=
"SUCCES"
)
messagge
=
"SUCCES"
,
status
=
"SUCCESS"
)
elif
resp
.
status_code
==
400
:
elif
resp
.
status_code
==
400
:
self
.
status
=
-
1
self
.
status
=
-
1
message
=
"data"
in
result
and
result
[
"data"
]
or
{}
message
=
"data"
in
result
and
result
[
"data"
]
or
{}
message
=
message
and
"errors"
in
message
and
message
[
"errors"
]
or
message
message
=
message
and
"errors"
in
message
and
message
[
"errors"
]
or
message
message
=
type
(
message
)
is
list
and
", "
.
join
(
message
)
or
message
message
=
type
(
message
)
is
list
and
", "
.
join
(
message
)
or
message
parsd
=
dict
(
code
=
resp
.
status_code
,
parsd
=
dict
(
code
=
resp
.
status_code
,
message
=
message
)
message
=
message
)
else
:
else
:
self
.
status
=
-
1
self
.
status
=
-
1
parsd
=
dict
(
code
=
500
,
parsd
=
None
message
=
"Other Error"
)
return
self
.
set_response
(
parsd
)
#parsd
# self.response = result
# log.info("Response To Cust: %s" % parsd)
# self.result = parsd
# self.save_log('inquiry')
return
self
.
set_response
(
result
,
parsd
)
#parsd
def
gagal_transaksi
(
self
,
inq
):
self
.
status
=
-
2
# Try Other Vendor
if
inq
:
inq
.
update
(
dict
(
code
=
68
,
message
=
"PENDING"
,
status
=
"PENDING"
))
return
self
.
set_response
(
data
=
inq
,
typ
=
"payment"
)
else
:
parsd
=
self
.
get_price
()
parsd
.
update
(
dict
(
code
=
68
,
message
=
"PENDING"
,
status
=
"PENDING"
))
return
self
.
set_response
(
data
=
parsd
,
typ
=
"payment"
)
def
gagal_transaksi
(
self
,
code
):
def
get_price
(
self
,
inq
=
None
):
if
code
==
400
:
product_id
=
self
.
invoice_det
.
produk
.
id
self
.
status
=
-
3
if
hasattr
(
self
.
invoice_det
,
"customer_id"
):
partner_id
=
self
.
invoice_det
.
customer_id
else
:
else
:
self
.
status
=
-
2
partner_id
=
self
.
invoice_det
.
h2h_ar_invoice
.
customer_id
parsd
=
dict
(
harga
=
self
.
vendor_produk
.
produk
.
harga
status
=
"FAILED"
,
self
.
discount
=
PartnerProduk
.
get_discount
(
partner_id
,
product_id
)
code
=
code
,
self
.
amt_sell
=
harga
-
self
.
discount
message
=
"Gagal Transaksi"
return
dict
(
subtotal
=
harga
,
discount
=
self
.
discount
,
total
=
self
.
amt_sell
)
)
self
.
result
=
parsd
self
.
save_log
(
'payment'
)
return
parsd
def
payment
(
self
):
def
payment
(
self
):
params
=
dict
(
params
=
dict
(
...
@@ -158,8 +159,18 @@ class Vendor(VendorClass):
...
@@ -158,8 +159,18 @@ class Vendor(VendorClass):
if
self
.
vendor_produk
.
produk
.
kategori
.
kode
in
[
"e-payment"
,
"e-voucher"
]:
if
self
.
vendor_produk
.
produk
.
kategori
.
kode
in
[
"e-payment"
,
"e-voucher"
]:
inq
=
self
.
inquiry
()
inq
=
self
.
inquiry
()
if
inq
[
"code"
]
!=
0
:
return
self
.
set_response
()
resp
=
self
.
request_post
(
params
,
'/prepaid/purchase'
)
url
=
self
.
get_url
(
"/prepaid/purchase"
)
try
:
resp
=
requests
.
post
(
url
,
data
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
:
resp
=
None
if
not
resp
:
self
.
gagal_transaksi
(
inq
)
try
:
try
:
result
=
json
.
loads
(
resp
.
text
)
result
=
json
.
loads
(
resp
.
text
)
except
:
except
:
...
@@ -175,22 +186,25 @@ class Vendor(VendorClass):
...
@@ -175,22 +186,25 @@ class Vendor(VendorClass):
parsd
=
{}
parsd
=
{}
if
resp
.
status_code
==
200
and
type
(
result
)
is
dict
:
# 0200
if
resp
.
status_code
==
200
and
type
(
result
)
is
dict
:
# 0200
data
=
"data"
in
result
and
result
[
"data"
]
or
{}
data
=
"data"
in
result
and
result
[
"data"
]
or
{}
# cel rc status
if
not
data
:
if
not
data
:
return
self
.
gagal_transaksi
(
500
)
return
self
.
gagal_transaksi
(
inq
)
if
"rc"
in
data
:
if
"rc"
in
data
:
parsd
[
"code"
]
=
int
(
data
[
"rc"
])
parsd
[
"code"
]
=
int
(
data
[
"rc"
])
if
data
[
"rc"
]
==
"13"
:
if
data
[
"rc"
]
==
"13"
:
parsd
[
"status"
]
=
"FAILED"
parsd
[
"status"
]
=
"FAILED"
self
.
status
=
-
2
self
.
status
=
-
3
elif
data
[
"rc"
]
==
"67"
:
parsd
[
"status"
]
=
"DOUBLE"
self
.
status
=
-
3
# Gagal Karena Pernah Transaksi
elif
data
[
"rc"
]
==
"68"
:
elif
data
[
"rc"
]
==
"68"
:
parsd
[
"status"
]
=
"PENDING"
parsd
[
"status"
]
=
"PENDING"
self
.
status
=
-
1
# pending
self
.
status
=
-
1
# pending
elif
data
[
"rc"
]
==
"67"
:
if
self
.
status
==
-
2
:
parsd
[
"status"
]
=
"DOUBLE"
parsd
[
"message"
]
=
"PENDING"
self
.
status
=
-
2
# Gagal Karena Pernah Transaksi
else
:
# Status ini hanya sementara nunggu refund
parsd
[
"message"
]
=
"FAILED"
# Status ini hanya sementara nunggu refund
# Status -2 ini harus dicari solusi mencari vendor lain
# Status -2 ini harus dicari solusi mencari vendor lain
else
:
else
:
self
.
status
=
1
self
.
status
=
1
...
@@ -200,39 +214,25 @@ class Vendor(VendorClass):
...
@@ -200,39 +214,25 @@ class Vendor(VendorClass):
or
self
.
serial_number
or
self
.
serial_number
self
.
vend_inv_no
=
"order_id"
in
data
and
data
[
"order_id"
]
or
None
self
.
vend_inv_no
=
"order_id"
in
data
and
data
[
"order_id"
]
or
None
self
.
amt_buy
=
"price"
in
data
and
data
[
"price"
]
or
0
if
not
inq
:
if
not
inq
:
if
parsd
[
"code"
]
==
0
or
parsd
[
"code"
]
==
68
:
if
parsd
[
"code"
]
==
0
or
parsd
[
"code"
]
==
68
:
self
.
amt_buy
=
"price"
in
data
and
data
[
"price"
]
or
0
parsd
=
self
.
get_price
(
inq
)
product_id
=
self
.
invoice_det
.
produk
.
id
partner_id
=
self
.
invoice_det
.
h2h_ar_invoice
.
customer_id
discount
=
PartnerProduk
.
get_discount
(
partner_id
,
product_id
)
harga
=
self
.
vendor_produk
.
produk
.
harga
self
.
amt_sell
=
int
(
harga
-
discount
)
parsd
[
"total"
]
=
self
.
amt_sell
parsd
[
"discount"
]
=
int
(
discount
)
parsd
[
"subtotal"
]
=
int
(
harga
)
else
:
else
:
self
.
amt_buy
=
"price"
in
data
and
data
[
"price"
]
or
0
inq
.
update
(
parsd
)
inq
.
update
(
parsd
)
parsd
=
inq
parsd
=
inq
self
.
result
=
parsd
log
.
info
(
"Payment Result:
%
s"
%
self
.
result
)
self
.
save_log
(
'payment'
)
# if self.status == -1:
# sleep(2)
# row = H2hArInvoiceDet.query_id(self.invoice_det.id).first()
# if row.notify:
# post = "post" in row.notify and row.notify["post"] or ""
# if post:
#
#
# self.result = parsd
return
parsd
# log.info("Payment Result: %s" % self.result)
return
self
.
set_response
(
parsd
,
'payment'
)
else
:
# BAD REQUEST
else
:
# BAD REQUEST
self
.
status
=
-
3
return
self
.
gagal_transaksi
(
resp
.
status_code
)
return
dict
(
code
=
13
,
message
=
"FAILED"
)
def
advice
(
self
):
def
advice
(
self
):
...
@@ -242,7 +242,7 @@ class Vendor(VendorClass):
...
@@ -242,7 +242,7 @@ class Vendor(VendorClass):
if
self
.
kategori
==
'e-payment'
:
if
self
.
kategori
==
'e-payment'
:
order_id
=
self
.
invoice_det
.
vend_inv_no
order_id
=
self
.
invoice_det
.
vend_inv_no
url
=
'/order/{order_id}'
.
format
(
order_id
=
order_id
)
url
=
self
.
get_url
(
'/order/{order_id}'
.
format
(
order_id
=
order_id
)
)
params
=
None
params
=
None
self
.
request
=
url
self
.
request
=
url
else
:
else
:
...
@@ -253,16 +253,21 @@ class Vendor(VendorClass):
...
@@ -253,16 +253,21 @@ class Vendor(VendorClass):
)
)
)
)
self
.
request
=
params
self
.
request
=
params
self
.
save_log
(
"advice"
)
url
=
self
.
get_url
(
'/prepaid/purchase-get'
)
url
=
'/prepaid/purchase-get'
self
.
save_log
(
"advice"
)
self
.
save_log
(
"advice"
)
resp
=
self
.
request_get
(
params
,
url
)
try
:
resp
=
requests
.
get
(
url
,
params
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
except
:
return
self
.
set_response
()
try
:
try
:
result
=
json
.
loads
(
resp
.
text
)
result
=
json
.
loads
(
resp
.
text
)
except
:
except
:
result
=
resp
.
text
result
=
resp
.
text
self
.
response
=
result
if
resp
.
ok
:
if
resp
.
ok
:
self
.
status
=
1
# sukses
self
.
status
=
1
# sukses
data
=
"data"
in
result
and
result
[
"data"
]
or
None
data
=
"data"
in
result
and
result
[
"data"
]
or
None
...
@@ -277,7 +282,6 @@ class Vendor(VendorClass):
...
@@ -277,7 +282,6 @@ class Vendor(VendorClass):
parsd
=
dict
(
code
=
500
,
parsd
=
dict
(
code
=
500
,
message
=
"Other Error"
)
message
=
"Other Error"
)
self
.
response
=
result
self
.
save_log
(
'advice'
)
self
.
save_log
(
'advice'
)
return
parsd
return
parsd
...
@@ -431,6 +435,7 @@ class Vendor(VendorClass):
...
@@ -431,6 +435,7 @@ class Vendor(VendorClass):
admin
=
int
(
self
.
vendor_produk
.
produk
.
harga
*
i
)
admin
=
int
(
self
.
vendor_produk
.
produk
.
harga
*
i
)
rincian
[
"admin"
]
=
admin
rincian
[
"admin"
]
=
admin
result
[
"subtotal"
]
=
int
(
harga_pokok
)
+
admin
result
[
"subtotal"
]
=
int
(
harga_pokok
)
+
admin
product_id
=
self
.
invoice_det
.
produk
.
id
product_id
=
self
.
invoice_det
.
produk
.
id
if
hasattr
(
self
.
invoice_det
,
"customer_id"
):
if
hasattr
(
self
.
invoice_det
,
"customer_id"
):
partner_id
=
self
.
invoice_det
.
customer_id
partner_id
=
self
.
invoice_det
.
customer_id
...
...
src/agratek/api/merchant/views/vendor_trx.py
View file @
3f80968
...
@@ -286,7 +286,7 @@ class ViewHome(BaseView):
...
@@ -286,7 +286,7 @@ class ViewHome(BaseView):
if
result
[
"f_result"
][
"code"
]
==
0
:
if
result
[
"f_result"
][
"code"
]
==
0
:
session
.
flash
(
"Sukses"
)
session
.
flash
(
"Sukses"
)
else
:
else
:
session
.
flash
(
result
[
"f_result"
][
"
status
"
],
"error"
)
session
.
flash
(
result
[
"f_result"
][
"
message
"
],
"error"
)
form
.
render
(
values
)
form
.
render
(
values
)
return
dict
(
form
=
form
,
params
=
form_params_view
)
return
dict
(
form
=
form
,
params
=
form_params_view
)
...
...
src/agratek/api/merchant/views/vsi/bpjskes.py
View file @
3f80968
...
@@ -60,7 +60,9 @@ class Vendor(VendorClass):
...
@@ -60,7 +60,9 @@ class Vendor(VendorClass):
"discount": 300,
"discount": 300,
"total": 156400
"total": 156400
}]
}]
"""
"""
<?xml version="1.0"?>
<?xml version="1.0"?>
<root>
<root>
<status>SUCCESS</status>
<status>SUCCESS</status>
...
@@ -125,24 +127,27 @@ class Vendor(VendorClass):
...
@@ -125,24 +127,27 @@ class Vendor(VendorClass):
log
.
info
(
"Request:
%
s"
,
params
)
log
.
info
(
"Request:
%
s"
,
params
)
try
:
try
:
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
if
resp
and
resp
.
ok
:
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
log
.
info
(
"Response:
%
s"
,
data
)
self
.
response
=
data
else
:
data
=
dict
(
message
=
resp
.
text
,
code
=
resp
.
status_code
)
self
.
response
=
data
except
requests
.
exceptions
.
RequestException
as
e
:
except
requests
.
exceptions
.
RequestException
as
e
:
data
=
dict
(
message
=
e
.
strerror
,
data
=
dict
(
message
=
e
.
strerror
,
code
=
e
.
errno
)
code
=
e
.
errno
)
return
self
.
save_response
(
data
)
return
self
.
save_response
(
data
)
if
resp
and
resp
.
ok
:
if
not
resp
:
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
log
.
info
(
"Response:
%
s"
,
data
)
data
=
self
.
pars_data
(
data
)
elif
resp
:
data
=
dict
(
message
=
resp
.
text
,
code
=
resp
.
status_code
)
else
:
data
=
dict
(
message
=
"No Response From Biller "
,
data
=
dict
(
message
=
"No Response From Biller "
,
code
=
500
)
code
=
500
)
return
self
.
save_response
(
data
)
return
self
.
save_response
(
data
)
data
=
self
.
pars_data
(
data
)
self
.
result
=
data
return
self
.
save_response
(
data
)
return
self
.
save_response
(
data
)
def
payment
(
self
):
def
payment
(
self
):
...
@@ -159,11 +164,11 @@ class Vendor(VendorClass):
...
@@ -159,11 +164,11 @@ class Vendor(VendorClass):
else
:
else
:
data
=
dict
(
code
=
resp
.
status_code
,
data
=
dict
(
code
=
resp
.
status_code
,
message
=
resp
.
text
)
message
=
resp
.
text
)
self
.
response
=
data
except
:
except
:
data
=
dict
(
code
=
500
,
data
=
dict
(
code
=
500
,
message
=
"No Response From Biller"
)
message
=
"No Response From Biller"
)
self
.
response
=
data
data
=
self
.
pars_data
(
data
)
data
=
self
.
pars_data
(
data
)
self
.
save_log
(
'payment'
)
self
.
save_log
(
'payment'
)
...
...
src/agratek/api/merchant/views/vsi/pln_post.py
View file @
3f80968
...
@@ -160,29 +160,20 @@ class Vendor(VendorClass):
...
@@ -160,29 +160,20 @@ class Vendor(VendorClass):
if
resp
and
resp
.
ok
:
if
resp
and
resp
.
ok
:
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
self
.
response
=
data
data
=
self
.
pars_data
(
data
)
data
=
self
.
pars_data
(
data
)
elif
resp
:
elif
resp
:
data
=
dict
(
message
=
resp
.
text
,
data
=
dict
(
message
=
resp
.
text
,
code
=
resp
.
status_code
)
code
=
resp
.
status_code
)
self
.
response
=
data
else
:
else
:
data
=
dict
(
message
=
"No Response From Biller "
,
data
=
dict
(
message
=
"No Response From Biller "
,
code
=
500
)
code
=
500
)
return
self
.
save_response
(
data
)
return
self
.
save_response
(
data
)
# if "status" in data and data["status"] and data["status"] == "SUCCESS":
self
.
result
=
data
# # data = self.pars_data(data)
# data.update(dict(message="SUCCESS",
# code=0))
#
# elif "status" in data and data["status"] and data["status"] == "ERROR":
# #todo: apakah data akan dimapping errornya?
# data.update(dict(message=data["rcm"],
# code=data["rc"]))
# else:
# data.update(dict(message="Other Error",
# code=500))
return
self
.
save_response
(
data
)
return
self
.
save_response
(
data
)
def
payment
(
self
):
def
payment
(
self
):
...
@@ -201,12 +192,11 @@ class Vendor(VendorClass):
...
@@ -201,12 +192,11 @@ class Vendor(VendorClass):
else
:
else
:
data
=
dict
(
code
=
resp
.
status_code
,
data
=
dict
(
code
=
resp
.
status_code
,
message
=
resp
.
text
)
message
=
resp
.
text
)
self
.
response
=
data
except
:
except
:
data
=
dict
(
code
=
500
,
data
=
dict
(
code
=
500
,
message
=
"No Response From Biller"
)
message
=
"No Response From Biller"
)
self
.
response
=
data
data
=
self
.
pars_data
(
data
)
data
=
self
.
pars_data
(
data
)
self
.
save_log
(
'payment'
)
self
.
save_log
(
'payment'
)
return
data
return
data
...
@@ -223,16 +213,14 @@ class Vendor(VendorClass):
...
@@ -223,16 +213,14 @@ class Vendor(VendorClass):
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
if
resp
.
ok
:
if
resp
.
ok
:
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
self
.
response
=
data
else
:
else
:
data
=
dict
(
code
=
resp
.
status_code
,
data
=
dict
(
code
=
resp
.
status_code
,
message
=
resp
.
text
)
message
=
resp
.
text
)
self
.
response
=
data
self
.
response
=
data
except
:
except
:
data
=
dict
(
code
=
500
,
data
=
dict
(
code
=
500
,
message
=
"No Response From Biller"
)
message
=
"No Response From Biller"
)
self
.
response
=
data
data
=
self
.
pars_data
(
data
)
data
=
self
.
pars_data
(
data
)
self
.
result
=
data
self
.
result
=
data
...
...
src/agratek/api/merchant/views/vsi/pln_pre.py
View file @
3f80968
...
@@ -105,9 +105,9 @@ class Vendor(VendorClass):
...
@@ -105,9 +105,9 @@ class Vendor(VendorClass):
"total"
:
subtotal
-
discount
,
"total"
:
subtotal
-
discount
,
}
}
def
save_res
ponse
(
self
,
data
,
typ
=
"inquiry"
):
def
save_res
ult
(
self
,
data
,
typ
=
"inquiry"
):
self
.
res
ponse
=
data
self
.
res
ult
=
data
log
.
info
(
"
VSI PLN PRE Response
:
%
s"
,
data
)
log
.
info
(
"
Result
:
%
s"
,
data
)
self
.
save_log
(
typ
)
self
.
save_log
(
typ
)
return
data
return
data
...
@@ -118,40 +118,26 @@ class Vendor(VendorClass):
...
@@ -118,40 +118,26 @@ class Vendor(VendorClass):
self
.
request
=
params
self
.
request
=
params
self
.
save_log
(
'inquiry'
)
self
.
save_log
(
'inquiry'
)
params
[
'trxid'
]
=
self
.
invoice_det
.
id
params
[
'trxid'
]
=
self
.
invoice_det
.
id
log
.
info
(
"
VSI PLN PRE
Request:
%
s"
,
params
)
log
.
info
(
"Request:
%
s"
,
params
)
try
:
try
:
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
if
resp
and
resp
.
ok
:
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
self
.
response
=
data
else
:
data
=
dict
(
message
=
resp
.
text
,
code
=
resp
.
status_code
)
self
.
response
=
data
log
.
info
(
"REsponse:
%
s"
%
data
)
except
requests
.
exceptions
.
RequestException
as
e
:
except
requests
.
exceptions
.
RequestException
as
e
:
data
=
dict
(
message
=
e
.
strerror
,
data
=
dict
(
message
=
e
.
strerror
,
code
=
e
.
errno
)
code
=
e
.
errno
)
return
self
.
save_res
ponse
(
data
)
return
self
.
save_res
ult
(
data
)
if
resp
and
resp
.
ok
:
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
data
=
self
.
pars_data
(
data
)
elif
resp
:
data
=
self
.
pars_data
(
data
)
data
=
dict
(
message
=
resp
.
text
,
return
self
.
save_result
(
data
)
code
=
resp
.
status_code
)
else
:
data
=
dict
(
message
=
"No Response From Biller "
,
code
=
500
)
return
self
.
save_response
(
data
)
# if "status" in data and data["status"] and data["status"] == "SUCCESS":
# # data = self.pars_data(data)
# data.update(dict(message="SUCCESS",
# code=0))
#
# elif "status" in data and data["status"] and data["status"] == "ERROR":
# #todo: apakah data akan dimapping errornya?
# data.update(dict(message=data["rcm"],
# code=data["rc"]))
# else:
# data.update(dict(message="Other Error",
# code=500))
return
self
.
save_response
(
data
)
def
payment
(
self
):
def
payment
(
self
):
params
=
self
.
get_params
(
cmd
=
'PAY'
,
modul
=
'PRE'
)
params
=
self
.
get_params
(
cmd
=
'PAY'
,
modul
=
'PRE'
)
...
@@ -168,13 +154,14 @@ class Vendor(VendorClass):
...
@@ -168,13 +154,14 @@ class Vendor(VendorClass):
else
:
else
:
data
=
dict
(
code
=
resp
.
status_code
,
data
=
dict
(
code
=
resp
.
status_code
,
message
=
resp
.
text
)
message
=
resp
.
text
)
self
.
response
=
data
except
:
except
:
data
=
dict
(
code
=
500
,
data
=
dict
(
code
=
500
,
message
=
"No Response From Biller"
)
message
=
"No Response From Biller"
)
self
.
response
=
data
data
=
self
.
pars_data
(
data
)
data
=
self
.
pars_data
(
data
)
self
.
result
=
data
self
.
save_log
(
'payment'
)
self
.
save_log
(
'payment'
)
return
data
return
data
...
@@ -191,16 +178,14 @@ class Vendor(VendorClass):
...
@@ -191,16 +178,14 @@ class Vendor(VendorClass):
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
resp
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
if
resp
.
ok
:
if
resp
.
ok
:
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
data
=
dict
(
xmltodict
.
parse
(
resp
.
text
)[
"root"
])
self
.
response
=
data
else
:
else
:
data
=
dict
(
code
=
resp
.
status_code
,
data
=
dict
(
code
=
resp
.
status_code
,
message
=
resp
.
text
)
message
=
resp
.
text
)
self
.
response
=
data
self
.
response
=
data
except
:
except
:
data
=
dict
(
code
=
500
,
data
=
dict
(
code
=
500
,
message
=
"No Response From Biller"
)
message
=
"No Response From Biller"
)
self
.
response
=
data
data
=
self
.
pars_data
(
data
)
data
=
self
.
pars_data
(
data
)
self
.
result
=
data
self
.
result
=
data
...
...
src/agratek/api/merchant/views/vsi/pulsa.py
View file @
3f80968
...
@@ -2,7 +2,7 @@ from opensipkd.pasar.models import PartnerProduk
...
@@ -2,7 +2,7 @@ from opensipkd.pasar.models import PartnerProduk
import
requests
import
requests
import
xmltodict
import
xmltodict
from
agratek.api.merchant.tools
import
JsonRpcError
from
agratek.api.merchant.tools
import
JsonRpcError
from
agratek.api.merchant.views.vsi
import
Vendor
as
VendorClass
from
agratek.api.merchant.views.vsi
import
Vendor
as
VendorClass
,
vsi_status
import
logging
import
logging
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
...
@@ -24,25 +24,30 @@ class Vendor(VendorClass):
...
@@ -24,25 +24,30 @@ class Vendor(VendorClass):
:return:
:return:
"""
"""
code
=
"rc"
in
data
and
int
(
data
[
"rc"
])
or
0
code
=
"rc"
in
data
and
int
(
data
[
"rc"
])
or
0
if
code
==
0
:
self
.
status
=
vsi_status
[
str
(
code
)][
"status"
]
status
=
self
.
status
==
-
3
and
"FAILED"
or
"PENDING"
if
status
==
"PENDING"
:
code
=
68
if
self
.
status
>-
3
:
product_id
=
self
.
invoice_det
.
produk
.
id
product_id
=
self
.
invoice_det
.
produk
.
id
partner_id
=
self
.
invoice_det
.
h2h_ar_invoice
.
customer_id
partner_id
=
self
.
invoice_det
.
h2h_ar_invoice
.
customer_id
discount
=
PartnerProduk
.
get_discount
(
partner_id
,
product_id
)
discount
=
PartnerProduk
.
get_discount
(
partner_id
,
product_id
)
harga
=
self
.
vendor_produk
.
produk
.
harga
harga
=
self
.
vendor_produk
.
produk
.
harga
self
.
status
=
1
self
.
status
=
1
status
=
"status"
in
data
and
data
[
"status"
]
or
""
if
not
harga
:
if
not
harga
:
raise
JsonRpcError
()
raise
JsonRpcError
()
else
:
else
:
discount
=
0
discount
=
0
harga
=
0
harga
=
0
self
.
status
=
-
1
result
=
dict
(
result
=
dict
(
status
=
"status"
in
data
and
data
[
"status"
]
or
"PENDING"
,
status
=
status
,
code
=
code
,
code
=
code
,
message
=
"rcm"
in
data
\
message
=
"rcm"
in
data
\
and
(
data
[
"rcm"
]
==
"00000"
and
"SUCCESS"
or
data
[
"rcm"
])
\
and
(
data
[
"rcm"
]
==
"00000"
and
"SUCCESS"
or
data
[
"rcm"
])
\
or
"PENDING"
,
or
status
,
serial_number
=
"serialnumber"
in
data
and
data
[
"serialnumber"
]
or
""
,
serial_number
=
"serialnumber"
in
data
and
data
[
"serialnumber"
]
or
""
,
subtotal
=
int
(
harga
),
subtotal
=
int
(
harga
),
discount
=
int
(
discount
),
discount
=
int
(
discount
),
...
@@ -60,21 +65,21 @@ class Vendor(VendorClass):
...
@@ -60,21 +65,21 @@ class Vendor(VendorClass):
try
:
try
:
result
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
result
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
if
result
.
ok
:
if
result
.
ok
:
data
=
xmltodict
.
parse
(
result
.
text
)[
"root"
]
data
=
dict
(
xmltodict
.
parse
(
result
.
text
)[
"root"
])
else
:
else
:
data
=
dict
(
code
=
result
.
status_code
,
data
=
dict
(
code
=
result
.
status_code
,
message
=
result
.
text
)
message
=
result
.
text
)
self
.
response
=
data
log
.
info
(
"Response:
%
s"
%
(
data
))
except
requests
.
exceptions
.
RequestException
as
e
:
except
requests
.
exceptions
.
RequestException
as
e
:
data
=
dict
(
code
=
e
.
errno
,
data
=
dict
(
code
=
e
.
errno
,
message
=
e
.
strerror
)
message
=
e
.
strerror
)
log
.
info
(
"VSI PULSA Response:
%
s"
%
(
data
))
self
.
response
=
data
self
.
result
=
self
.
pars_data
(
data
)
self
.
result
=
self
.
pars_data
(
data
)
log
.
info
(
"
VSI PULSA
Result:
%
s"
%
(
self
.
result
))
log
.
info
(
"Result:
%
s"
%
(
self
.
result
))
self
.
save_log
(
'inquiry'
)
self
.
save_log
(
'inquiry'
)
return
data
return
self
.
result
def
payment
(
self
):
def
payment
(
self
):
params
=
self
.
get_params
(
cmd
=
'PAY'
,
modul
=
'ISI'
)
params
=
self
.
get_params
(
cmd
=
'PAY'
,
modul
=
'ISI'
)
...
@@ -86,18 +91,18 @@ class Vendor(VendorClass):
...
@@ -86,18 +91,18 @@ class Vendor(VendorClass):
result
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
result
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
if
result
.
ok
:
if
result
.
ok
:
data
=
dict
(
xmltodict
.
parse
(
result
.
text
)[
"root"
])
data
=
dict
(
xmltodict
.
parse
(
result
.
text
)[
"root"
])
self
.
response
=
data
else
:
else
:
data
=
dict
(
code
=
result
.
status_code
,
data
=
dict
(
code
=
result
.
status_code
,
message
=
result
.
text
)
message
=
result
.
text
)
self
.
response
=
data
log
.
info
(
"Payment Response:
%
s"
%
(
data
))
except
requests
.
exceptions
.
RequestException
as
e
:
except
requests
.
exceptions
.
RequestException
as
e
:
data
=
dict
(
code
=
e
.
errno
,
data
=
dict
(
code
=
e
.
errno
,
message
=
e
.
strerror
)
message
=
e
.
strerror
)
log
.
info
(
"Payment Response:
%
s"
%
(
data
))
self
.
amt_buy
=
"harga"
in
data
and
data
[
"harga"
]
or
self
.
amt_buy
self
.
amt_buy
=
"harga"
in
data
and
data
[
"harga"
]
or
self
.
amt_buy
self
.
vend_inv_no
=
"ref_num"
in
data
and
data
[
"ref_num"
]
or
self
.
vend_inv_no
self
.
vend_inv_no
=
"ref_num"
in
data
and
data
[
"ref_num"
]
or
self
.
vend_inv_no
self
.
response
=
data
self
.
result
=
self
.
pars_data
(
data
)
self
.
result
=
self
.
pars_data
(
data
)
log
.
info
(
"Payment Result:
%
s"
%
(
self
.
result
))
log
.
info
(
"Payment Result:
%
s"
%
(
self
.
result
))
self
.
save_log
(
'payment'
)
self
.
save_log
(
'payment'
)
...
@@ -105,14 +110,24 @@ class Vendor(VendorClass):
...
@@ -105,14 +110,24 @@ class Vendor(VendorClass):
def
advice
(
self
):
def
advice
(
self
):
params
=
self
.
get_params
(
cmd
=
'ADV'
,
modul
=
'ISI'
)
params
=
self
.
get_params
(
cmd
=
'ADV'
,
modul
=
'ISI'
)
params
[
"tujuan"
]
=
self
.
id_pel
params
[
"voucherid"
]
=
self
.
vendor_produk
.
kode
self
.
request
=
params
self
.
request
=
params
result
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
log
.
info
(
"Advice Request:
%
s"
%
(
self
.
request
))
if
result
.
ok
:
try
:
data
=
xmltodict
.
parse
(
result
.
text
)[
"root"
]
result
=
requests
.
get
(
self
.
url
,
params
=
params
,
timeout
=
15
)
if
result
.
ok
:
data
=
xmltodict
.
parse
(
result
.
text
)[
"root"
]
else
:
data
=
dict
(
code
=
result
.
status_code
,
message
=
result
.
text
)
self
.
response
=
data
self
.
response
=
data
else
:
log
.
info
(
"Advice Response:
%
s"
%
(
self
.
response
))
data
=
dict
(
error
=
result
.
status_code
)
except
:
data
=
dict
(
code
=
999
,
message
=
"No Response From Biller"
)
self
.
result
=
data
log
.
info
(
"Advice Result:
%
s"
%
(
self
.
result
))
self
.
save_log
(
'advice'
)
self
.
save_log
(
'advice'
)
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