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 6203408b
authored
Jan 11, 2020
by
yasir
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
update
1 parent
d01d060b
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
190 additions
and
98 deletions
src/agratek/api/merchant/pay_request_tools.py
src/agratek/api/merchant/views/pay.py
src/agratek/api/merchant/views/pay_info.py
src/agratek/api/merchant/views/pay_request_resp.py
src/agratek/api/merchant/views/templates/pay.pt
src/agratek/api/merchant/views/templates/pay_info.pt
src/agratek/api/merchant/views/templates/pay_request.pt
src/agratek/api/merchant/pay_request_tools.py
0 → 100644
View file @
6203408
import
calendar
from
.tools
import
terbilang
methods
=
[
(
"VA"
,
"Virtual Account"
),
(
"CC"
,
"Credit Card"
),
(
"CVS"
,
"Convenience Store"
),
(
"EM"
,
"E-Money"
),
(
"loan"
,
"Installment Non‐Bank(Loan)"
),
(
"CP"
,
"ClickPay"
)
]
vacs
=
[
(
"VA-MANDIRI"
,
"Bank Mandiri"
),
(
"VA-BNI"
,
"Bank Negara Indonesia 46"
),
(
"VA-BRI"
,
"Bank Rakyat Indonesia"
),
(
"VA-DANAMON"
,
"Bank Danamon Indonesia"
),
(
"VA-MAYBANK"
,
"Bank International Indonesia Maybank"
),
(
"VA-PERMATA"
,
"Bank Permata"
),
(
"VA-HANABANK"
,
"Bank KEB Hana Indonesia"
),
(
"VA-CIMB"
,
"Bank CIMB Niaga"
),
]
cvss
=
[
(
"CVS-INMAR"
,
"Indomaret"
),
(
"CVS-ALMAR"
,
"Alfamart"
),
(
"CVS-ALMAR"
,
"Lawson"
),
(
"CVS-ALMAR"
,
"Alfamidi"
),
(
"CVS-ALMAR"
,
"Dan Dan Store"
),
]
loans
=
[
(
"PL-AK"
,
"Akulaku"
),
(
"PL-KR"
,
"Kredivo"
),
]
cps
=
[
(
"CP-BCA"
,
"Bank BCA (BCA KlikPay)"
),
(
"CP-CIMB"
,
"Bank CIMB Niaga (CIMB Clicks)"
),
]
ems
=
[
(
"WL-OVO"
,
"OVO"
),
(
"WL-LINKA"
,
"LinkAja"
),
]
def
get_str_hari
(
only_tanggal
,
only_bulan
,
only_tahun
):
days
=
[
"Senin"
,
"Selasa"
,
"Rabu"
,
"Kamis"
,
"Jumat"
,
"Sabtu"
,
"Minggu"
]
r
=
days
[
calendar
.
weekday
(
only_tahun
,
only_bulan
,
only_tanggal
)]
return
r
def
get_intstr_hari
(
only_tanggal
):
return
terbilang
(
only_tanggal
)
def
get_intstr_tahun
(
only_tahun
):
return
terbilang
(
only_tahun
)
def
get_str_bulan
(
only_bulan
):
months
=
[
"Januari"
,
"Pebruari"
,
"Maret"
,
"April"
,
"Mei"
,
"Juni"
,
"Juli"
,
"Agustus"
,
"September"
,
"Oktober"
,
"Nopember"
,
"Desember"
]
return
months
[
only_bulan
-
1
]
VA_IMG_SRC
=
{
'MANDIRI'
:
'mandiri.jpg'
,
'BNI'
:
'bni.jpg'
,
'BRI'
:
'bri.jpg'
,
'DANAMON'
:
'danamon.jpg'
,
'MAYBANK'
:
'maybank.jpg'
,
'PERMATA'
:
'permata.jpg'
,
'HANABANK'
:
'hanabank.jpg'
,
'CIMB'
:
'cimb.jpg'
}
src/agratek/api/merchant/views/pay.py
View file @
6203408
...
...
@@ -8,52 +8,8 @@ from opensipkd.pasar.models.produk import H2hArInvoice, H2hArInvoiceDet, Partner
from
opensipkd.pasar.models
import
DBSession
,
flush_row
from
.api_payment
import
set_register_values
,
build_register
from
.api_merchant
import
get_vendor_produk
methods
=
[
(
"VA"
,
"Virtual Account"
),
(
"CC"
,
"Credit Card"
),
(
"CVS"
,
"Convenience Store"
),
(
"EM"
,
"E-Money"
),
(
"loan"
,
"Installment Non‐Bank(Loan)"
),
(
"CP"
,
"ClickPay"
)
]
vacs
=
[
(
"VA-MANDIRI"
,
"Bank Mandiri"
),
(
"VA-BNI"
,
"Bank Negara Indonesia 46"
),
(
"VA-BRI"
,
"Bank Rakyat Indonesia"
),
(
"VA-DANAMON"
,
"Bank Danamon Indonesia"
),
(
"VA-MAYBANK"
,
"Bank International Indonesia Maybank"
),
(
"VA-PERMATA"
,
"Bank Permata"
),
(
"VA-HANABANK"
,
"Bank KEB Hana Indonesia"
),
(
"VA-CIMB"
,
"Bank CIMB Niaga"
),
]
cvss
=
[
(
"CVS-INMAR"
,
"Indomaret"
),
(
"CVS-ALMAR"
,
"Alfamart"
),
(
"CVS-ALMAR"
,
"Lawson"
),
(
"CVS-ALMAR"
,
"Alfamidi"
),
(
"CVS-ALMAR"
,
"Dan Dan Store"
),
]
loans
=
[
(
"PL-AK"
,
"Akulaku"
),
(
"PL-KR"
,
"Kredivo"
),
]
cps
=
[
(
"CP-BCA"
,
"Bank BCA (BCA KlikPay)"
),
(
"CP-CIMB"
,
"Bank CIMB Niaga (CIMB Clicks)"
),
]
ems
=
[
(
"WL-OVO"
,
"OVO"
),
(
"WL-LINKA"
,
"LinkAja"
),
]
from
..pay_request_tools
import
methods
,
vacs
,
cvss
,
loans
,
cps
,
ems
from
datetime
import
datetime
,
timedelta
class
VaSchema
(
colander
.
Schema
):
...
...
@@ -161,7 +117,7 @@ class view_pay(BaseView):
# inv_no = items['invoice_no']
# row = PartnerPay.query().filter_by(cust_inv_no=inv_no).first()
customer
=
Partner
.
query
()
.
filter
(
Partner
.
kode
==
request
.
session
[
'partner_kd'
]
)
.
first
()
customer
=
Partner
.
query
()
.
filter
(
Partner
.
id
==
6
)
.
first
()
# customer = Partner.query_user(user).first()
# if row and row.status > 0:
# #error invoice
...
...
@@ -196,18 +152,24 @@ class view_pay(BaseView):
print
(
denom
)
vendor_produk
=
get_vendor_produk
(
produk_kd
,
vendor_kd
=
vendor_kd
)
if
not
vendor_produk
:
#error vendor_produk
pass
row
=
DBSession
.
query
(
PartnerPay
)
.
filter
(
PartnerPay
.
token_pay_req
==
url_dict
[
'pay_token'
])
.
first
()
# row = DBSession.query(PartnerPay).filter(PartnerPay.id == 519).first()
row
.
vendor_id
=
vendor_produk
.
partner_id
row
.
produk_id
=
vendor_produk
.
produk
.
id
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'
)
row
.
pay_token_date_exp
=
dt
row
.
pay_token_time_exp
=
tm
row
.
pay_req_mth
=
mth
row
.
pay_denom
=
denom
ccard
=
None
if
mth
==
'VA'
:
row
.
inv_valid_date
=
'va_valid_date'
in
items
and
items
[
'va_valid_date'
]
or
''
row
.
inv_valid_time
=
'va_valid_time'
in
items
and
items
[
'va_valid_time'
]
or
''
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
elif
mth
==
'CC'
:
...
...
@@ -244,7 +206,8 @@ class view_pay(BaseView):
)
.
filter
(
PartnerPay
.
token_pay_req
==
url_dict
[
'pay_token'
])
.
first
()
data_form
[
'biller_name'
]
=
row
.
biller_name
data_form
[
'amount_tot'
]
=
row
.
amt_sell
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'
]
...
...
src/agratek/api/merchant/views/pay_info.py
View file @
6203408
...
...
@@ -2,6 +2,10 @@
from
opensipkd.base.views
import
BaseView
from
opensipkd.pasar.models.produk
import
PartnerPay
from
pyramid.view
import
view_config
from
..tools
import
terbilang
import
calendar
from
datetime
import
datetime
,
timedelta
from
..pay_request_tools
import
methods
,
vacs
,
cvss
,
loans
,
cps
,
ems
,
get_str_hari
,
get_str_bulan
,
VA_IMG_SRC
class
view_pay
(
BaseView
):
@view_config
(
route_name
=
'pay-info'
,
renderer
=
'templates/pay_info.pt'
)
#permission = 'pay-form',
...
...
@@ -13,13 +17,37 @@ class view_pay(BaseView):
meth
=
url_dict
[
'meth'
]
pay_token
=
url_dict
[
'pay_token'
]
row
=
PartnerPay
.
query
()
.
filter
(
PartnerPay
.
token_pay_req
==
pay_token
)
.
first
()
row
_pay
=
PartnerPay
.
query
()
.
filter
(
PartnerPay
.
token_pay_req
==
pay_token
)
.
first
()
if
meth
==
'VA'
:
subject
=
'Nomor VA :'
content
=
row
.
card_no
subject
=
'No. Virtual Account'
content
=
row_pay
.
card_no
va_dt
=
row_pay
.
inv_valid_date
va_tm
=
row_pay
.
inv_valid_time
va_dt
=
datetime
.
strptime
(
va_dt
,
"
%
Y
%
m
%
d"
)
.
date
()
hari_str
=
get_str_hari
(
va_dt
.
day
,
va_dt
.
month
,
va_dt
.
year
)
bulan_str
=
get_str_bulan
(
va_dt
.
month
)
va_tm
=
datetime
.
strptime
(
va_tm
,
"
%
H
%
M
%
S"
)
.
time
()
jam_str
=
str
(
va_tm
.
hour
)
+
str
(
va_tm
.
minute
)
# Jum'at, 27 Desember 2019, Pukul 04:44 WIB
dt_tm_str
=
hari_str
+
', '
+
str
(
va_dt
.
day
)
+
' '
+
bulan_str
+
' '
+
str
(
va_dt
.
year
)
+
', Pukul '
+
str
(
va_tm
)
+
' WIB'
denom_str
=
row_pay
.
pay_denom
layanan
=
denom_str
.
split
(
'-'
)[
1
]
img_src
=
VA_IMG_SRC
[
layanan
]
amount
=
format
(
row_pay
.
amt_sell
,
',d'
)
.
replace
(
','
,
'.'
)
meth
=
row_pay
.
pay_req_mth
meth_str
=
dict
(
methods
)[
meth
]
+
', '
+
dict
(
vacs
)[
denom_str
]
bringback_url
=
row_pay
.
bringback_url
elif
meth
==
'CC'
:
content
=
row
.
card_no
content
=
row
_pay
.
card_no
elif
meth
==
'CVS'
:
subject
=
''
content
=
''
...
...
@@ -35,6 +63,15 @@ class view_pay(BaseView):
return
dict
(
amount
=
amount
,
dt_tm_str
=
dt_tm_str
,
img_src
=
img_src
,
meth_str
=
meth_str
,
subject
=
subject
,
content
=
content
content
=
content
,
bringback_url
=
bringback_url
)
\ No newline at end of file
src/agratek/api/merchant/views/pay_request_resp.py
View file @
6203408
...
...
@@ -51,8 +51,12 @@ def randomString(stringLength):
return
''
.
join
(
random
.
choice
(
letters
)
for
i
in
range
(
stringLength
))
def
save_partner_pay_request
(
values
,
row
=
None
):
print
(
'masuk save_partner_pay_request >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
if
not
row
:
print
(
'data baru loh >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
row
=
PartnerPay
()
else
:
print
(
'kok bisa sudah ada datanya >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
row
.
from_dict
(
values
)
random_token
=
randomString
(
20
)
...
...
@@ -71,12 +75,14 @@ def added_register_values(current_register_values, dat):
added_dict
[
'biller_state'
]
=
dat
[
'biller'
][
'state'
]
added_dict
[
'biller_post_code'
]
=
dat
[
'biller'
][
'post_code'
]
added_dict
[
'biller_country'
]
=
dat
[
'biller'
][
'country'
]
added_dict
[
'bringback_url'
]
=
dat
[
'bringback_url'
]
return
added_dict
@jsonrpc_method
(
method
=
'pay_request'
,
endpoint
=
'api-merchant'
)
def
pay_request
(
request
,
data
,
**
kwargs
):
user
=
auth_from_rpc
(
request
)
#
user = DBSession.query(User).filter(User.id == 1).first()
#
user = auth_from_rpc(request)
user
=
DBSession
.
query
(
User
)
.
filter
(
User
.
id
==
1
)
.
first
()
i
=
0
print
(
'masuk sini loh >>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
if
not
data
:
...
...
@@ -88,6 +94,7 @@ def pay_request(request, data, **kwargs):
if
not
customer
:
raise
JsonRpcCustomerNotFoundError
#todo, json request testing
r_data
=
{}
log
.
info
(
"
%
s Payment Attempt Request:
%
s"
%
(
customer
.
kode
,
data
))
for
dat
in
data
:
...
...
@@ -109,26 +116,6 @@ def pay_request(request, data, **kwargs):
values
=
set_register_values
(
dat
,
customer
)
values
=
added_register_values
(
values
,
dat
)
credit_card
=
"credit_card"
in
dat
and
dat
[
"credit_card"
]
or
{}
#belum paham metode untuk credit card seperti gimana.
if
credit_card
:
values
.
update
(
dict
(
instmnt_mon
=
'instmnt_mon'
in
credit_card
and
credit_card
[
'instmnt_mon'
]
or
''
,
instmnt_type
=
'instmnt_type'
in
credit_card
and
credit_card
[
'instmnt_type'
]
or
''
,
recurr_opt
=
'recurr_opt'
in
credit_card
and
credit_card
[
'recurr_opt'
]
or
0
,
))
ccard
=
None
else
:
ccard
=
None
va
=
"va"
in
dat
and
dat
[
"va"
]
or
{}
if
va
:
values
.
update
(
dict
(
inv_valid_date
=
'valid_date'
in
va
and
va
[
'valid_date'
]
or
''
,
inv_valid_time
=
'valid_time'
in
va
and
va
[
'valid_time'
]
or
''
,
inv_cust_va
=
'fix_acct_id'
in
va
and
va
[
'fix_acct_id'
]
or
''
,
))
ar_invoice
=
save_partner_pay_request
(
values
,
row
)
r_data
[
"status"
]
=
"SUCCESS"
...
...
src/agratek/api/merchant/views/templates/pay.pt
View file @
6203408
...
...
@@ -83,7 +83,7 @@ td, th {
</div>
<div
class=
"col-md-12 col-sm-12 col-xs-12"
>
<label
tal:content=
"formData['amount_tot']"
class=
"col-md-4 col-sm-4 col-xs-4 pull-right"
style=
"text-align: right; padding: 0px;"
></label>
<label
tal:content=
"formData['amount_tot
_th
']"
class=
"col-md-4 col-sm-4 col-xs-4 pull-right"
style=
"text-align: right; padding: 0px;"
></label>
<label
class=
"col-md-4 col-sm-4 col-xs-4 pull-right"
style=
"text-align: left; padding: 0px;"
>
Total Bayar :
</label>
</div>
...
...
src/agratek/api/merchant/views/templates/pay_info.pt
View file @
6203408
<html
metal:use-macro=
"load:
base
.pt"
>
<html
metal:use-macro=
"load:
opensipkd.base:views/templates/base3-clean
.pt"
>
<div
metal:fill-slot=
"content"
>
<style>
button
{
...
...
@@ -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"
>
<div
class=
"col-md-6 col-md-offset-3 col-xs-12 well"
style=
"padding: 0px;"
>
<!-- Proses Template Form -->
<form
method=
"post"
accept-charset=
"utf-8"
...
...
@@ -57,18 +57,32 @@ td, th {
<!-- Looping Semua Field-->
<h3
style=
"width: 100%; text-align: center;"
>
Sukses Melakukan Pembayaran :)
</h3>
<hr
class=
"col-md-12"
>
<div
style=
"margin-right: 20%; margin-left: 20%"
>
<h5
style=
"width: 100%; text-align: center;"
>
${subject}
</h5>
<h6
style=
"width: 100%; text-align: center;"
>
${content}
</h6>
</div>
<div
id=
"bt_box"
class=
"col-md-12"
style=
"text-align: right;"
>
<!-- <button style="width: 100px;" class="btn btn-success" type="submit" name="bayar" id="bt_bayar" >Bayar</button>
<button class="btn btn-warning" type="submit" name="batal_bayar" id="bt_batal_bayar" >Batal</button> -->
<h5
style=
"width: 100%; text-align: left;"
>
Lakukan pembayaran sebelum tagihan kamu kadaluwarsa.
</h5>
<div
class=
"panel-body well"
style=
"padding: 0px;"
>
<div
class=
"panel-header"
style=
"text-align: center;"
>
<label
style=
"font-weight: normal; margin-bottom: 0px; margin-top: 10px;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
Total pembayaran
</label>
<label
style=
"font-size: 1.2em; color: #db4827;"
class=
"col-md-12 col-xs-12 col-sm-12"
>
Rp. ${amount}
</label>
</div>
<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"
>
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>
<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>
<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>
<div
id=
"bt_box"
class=
"col-md-12 col-xs-12 col-sm-12"
style=
"padding: 0px; text-align: center; margin-bottom: 10px;"
>
<button
id=
"btn_tutup"
class=
"btn btn-warning"
style=
"margin: 0px; width: 90%;"
type=
"button"
>
Tutup
</button>
</div>
</div>
</div>
...
...
@@ -88,7 +102,9 @@ td, th {
<script>
$
(
document
).
ready
(
function
()
{
$
(
'#btn_tutup'
).
click
(
function
(){
window
.
open
(
'${bringback_url}'
,
'_self'
);
})
})
</script>
...
...
src/agratek/api/merchant/views/templates/pay_request.pt
View file @
6203408
...
...
@@ -336,7 +336,7 @@
`<button type="button" onclick="removeItem('pack-`
+
cnt
+
`')">Hapus</button> `
+
`<div tal:define="fieldItem formItemCart['img_url']" id="item-
${
fieldItem
.
oid
}
">`
+
`<div class="col-md-8">`
+
`<input type="
hidden
" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" value="" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`">`
+
`<input type="
text
" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" value="" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`">`
+
`</div>`
+
`</div>`
+
`<br></br>`
+
...
...
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