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 d4d5fc90
authored
Aug 05, 2019
by
Solo Group
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
VSI
1 parent
b42e9f0e
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
116 additions
and
83 deletions
src/agratek/api/merchant/views/odeo/__init__.py
src/agratek/api/merchant/views/vendor.py
src/agratek/api/merchant/views/vendor_trx.py
src/agratek/api/merchant/views/odeo/__init__.py
View file @
d4d5fc9
...
@@ -27,17 +27,6 @@ class Vendor(VendorClass):
...
@@ -27,17 +27,6 @@ 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
,
data
=
None
,
message
=
None
,
code
=
999
,
typ
=
"inquiry"
):
if
not
data
and
message
:
message
=
message
and
message
or
"Biller No Response"
data
=
dict
(
code
=
code
,
message
=
message
)
self
.
result
=
data
self
.
save_log
(
typ
)
log
.
info
(
"Result:
%
s"
%
data
)
return
data
def
get_headers
(
self
):
def
get_headers
(
self
):
return
{
'Authorization'
:
'Bearer {key}'
.
format
(
key
=
self
.
auth
)}
return
{
'Authorization'
:
'Bearer {key}'
.
format
(
key
=
self
.
auth
)}
...
@@ -114,21 +103,21 @@ class Vendor(VendorClass):
...
@@ -114,21 +103,21 @@ class Vendor(VendorClass):
return
self
.
set_response
(
parsd
)
#parsd
return
self
.
set_response
(
parsd
)
#parsd
def
gagal_transaksi
(
self
,
inq
):
#
def gagal_transaksi(self, inq):
self
.
status
=
-
2
# Try Other Vendor
#
self.status = -2 # Try Other Vendor
if
inq
:
#
if inq:
inq
.
update
(
dict
(
code
=
68
,
#
inq.update(dict(code=68,
message
=
"PENDING"
,
#
message="PENDING",
status
=
"PENDING"
))
#
status="PENDING"))
return
self
.
set_response
(
data
=
inq
,
typ
=
"payment"
)
#
return self.set_response(data=inq, typ="payment")
else
:
#
else:
parsd
=
self
.
get_price
()
#
parsd = self.get_price()
parsd
.
update
(
dict
(
code
=
68
,
#
parsd.update(dict(code=68,
message
=
"PENDING"
,
#
message="PENDING",
status
=
"PENDING"
))
#
status="PENDING"))
return
self
.
set_response
(
data
=
parsd
,
typ
=
"payment"
)
#
return self.set_response(data=parsd, typ="payment")
def
get_price
(
self
,
inq
=
None
):
def
get_price
(
self
):
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
...
@@ -139,9 +128,9 @@ class Vendor(VendorClass):
...
@@ -139,9 +128,9 @@ class Vendor(VendorClass):
self
.
discount
=
PartnerProduk
.
get_discount
(
partner_id
,
product_id
)
self
.
discount
=
PartnerProduk
.
get_discount
(
partner_id
,
product_id
)
self
.
amt_sell
=
harga
-
self
.
discount
self
.
amt_sell
=
harga
-
self
.
discount
return
dict
(
return
dict
(
subtotal
=
harga
,
subtotal
=
int
(
harga
)
,
discount
=
self
.
discount
,
discount
=
int
(
self
.
discount
)
,
total
=
self
.
amt_sell
total
=
int
(
self
.
amt_sell
)
)
)
def
payment
(
self
):
def
payment
(
self
):
...
@@ -151,19 +140,21 @@ class Vendor(VendorClass):
...
@@ -151,19 +140,21 @@ class Vendor(VendorClass):
number
=
self
.
id_pel
number
=
self
.
id_pel
)
)
)
)
self
.
request
=
params
self
.
request
=
params
log
.
info
(
"Payment Request:
%
s"
%
self
.
request
)
log
.
info
(
"Payment Request:
%
s"
%
self
.
request
)
self
.
save_log
(
"payment"
)
self
.
save_log
(
"payment"
)
inq
=
None
parsd
=
None
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
()
parsd
=
self
.
inquiry
()
if
inq
[
"code"
]
!=
0
:
if
parsd
[
"code"
]
!=
0
:
return
self
.
set_response
()
self
.
status
=-
3
return
self
.
set_response
(
typ
=
"payment"
,
message
=
"Data Tagihan Tidah ditemukan"
)
url
=
self
.
get_url
(
"/prepaid/purchase"
)
if
not
parsd
:
parsd
=
self
.
get_price
()
url
=
self
.
get_url
(
"/prepaid/purchase"
)
try
:
try
:
resp
=
requests
.
post
(
url
,
data
=
json
.
dumps
(
params
),
verify
=
False
,
resp
=
requests
.
post
(
url
,
data
=
json
.
dumps
(
params
),
verify
=
False
,
headers
=
self
.
get_headers
(),
timeout
=
15
)
headers
=
self
.
get_headers
(),
timeout
=
15
)
...
@@ -171,76 +162,66 @@ class Vendor(VendorClass):
...
@@ -171,76 +162,66 @@ class Vendor(VendorClass):
resp
=
None
resp
=
None
if
not
resp
:
if
not
resp
:
self
.
gagal_transaksi
(
inq
)
self
.
status
=
0
return
self
.
set_pending
(
parsd
)
#todo: dibuat seolah menjadi belum di transaksikan
#todo: membuat cron untuk melakukan pengecekan transaksi
try
:
try
:
result
=
json
.
loads
(
resp
.
text
)
result
=
json
.
loads
(
resp
.
text
)
except
:
self
.
response
=
result
result
=
resp
and
resp
.
text
or
{}
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
except
:
result
=
resp
.
text
self
.
response
=
result
self
.
response
=
result
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
log
.
info
(
"Payment Response:
%
s"
%
self
.
response
)
self
.
status
=
0
return
self
.
set_pending
(
parsd
)
# odeo mengembalikan result dalam bentuk status
# odeo mengembalikan result dalam bentuk status
# 0200 ok
# 0200 ok
# 0400 bad request
# 0400 bad request
# 0401 auth error
# 0401 auth error
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
{}
if
not
data
:
if
not
data
:
return
self
.
gagal_transaksi
(
inq
)
self
.
status
=
0
return
self
.
set_pending
(
parsd
)
self
.
vend_inv_no
=
"order_id"
in
data
and
data
[
"order_id"
]
or
self
.
vend_inv_no
self
.
amt_buy
=
"price"
in
data
and
data
[
"price"
]
or
self
.
amt_buy
if
"rc"
in
data
:
if
"rc"
in
data
:
parsd
[
"code"
]
=
int
(
data
[
"rc"
])
if
data
[
"rc"
]
==
"13"
:
if
data
[
"rc"
]
==
"13"
:
parsd
[
"status"
]
=
"FAILED"
return
self
.
set_failed
(
parsd
)
self
.
status
=
-
3
elif
data
[
"rc"
]
==
"67"
:
elif
data
[
"rc"
]
==
"67"
:
parsd
[
"status"
]
=
"DOUBLE"
return
self
.
set_double
(
parsd
)
self
.
status
=
-
3
# Gagal Karena Pernah Transaksi
elif
data
[
"rc"
]
==
"68"
:
elif
data
[
"rc"
]
==
"68"
:
parsd
[
"status"
]
=
"PENDING"
self
.
status
=
-
1
# pending
self
.
status
=
-
1
# pending
return
self
.
set_pending
(
parsd
)
if
self
.
status
==
-
1
:
parsd
[
"message"
]
=
"PENDING"
else
:
else
:
parsd
[
"message"
]
=
"FAILED"
# Status ini hanya sementara nunggu refund
# Status -2 ini harus dicari solusi mencari vendor lain
else
:
self
.
status
=
1
parsd
[
"code"
]
=
0
parsd
[
"status"
]
=
"SUCCESS"
self
.
serial_number
=
'serial_number'
in
data
and
data
[
"serial_numner"
]
\
self
.
serial_number
=
'serial_number'
in
data
and
data
[
"serial_numner"
]
\
or
self
.
serial_number
or
self
.
serial_number
return
self
.
set_success
(
parsd
)
self
.
vend_inv_no
=
"order_id"
in
data
and
data
[
"order_id"
]
or
self
.
vend_inv_no
self
.
amt_buy
=
"price"
in
data
and
data
[
"price"
]
or
self
.
amt_buy
elif
resp
.
status_code
==
400
:
if
not
inq
:
if
parsd
[
"code"
]
==
0
or
parsd
[
"code"
]
==
68
:
parsd
=
self
.
get_price
(
inq
)
else
:
inq
.
update
(
parsd
)
parsd
=
inq
#
# self.result = parsd
# log.info("Payment Result: %s" % self.result)
return
self
.
set_response
(
parsd
,
'payment'
)
elif
resp
.
status_code
==
400
:
# BAD REQUEST
self
.
status
=
-
3
self
.
status
=
-
3
data
=
"data"
in
result
and
result
[
"data"
]
or
None
return
dict
(
code
=
13
,
message
=
""
message
=
"FAILED"
)
if
data
and
"error"
in
data
:
msg
=
data
[
"error"
][
0
]
else
:
pos
=
msg
.
find
(
"Sisa saldo"
)
self
.
status
=
-
1
message
=
pos
>
-
1
and
msg
[:
pos
]
or
msg
return
dict
(
code
=
68
,
return
self
.
set_failed
(
parsd
,
message
=
message
)
message
=
"PENDING"
)
elif
resp
.
status_code
==
401
:
self
.
status
=
-
2
#todo: create cron yang status -2
return
self
.
set_pending
(
parsd
)
def
advice
(
self
):
def
advice
(
self
):
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
or
not
self
.
invoice_det
:
if
not
self
.
v_produk_kd
or
not
self
.
id_pel
or
not
self
.
invoice_det
:
...
...
src/agratek/api/merchant/views/vendor.py
View file @
d4d5fc9
...
@@ -52,6 +52,56 @@ class VendorClass(object):
...
@@ -52,6 +52,56 @@ class VendorClass(object):
and
invoice_det
.
serial_number
or
None
and
invoice_det
.
serial_number
or
None
self
.
amt_buy
=
0
self
.
amt_buy
=
0
def
set_response
(
self
,
data
=
None
,
message
=
None
,
code
=
999
,
typ
=
"inquiry"
):
if
not
data
and
message
:
message
=
message
and
message
or
"Biller No Response"
data
=
dict
(
code
=
code
,
message
=
message
)
self
.
result
=
data
self
.
save_log
(
typ
)
log
.
info
(
"Result:
%
s"
%
data
)
return
data
def
set_success
(
self
,
data
=
None
):
self
.
status
=
1
typ
=
"payment"
data
=
data
and
data
or
{}
data
.
update
(
dict
(
code
=
0
,
message
=
"SUCCESS"
,
status
=
"SUCCESS"
))
return
self
.
set_response
(
data
,
typ
=
typ
)
def
set_failed
(
self
,
data
=
None
,
message
=
None
):
typ
=
"payment"
self
.
status
=
-
3
data
=
data
and
data
or
{}
message
=
message
and
message
or
"FAILED"
data
.
update
(
dict
(
code
=
13
,
message
=
message
,
status
=
"FAILED"
))
return
self
.
set_response
(
data
,
typ
=
typ
)
def
set_double
(
self
,
data
=
None
,
message
=
None
):
self
.
status
=
-
3
typ
=
"payment"
message
=
message
and
message
or
"DOUBLE"
data
=
data
and
data
or
{}
data
.
update
(
dict
(
code
=
67
,
message
=
message
,
status
=
"FAILED"
))
return
self
.
set_response
(
data
,
typ
=
typ
)
def
set_pending
(
self
,
data
=
None
,
message
=
None
):
data
=
data
and
data
or
{}
typ
=
"payment"
message
=
message
and
message
or
"PENDING"
data
.
update
(
dict
(
code
=
68
,
status
=
"PENDING"
,
message
=
message
)
)
return
self
.
set_response
(
data
,
typ
=
typ
)
def
save_log
(
self
,
typ
):
def
save_log
(
self
,
typ
):
# if not self.partner_log:
# if not self.partner_log:
# row = self.partner_log or PartnerLog()
# row = self.partner_log or PartnerLog()
...
...
src/agratek/api/merchant/views/vendor_trx.py
View file @
d4d5fc9
...
@@ -283,10 +283,12 @@ class ViewHome(BaseView):
...
@@ -283,10 +283,12 @@ class ViewHome(BaseView):
if
result
:
if
result
:
values
.
update
(
result
)
values
.
update
(
result
)
if
result
[
"f_result"
][
"code"
]
==
0
:
if
result
[
"f_result"
][
"code"
]
==
0
:
session
.
flash
(
"Sukses"
)
session
.
flash
(
result
[
"f_result"
][
"message"
]
)
else
:
else
:
session
.
flash
(
result
[
"f_result"
][
"message"
],
"error"
)
session
.
flash
(
result
[
"f_result"
][
"message"
],
"error"
)
else
:
session
.
flash
(
"No Result Found"
,
"error"
)
form
.
render
(
values
)
form
.
render
(
values
)
return
dict
(
form
=
form
,
params
=
form_params_view
)
return
dict
(
form
=
form
,
params
=
form_params_view
)
...
...
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