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 3dd45e9b
authored
Jan 24, 2020
by
yasir
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
update
1 parent
14f382b9
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
97 additions
and
70 deletions
src/agratek/api/merchant/pay_request_tools.py
src/agratek/api/merchant/views/pay.py
src/agratek/api/merchant/views/templates/pay.pt
src/agratek/api/merchant/views/templates/pay_info.pt
src/agratek/api/merchant/pay_request_tools.py
View file @
3dd45e9
...
...
@@ -78,12 +78,12 @@ def get_str_bulan(only_bulan):
return
months
[
only_bulan
-
1
]
VA_IMG_SRC
=
{
'MANDIRI'
:
'mandiri.
jp
g'
,
'BNI'
:
'bni.
jp
g'
,
'BRI'
:
'bri.
jp
g'
,
'DANAMON'
:
'danamon.
jp
g'
,
'MAYBANK'
:
'maybank.
jp
g'
,
'PERMATA'
:
'permata.
jp
g'
,
'HANABANK'
:
'hanabank.
jp
g'
,
'CIMB'
:
'cimb.
jp
g'
'MANDIRI'
:
'mandiri.
pn
g'
,
'BNI'
:
'bni.
sv
g'
,
'BRI'
:
'bri.
pn
g'
,
'DANAMON'
:
'danamon.
pn
g'
,
'MAYBANK'
:
'maybank.
pn
g'
,
'PERMATA'
:
'permata.
pn
g'
,
'HANABANK'
:
'hanabank.
pn
g'
,
'CIMB'
:
'cimb.
pn
g'
}
src/agratek/api/merchant/views/pay.py
View file @
3dd45e9
...
...
@@ -93,6 +93,7 @@ def whatisthis(s):
class
view_pay
(
BaseView
):
@view_config
(
route_name
=
'pay-form'
,
renderer
=
'templates/pay.pt'
)
#permission = 'pay-form',
# class view_pay():
def
the_form
(
self
):
request
=
self
.
req
session
=
self
.
ses
...
...
@@ -106,15 +107,19 @@ class view_pay(BaseView):
if
post_data
:
if
'bayar'
in
post_data
:
row
=
DBSession
.
query
(
PartnerPay
)
.
filter
(
PartnerPay
.
token_pay_req
==
url_dict
[
'pay_token'
])
.
first
()
merchant_url
=
row
.
response_url
customer
=
Partner
.
query
()
.
filter
(
Partner
.
id
==
row
.
customer_id
)
.
first
()
#getting saved data from pay_request
row_pay
=
DBSession
.
query
(
PartnerPay
)
.
filter
(
PartnerPay
.
token_pay_req
==
url_dict
[
'pay_token'
])
.
first
()
#target to send the register response
merchant_url
=
row_pay
.
response_url
#getting the merchant data
customer
=
Partner
.
query
()
.
filter
(
Partner
.
id
==
row_pay
.
customer_id
)
.
first
()
#getting the merchant authentication data
registered_user
=
customer
.
users
produk_kd
=
''
#parsing payment method from pay Form
mth
=
post_data
[
'pay_method'
]
denom
=
''
if
mth
==
'VA'
:
denom
=
items
[
'va_opt'
]
...
...
@@ -129,42 +134,21 @@ class view_pay(BaseView):
elif
mth
==
'CP'
:
denom
=
items
[
'cp_opt'
]
vendor_kd
=
None
produk_kd
=
denom
produk_kd
=
produk_kd
.
replace
(
'
\xad
'
,
''
)
produk_kd
=
produk_kd
.
replace
(
'
\u00ad
'
,
''
)
produk_kd
=
produk_kd
.
replace
(
'
\N{SOFT HYPHEN}
'
,
''
)
vendor_produk
=
get_vendor_produk
(
produk_kd
,
vendor_kd
=
vendor_kd
)
row
=
DBSession
.
query
(
PartnerPay
)
.
filter
(
PartnerPay
.
token_pay_req
==
url_dict
[
'pay_token'
])
.
first
()
row
.
vendor_id
=
vendor_produk
.
partner_id
row
.
produk_id
=
vendor_produk
.
produk
.
id
#getting saved cart json
hours_24_from_now
=
datetime
.
now
()
+
timedelta
(
hours
=
24
)
dt
=
format
(
hours_24_from_now
,
'
%
Y
%
m
%
d'
)
tm
=
format
(
hours_24_from_now
,
'
%
H
%
M
%
S'
)
# building register json request
basic_json
=
build_request_json
(
denom
,
row_pay
,
produks
)
row
.
pay_token_date_exp
=
dt
row
.
pay_token_time_exp
=
tm
row
.
pay_req_mth
=
mth
row
.
pay_denom
=
denom
produks
=
row
.
cart
for
a
in
produks
[
'item'
]:
del
a
[
'qty'
]
del
a
[
'subtotal'
]
basic_json
=
build_request_json
(
row
,
produks
)
ccard
=
None
if
mth
==
'VA'
:
row
.
inv_valid_date
=
'va_valid_date'
in
items
and
items
[
'va_valid_date'
]
or
dt
row
.
inv_valid_time
=
'va_valid_time'
in
items
and
items
[
'va_valid_time'
]
or
tm
row
.
inv_cust_va
=
'va_fix_acct_id'
in
items
and
items
[
'va_fix_acct_id'
]
or
''
ccard
=
None
# row.inv_valid_date='va_valid_date' in items and items['va_valid_date'] or dt
# row.inv_valid_time='va_valid_time' in items and items['va_valid_time'] or tm
# row.inv_cust_va='va_fix_acct_id' in items and items['va_fix_acct_id'] or ''
# ccard = None
#adding additional packed element based on payment method
hours_24_from_now
=
datetime
.
now
()
+
timedelta
(
hours
=
24
)
dt
=
format
(
hours_24_from_now
,
'
%
Y
%
m
%
d'
)
tm
=
format
(
hours_24_from_now
,
'
%
H
%
M
%
S'
)
adt_va
=
{}
adt_va
[
'va'
]
=
dict
(
...
...
@@ -174,32 +158,74 @@ class view_pay(BaseView):
)
set_pay_detail
(
basic_json
,
adt_va
)
elif
mth
==
'CC'
:
row
.
instmnt_mon
=
'cc_instmnt_mon'
in
items
and
items
[
'cc_instmnt_mon'
]
or
''
row
.
instmnt_type
=
'cc_instmnt_type'
in
items
and
items
[
'cc_instmnt_type'
]
or
''
row
.
recurr_opt
=
'cc_recurr_opt'
in
items
and
items
[
'cc_recurr_opt'
]
or
0
ccard
=
None
flush_row
(
row
)
# row.instmnt_mon='cc_instmnt_mon' in items and items['cc_instmnt_mon'] or ''
# row.instmnt_type='cc_instmnt_type' in items and items['cc_instmnt_type'] or ''
# row.recurr_opt='cc_recurr_opt' in items and items['cc_recurr_opt'] or 0
adt_cc
=
{}
adt_cc
[
'credit_card'
]
=
dict
(
instmnt_type
=
'2'
,
instmnt_mon
=
'1'
,
recurr_opt
=
'2'
)
set_pay_detail
(
basic_json
,
adt_cc
)
ccard
=
None
agratek_api_url
=
get_api_url
()
headers_register
=
json_rpc_header
(
registered_user
.
user_name
,
registered_user
.
api_key
)
result_request
=
requests
.
post
(
agratek_api_url
,
data
=
json
.
dumps
(
basic_json
),
headers
=
headers_register
)
print
(
'result >>>>>>>>>>>>>>>>>>>>>>>>>>'
)
print
(
result_request
)
dict_results
=
json
.
loads
(
result_request
.
text
)
print
(
'dict_results >>>>>>>>>>'
)
print
(
dict_results
)
result_request
=
{}
try
:
result_request
=
requests
.
post
(
agratek_api_url
,
data
=
json
.
dumps
(
basic_json
),
headers
=
headers_register
,
timeout
=
20
)
except
Exception
as
e
:
print
(
'error request register >'
)
print
(
e
)
err_param
=
''
if
'result'
in
dict_results
:
state
=
int
(
dict_results
[
'result'
][
'code'
])
if
state
!=
0
:
if
result_request
:
dict_results
=
json
.
loads
(
result_request
.
text
)
if
'result'
in
dict_results
:
state
=
int
(
dict_results
[
'result'
][
'code'
])
if
state
==
0
:
# updating additional necessary datas to partner_pay after done and succeed register method
# getting new mapped data
produks
=
row_pay
.
cart
produks_items
=
[]
for
item
in
produks
[
'item'
]:
produk_item
=
{}
produk_item
[
'goods_name'
]
=
item
[
'goods_name'
]
produk_item
[
'goods_detail'
]
=
item
[
'goods_detail'
]
produk_item
[
'goods_amt'
]
=
item
[
'goods_amt'
]
produk_item
[
'img_url'
]
=
item
[
'img_url'
]
produks_items
.
extend
([
produk_item
])
row_pay_payed
=
DBSession
.
query
(
PartnerPay
)
.
filter
(
PartnerPay
.
token_pay_req
==
url_dict
[
'pay_token'
])
.
first
()
values_update
=
dict
(
cart
=
{
'count'
:
produks
[
'count'
],
'item'
:
tuple
(
produks
[
'item'
])},
pay_token_date_exp
=
dt
,
pay_token_time_exp
=
tm
,
pay_req_mth
=
mth
,
pay_denom
=
denom
,
)
row_pay_payed
.
from_dict
(
values_update
)
flush_row
(
row_pay_payed
)
else
:
err_param
=
'?adt=fail'
elif
'error'
in
dict_results
:
state
=
int
(
dict_results
[
'error'
][
'code'
])
err_param
=
'?adt=fail'
elif
'error'
in
dict_results
:
state
=
int
(
dict_results
[
'error'
][
'code'
])
else
:
state
=
999999
err_param
=
'?adt=fail'
route_to
=
request
.
route_url
(
route_name
=
'pay-info'
,
pay_token
=
url_dict
[
'pay_token'
],
state
=
state
)
route_to
=
route_to
+
err_param
...
...
@@ -234,6 +260,7 @@ class view_pay(BaseView):
data_form
[
'amount_tot'
]
=
row
.
amt_sell
data_form
[
'amount_tot_th'
]
=
format
(
int
(
data_form
[
'amount_tot'
]),
',d'
)
.
replace
(
','
,
'.'
)
data_form
[
'customer_name'
]
=
row
.
inv_cust_nm
produks
=
row
.
cart
[
'item'
]
for
trans
in
produks
:
...
...
@@ -300,7 +327,7 @@ def set_pay_detail(the_basic_json, pay_method_json):
data
=
the_basic_json
[
'params'
][
'data'
]
data
.
update
(
pay_method_json
)
def
build_request_json
(
row
,
produks
):
def
build_request_json
(
denom
,
row
,
produks
):
time_stamp
=
datetime
.
now
()
.
strftime
(
'
%
Y
%
m
%
d
%
H
%
M
%
S'
)
req_dt
=
datetime
.
now
()
.
strftime
(
'
%
Y
%
m
%
d'
)
req_tm
=
datetime
.
now
()
.
strftime
(
'
%
H
%
M
%
S'
)
...
...
@@ -311,7 +338,7 @@ def build_request_json(row, produks):
"method"
:
"register"
,
"params"
:
{
"data"
:
{
"denom"
:
row
.
pay_
denom
,
"denom"
:
denom
,
"time_stamp"
:
time_stamp
,
"currency"
:
"IDR"
,
"amount"
:
row
.
amt_sell
,
...
...
src/agratek/api/merchant/views/templates/pay.pt
View file @
3dd45e9
...
...
@@ -130,7 +130,7 @@ td, th {
<label
for=
"${fieldItem.oid}"
class=
"control-label col-md-4"
id=
"req-${fieldItem.oid}"
>
${fieldItem.title}
</label>
<div
class=
"col-md-8"
>
<input
type=
"text"
class=
"form-control"
id=
"${fieldItem.name}-cnt"
name=
"${fieldItem.name}-cnt"
value=
""
style=
"width: 150px"
>
<input
type=
"text"
class=
"form-control"
id=
"${fieldItem.name}-cnt"
name=
"${fieldItem.name}-cnt"
value=
""
style=
"width: 150px
; display: none;
"
>
<p
id=
"error-${fieldItem.oid}"
class=
"help-block"
tal:condition=
"fieldItem.error"
tal:repeat=
"error fieldItem.error.messages()"
>
${error}
</p>
</div>
</div>
...
...
@@ -139,7 +139,7 @@ td, th {
<label
for=
"${fieldItem.oid}"
class=
"control-label col-md-4"
id=
"req-${fieldItem.oid}"
>
${fieldItem.title}
</label>
<div
class=
"col-md-8"
>
<input
type=
"text"
class=
"form-control"
id=
"${fieldItem.name}-cnt"
name=
"${fieldItem.name}-cnt"
value=
""
style=
"width: 150px"
>
<input
type=
"text"
class=
"form-control"
id=
"${fieldItem.name}-cnt"
name=
"${fieldItem.name}-cnt"
value=
""
style=
"width: 150px
; display: none;
"
>
<p
id=
"error-${fieldItem.oid}"
class=
"help-block"
tal:condition=
"fieldItem.error"
tal:repeat=
"error fieldItem.error.messages()"
>
${error}
</p>
</div>
</div>
...
...
@@ -148,7 +148,7 @@ td, th {
<label
for=
"${fieldItem.oid}"
class=
"control-label col-md-4"
id=
"req-${fieldItem.oid}"
>
${fieldItem.title}
</label>
<div
class=
"col-md-8"
>
<input
type=
"text"
class=
"form-control"
id=
"${fieldItem.name}-cnt"
name=
"${fieldItem.name}-cnt"
value=
""
style=
"width: 150px"
>
<input
type=
"text"
class=
"form-control"
id=
"${fieldItem.name}-cnt"
name=
"${fieldItem.name}-cnt"
value=
""
style=
"width: 150px
; display: none;
"
>
<p
id=
"error-${fieldItem.oid}"
class=
"help-block"
tal:condition=
"fieldItem.error"
tal:repeat=
"error fieldItem.error.messages()"
>
${error}
</p>
</div>
</div>
...
...
src/agratek/api/merchant/views/templates/pay_info.pt
View file @
3dd45e9
...
...
@@ -40,7 +40,7 @@ td, th {
</div>
<div
metal:fill-slot=
"scripts"
>
<div
class=
"panel-body col-md-12"
>
<div
class=
"col-md-6 col-md-offset-3 col-xs-12
well
"
style=
"padding: 0px;"
>
<div
class=
"col-md-6 col-md-offset-3 col-xs-12"
style=
"padding: 0px;"
>
<!-- Proses Template Form -->
<form
method=
"post"
accept-charset=
"utf-8"
...
...
@@ -71,12 +71,12 @@ td, th {
<label
style=
"font-weight: normal;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
Batas Pembayaran
</label>
<label
style=
"font-weight: normal;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
${dt_tm_str}
</label>
<hr
class=
"col-sm-12 col-md-12 col-xs-12"
>
<label
style=
"font-weight: normal;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
Metode Pembayaran
</label>
<label
style=
"font-weight: normal;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
Metode Pembayaran
:
</label>
<div
class=
"col-md-12 col-xs-12 col-sm-12"
id=
"img_container"
>
<img
style=
"height: 60px;"
src=
"${request._host}/static/payment/${img_src}"
>
</div>
<label
style=
"font-weight: normal;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
${meth_str}
</label>
<label
style=
"font-weight: normal;
margin-top: 6px;
"
class=
"col-md-12 col-xs-12 col-sm-12"
>
${meth_str}
</label>
<hr
class=
"col-sm-12 col-md-12 col-xs-12"
>
<label
style=
"font-weight: normal;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
${subject}
</label>
<label
style=
"font-weight: bolder;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
${content}
</label>
...
...
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