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 a0efbbb9
authored
Jan 17, 2020
by
yasir
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
InsyaAllah selesai
1 parent
6203408b
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
407 additions
and
107 deletions
src/agratek/api/merchant/scripts/data/routes.csv
src/agratek/api/merchant/views/pay.py
src/agratek/api/merchant/views/pay_info.py
src/agratek/api/merchant/views/pay_request.py
src/agratek/api/merchant/views/pay_request_resp.py
src/agratek/api/merchant/views/tangkap_response.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_info_fail.pt
src/agratek/api/merchant/views/templates/pay_request.pt
src/agratek/api/merchant/scripts/data/routes.csv
View file @
a0efbbb
...
...
@@ -89,6 +89,7 @@ test-postpaid-inquiry,/api/test/postpaid/inquiry,API TEST INQUIRY POSTPAUD,1,0
api-vsi,/api/vsi,'API VSI,1,0
pay-form,/pay/{pay_token},Metode Pembayaran,1,0
pay-info,/pay_info/{pay_token}/{
meth}
,Informasi Pembayaran,1,0
pay-info,/pay_info/{pay_token}/{
state}/
,Informasi Pembayaran,1,0
pay-request,/pay_request,Pembayaran,1,0
pay-request-resp,/pay_request_resp,Respon Request Pembayaran,1,0
\ No newline at end of file
pay-request-resp,/pay_request_resp,Respon Request Pembayaran,1,0
tangkap-response,/tangkap_response,tes_dong,1,0
\ No newline at end of file
src/agratek/api/merchant/views/pay.py
View file @
a0efbbb
...
...
@@ -10,6 +10,10 @@ from .api_payment import set_register_values, build_register
from
.api_merchant
import
get_vendor_produk
from
..pay_request_tools
import
methods
,
vacs
,
cvss
,
loans
,
cps
,
ems
from
datetime
import
datetime
,
timedelta
from
opensipkd.base
import
get_settings
from
..tools
import
json_rpc_header
import
requests
import
json
class
VaSchema
(
colander
.
Schema
):
...
...
@@ -93,35 +97,19 @@ class view_pay(BaseView):
request
=
self
.
req
session
=
self
.
ses
url_dict
=
request
.
matchdict
print
(
'isi url_dict >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
print
(
url_dict
)
print
(
'isi request.params >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
print
(
request
.
params
)
data_form
=
{}
post_data
=
request
.
POST
items
=
dict
(
post_data
)
produks
=
[]
print
(
'masuk controller pay >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
if
post_data
:
if
'bayar'
in
post_data
:
print
(
'masuk bayar >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
if
'invoice_no'
not
in
post_data
:
#error invoice
pass
user_id
=
request
.
session
# inv_no = items['invoice_no']
# row = PartnerPay.query().filter_by(cust_inv_no=inv_no).first()
customer
=
Partner
.
query
()
.
filter
(
Partner
.
id
==
6
)
.
first
()
# customer = Partner.query_user(user).first()
# if row and row.status > 0:
# #error invoice
# pass
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
()
registered_user
=
customer
.
users
produk_kd
=
''
...
...
@@ -143,17 +131,15 @@ class view_pay(BaseView):
vendor_kd
=
None
produk_kd
=
denom
print
(
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>jenis string'
)
# whatisthis(produk_kd)
produk_kd
=
produk_kd
.
replace
(
'
\xad
'
,
''
)
produk_kd
=
produk_kd
.
replace
(
'
\u00ad
'
,
''
)
produk_kd
=
produk_kd
.
replace
(
'
\N{SOFT HYPHEN}
'
,
''
)
print
(
'isi denom >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
print
(
denom
)
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 = DBSession.query(PartnerPay).filter(PartnerPay.id == 519).first()
row
.
vendor_id
=
vendor_produk
.
partner_id
row
.
produk_id
=
vendor_produk
.
produk
.
id
...
...
@@ -166,12 +152,27 @@ class view_pay(BaseView):
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
adt_va
=
{}
adt_va
[
'va'
]
=
dict
(
valid_date
=
dt
,
valid_time
=
tm
,
fix_acct_id
=
""
)
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
''
...
...
@@ -179,16 +180,36 @@ class view_pay(BaseView):
ccard
=
None
flush_row
(
row
)
result_request
=
build_register
(
vendor_produk
,
row
,
ccard
=
ccard
)
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
)
dict_results
=
json
.
loads
(
result_request
.
text
)
err_param
=
''
if
'result'
in
dict_results
:
state
=
int
(
dict_results
[
'result'
][
'code'
])
if
state
!=
0
:
err_param
=
'?adt=fail'
elif
'error'
in
dict_results
:
state
=
int
(
dict_results
[
'error'
][
'code'
])
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
# values = set_register_values(encode_to_json(items, produks), customer)
if
merchant_url
or
merchant_url
!=
''
:
headers_merchant
=
{}
headers_merchant
[
'Content-Type'
]
=
'application/json'
headers_merchant
=
headers_merchant
try
:
requests
.
post
(
merchant_url
,
data
=
result_request
.
text
,
headers
=
headers_merchant
,
timeout
=
None
)
except
Exception
as
e
:
pass
print
(
'hasil build request > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
print
(
result_request
)
a
=
request
.
route_url
(
route_name
=
'pay-info'
,
pay_token
=
url_dict
[
'pay_token'
],
meth
=
mth
)
return
HTTPFound
(
a
)
return
HTTPFound
(
route_to
)
elif
'batal'
in
post_data
:
return
HTTPFound
(
location
=
request
.
route_url
(
'api-merchant-home'
))
...
...
@@ -261,4 +282,183 @@ class view_pay(BaseView):
produks
=
produks
,
)
\ No newline at end of file
)
def
get_api_url
():
settings
=
get_settings
()
hostnya
=
settings
[
'_host'
]
# hostnya = 'https://devel.agratek.id'
url
=
hostnya
+
"/api/merchant"
return
url
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
):
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'
)
body
=
{
"jsonrpc"
:
"2.0"
,
"id"
:
"1"
,
"method"
:
"register"
,
"params"
:
{
"data"
:
{
"denom"
:
row
.
pay_denom
,
"time_stamp"
:
time_stamp
,
"currency"
:
"IDR"
,
"amount"
:
row
.
amt_sell
,
"invoice_no"
:
row
.
cust_inv_no
,
"description"
:
row
.
description
,
"fee"
:
row
.
fee
,
"vat"
:
row
.
vat
,
"notax_amt"
:
row
.
notax_amt
or
0
,
"req_dt"
:
req_dt
,
"req_tm"
:
req_tm
,
"biller"
:
{
"name"
:
row
.
biller_name
or
""
,
"phone"
:
row
.
biller_phone
or
""
,
"email"
:
row
.
biller_email
or
""
,
"address"
:
row
.
biller_address
or
""
,
"city"
:
row
.
biller_city
or
""
,
"state"
:
row
.
biller_state
or
""
,
"post_code"
:
row
.
biller_post_code
or
""
,
"country"
:
row
.
biller_country
or
""
},
"customer"
:
{
"name"
:
row
.
inv_cust_nm
or
""
,
"phone"
:
row
.
inv_cust_email
or
""
,
"email"
:
row
.
inv_cust_email
or
""
,
"address"
:
row
.
inv_cust_addr
or
""
,
"city"
:
row
.
inv_cust_city
or
""
,
"state"
:
row
.
inv_cust_state
or
""
,
"post_code"
:
row
.
inv_cust_pos
or
""
,
"country"
:
row
.
inv_cust_country
or
""
,
"ip"
:
row
.
server_ip
or
""
,
"session_id"
:
row
.
inv_cust_session
or
""
,
"agent"
:
row
.
inv_cust_agent
or
""
,
"language"
:
"en-US"
},
"deliver_to"
:
{
"name"
:
row
.
delivery_nm
or
""
,
"phone"
:
row
.
delivery_phone
or
""
,
"email"
:
row
.
delivery_email
or
""
,
"address"
:
row
.
delivery_addr
or
""
,
"city"
:
row
.
delivery_city
or
""
,
"state"
:
row
.
delivery_state
or
""
,
"post_code"
:
row
.
delivery_pos
or
""
,
"country"
:
row
.
delivery_country
or
""
},
"cart"
:
produks
,
"server"
:
{
"domain"
:
row
.
domain
or
""
,
"ip"
:
row
.
server_ip
or
""
}
}
}
}
return
body
# {
# "error": {
# "code": -32600,
# "message": "invalid request"
# },
# "id": null,
# "jsonrpc": "2.0"
# }
# {
# "result": {
# "time_stamp": "20200116155500",
# "deliver_to": {
# "state": "",
# "post_code": "",
# "phone": "",
# "city": "",
# "name": "safasf",
# "email": "",
# "country": "Indonesia",
# "address": ""
# },
# "description": "Test Transaction Pasarqu",
# "amount": "35000",
# "trans_time": "155501",
# "customer": {
# "state": "",
# "post_code": "",
# "phone": "",
# "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
# "session_id": "697D6922C961070967D3BA1BA5699C2C",
# "city": "",
# "country": "Indonesia",
# "email": "",
# "name": "ffsdfsfsf",
# "language": "en-US",
# "ip": "127.0.0.1",
# "address": ""
# },
# "code": 0,
# "notax_amt": 0,
# "trans_date": "20200116",
# "va": {
# "valid_time": "155500",
# "valid_date": "20200117",
# "vacct_no": "70014000091555018516"
# },
# "message": "SUCCESS",
# "fee": 0,
# "biller": {
# "state": "",
# "post_code": "",
# "phone": "",
# "city": "",
# "name": "dsafsfa",
# "email": "",
# "country": "",
# "address": ""
# },
# "currency": "IDR",
# "denom": "VA-MANDIRI",
# "invoice_no": "300bssx5t",
# "server": {
# "ip": "127.0.0.1",
# "domain": "merchant.com"
# },
# "vat": 0,
# "cart": {
# "count": 3,
# "item": [
# {
# "goods_detail": "E-Pulsa",
# "goods_amt": "25225",
# "goods_name": "Pulsa Telkomsel 25.000",
# "img_url": "https://i1.wp.com/resepkoki.id/wp-content/uploads/2017/09/Jeruk-mandarin.jpg"
# },
# {
# "goods_detail": "E-Pulsa",
# "goods_amt": "149575",
# "goods_name": "Pulsa Telkomsel 150.000",
# "img_url": "https://www.bantennews.co.id/wp-content/uploads/2019/09/Screenshot_2019-09-24-23-48-36-251_org.detikcom.rss_.jpg"
# },
# {
# "goods_detail": "E-Pulsa",
# "goods_amt": "50050",
# "goods_name": "Pulsa Telkomsel 50.000",
# "img_url": "https://blog.regopantes.com/wp-content/uploads/2019/02/apel-fuji-via-pixabay.jpg"
# }
# ]
# },
# "req_tm": "155500",
# "tx_id": "adminc8e2905791584c97548b360bc4adac577544bc4c5df41e01fa97d26add2fe90f",
# "req_dt": "20200116"
# },
# "id": "1",
# "jsonrpc": "2.0"
# }
\ No newline at end of file
src/agratek/api/merchant/views/pay_info.py
View file @
a0efbbb
...
...
@@ -9,60 +9,78 @@ from ..pay_request_tools import methods, vacs, cvss, loans, cps, ems, get_str_ha
class
view_pay
(
BaseView
):
@view_config
(
route_name
=
'pay-info'
,
renderer
=
'templates/pay_info.pt'
)
#permission = 'pay-form',
@view_config
(
route_name
=
'pay-info'
,
renderer
=
'templates/pay_info_fail.pt'
,
request_param
=
'adt=fail'
)
#permission = 'pay-form',
def
the_form
(
self
):
request
=
self
.
req
session
=
self
.
ses
url_dict
=
request
.
matchdict
meth
=
url_dict
[
'meth
'
]
state
=
url_dict
[
'state
'
]
pay_token
=
url_dict
[
'pay_token'
]
row_pay
=
PartnerPay
.
query
()
.
filter
(
PartnerPay
.
token_pay_req
==
pay_token
)
.
first
()
amount
=
0
,
if
meth
==
'VA'
:
subject
=
'No. Virtual Account'
content
=
row_pay
.
card_no
dt_tm_str
=
''
,
img_src
=
''
,
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'
meth_str
=
''
,
denom_str
=
row_pay
.
pay_denom
layanan
=
denom_str
.
split
(
'-'
)[
1
]
img_src
=
VA_IMG_SRC
[
layanan
]
subject
=
''
,
content
=
''
,
response_url
=
''
amount
=
format
(
row_pay
.
amt_sell
,
',d'
)
.
replace
(
','
,
'.'
)
# bringback_url = bringback_url
if
state
==
'0'
:
pay_token
=
url_dict
[
'pay_token'
]
row_pay
=
PartnerPay
.
query
()
.
filter
(
PartnerPay
.
token_pay_req
==
pay_token
)
.
first
()
meth
=
row_pay
.
pay_req_mth
meth_str
=
dict
(
methods
)[
meth
]
+
', '
+
dict
(
vacs
)[
denom_str
]
bringback_url
=
row_pay
.
bringback_url
if
meth
==
'VA'
:
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'
elif
meth
==
'CC'
:
content
=
row_pay
.
card_no
elif
meth
==
'CVS'
:
subject
=
''
content
=
''
elif
meth
==
'EM'
:
subject
=
''
content
=
''
elif
meth
==
'loan'
:
subject
=
''
content
=
''
elif
meth
==
'CP'
:
subject
=
''
content
=
''
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
]
response_url
=
row_pay
.
response_url
elif
meth
==
'CC'
:
content
=
row_pay
.
card_no
elif
meth
==
'CVS'
:
subject
=
''
content
=
''
elif
meth
==
'EM'
:
subject
=
''
content
=
''
elif
meth
==
'loan'
:
subject
=
''
content
=
''
elif
meth
==
'CP'
:
subject
=
''
content
=
''
return
dict
(
state
=
state
,
amount
=
amount
,
dt_tm_str
=
dt_tm_str
,
...
...
@@ -73,5 +91,5 @@ class view_pay(BaseView):
subject
=
subject
,
content
=
content
,
bringback_url
=
bringback
_url
response_url
=
response
_url
)
\ No newline at end of file
src/agratek/api/merchant/views/pay_request.py
View file @
a0efbbb
...
...
@@ -67,6 +67,7 @@ class ParamsSchema(colander.Schema):
currency
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Mata Uang "
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
amount
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Total Bayar"
)
invoice_no
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nomor Invoice"
)
response_url
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Response URL"
)
description
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Deskripsi Transaksi"
,
missing
=
colander
.
drop
)
fee
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Fee"
)
vat
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"VAT"
)
...
...
@@ -114,6 +115,8 @@ class ItemsSchema(colander.Schema):
goods_name
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama Produk"
)
goods_detail
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Detail"
)
goods_amt
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Harga"
)
qty
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Qty"
)
subtotal
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Subtotal"
)
class
CartSchema
(
colander
.
Schema
):
count
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Jumlah"
,
oid
=
"count"
)
...
...
@@ -192,6 +195,8 @@ class view_pay(BaseView):
goods_name
=
items
[
key
],
goods_detail
=
items
[
'goods_detail-'
+
uniq
],
goods_amt
=
items
[
'goods_amt-'
+
uniq
],
qty
=
items
[
'qty-'
+
uniq
],
subtotal
=
items
[
'subtotal-'
+
uniq
]
)
produks
.
append
(
produk
)
...
...
@@ -227,6 +232,7 @@ class view_pay(BaseView):
"method"
:
"pay_request"
,
"params"
:
{
"data"
:
{
"response_url"
:
items
[
'response_url'
],
"time_stamp"
:
time_stamp
,
"currency"
:
"IDR"
,
"amount"
:
items
[
'amount'
],
...
...
src/agratek/api/merchant/views/pay_request_resp.py
View file @
a0efbbb
...
...
@@ -20,9 +20,6 @@ log = logging.getLogger(__name__)
def
encode_form_to_json
(
form_request_data
,
parsed_produks
):
decoded_dict
=
{}
print
(
'isi form_request_data dalam encode_to_json >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
print
(
form_request_data
)
customer_req
=
{}
deliver_to
=
{}
server
=
{}
...
...
@@ -75,14 +72,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'
]
added_dict
[
'
response_url'
]
=
dat
[
'response
_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
:
...
...
@@ -120,7 +117,7 @@ def pay_request(request, data, **kwargs):
r_data
[
"status"
]
=
"SUCCESS"
r_data
[
"message"
]
=
"Data tersimpan silahkan lanjutkan pembayaran"
r_data
[
'code'
]
=
1
r_data
[
'code'
]
=
0
r_data
[
'pay_token'
]
=
ar_invoice
.
token_pay_req
r_data
[
'pay_url'
]
=
request
.
_host
+
'/pay/'
+
ar_invoice
.
token_pay_req
...
...
src/agratek/api/merchant/views/tangkap_response.py
0 → 100644
View file @
a0efbbb
from
opensipkd.base.views
import
BaseView
from
pyramid.view
import
view_config
class
view_pay
(
BaseView
):
@view_config
(
route_name
=
'tangkap-response'
,
renderer
=
'json'
)
#permission = 'pay-form',
def
view
(
self
):
request
=
self
.
req
session
=
self
.
ses
url_dict
=
request
.
matchdict
print
(
'masuk masuk >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
)
print
(
request
.
json_body
)
\ No newline at end of file
src/agratek/api/merchant/views/templates/pay.pt
View file @
a0efbbb
...
...
@@ -275,20 +275,12 @@ td, th {
</select>
<p
id=
"error-${fieldItem.oid}"
class=
"help-block"
tal:condition=
"fieldItem.error"
tal:repeat=
"error fieldItem.error.messages()"
>
${error}
</p>
</div>
</div>
</div>
<div
id=
"bt_box"
class=
"col-md-12"
style=
"text-align: right;"
>
<button
style=
"margin: 0px;"
class=
"btn btn-success col-md-5 col-xs-5 col-sm-5 pull-left"
type=
"submit"
name=
"bayar"
id=
"bt_bayar"
>
Bayar
</button>
<button
style=
"margin: 0px;"
class=
"btn btn-warning col-md-5 col-xs-5 col-sm-5 pull-right"
type=
"submit"
name=
"batal_bayar"
id=
"bt_batal_bayar"
>
Batal
</button>
<div
id=
"bt_box"
class=
"col-md-12"
style=
"text-align: center;"
>
<button
style=
"margin: 0px; width: 100%;"
class=
"btn btn-success"
type=
"submit"
name=
"bayar"
id=
"bt_bayar"
>
Bayar
</button>
</div>
</form>
<!-- End Template Form -->
<!-- </div> -->
...
...
src/agratek/api/merchant/views/templates/pay_info.pt
View file @
a0efbbb
...
...
@@ -80,9 +80,6 @@ td, th {
<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>
...
...
@@ -102,9 +99,6 @@ td, th {
<script>
$
(
document
).
ready
(
function
()
{
$
(
'#btn_tutup'
).
click
(
function
(){
window
.
open
(
'${bringback_url}'
,
'_self'
);
})
})
</script>
...
...
src/agratek/api/merchant/views/templates/pay_info_fail.pt
0 → 100644
View file @
a0efbbb
<html
metal:use-macro=
"load: opensipkd.base:views/templates/base3-clean.pt"
>
<div
metal:fill-slot=
"content"
>
<style>
button
{
margin
:
0px
3px
;
}
#main
{
min-height
:
1px
;
padding-bottom
:
1px
;}
hr
{
display
:
block
;
margin-top
:
0px
;
margin-bottom
:
5px
;
margin-left
:
auto
;
margin-right
:
auto
;
/*border-style: inset;*/
/*border-width: 0.2px;*/
}
table
{
font-family
:
arial
,
sans-serif
;
border-collapse
:
collapse
;
width
:
100%
;
}
td
,
th
{
border
:
1px
solid
#dddddd
;
text-align
:
left
;
padding
:
8px
;
}
.control-label
{
text-align
:
left
!important
;
}
</style>
</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;"
>
<!-- Proses Template Form -->
<div
style=
"height: 300px; text-align: center;"
class=
"col-xs-12 col-md-12 col-sm-12"
>
<label
style=
"color: indianred; padding-top: 140px; display: block; font-weight: bold;"
>
Terjadi Kesalahan Sistem, Gagal melakukan transaksi.
</label>
<label
style=
"color: indianred; padding-top: 5px; display: block; font-weight: bold;"
>
Code : ${state}
</label>
</div>
<!-- End Template Form -->
<!-- </div> -->
</div>
</div>
<script>
$
(
document
).
ready
(
function
()
{
})
</script>
</div>
</html>
src/agratek/api/merchant/views/templates/pay_request.pt
View file @
a0efbbb
...
...
@@ -334,20 +334,12 @@
`<div class="col-md-12" id="pack-`
+
cnt
+
`">`
+
`<legend id="judul"></legend>`
+
`<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="text" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" value="" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`">`
+
`</div>`
+
`</div>`
+
`<br></br>`
+
`<div tal:define="fieldItem formItemCart['goods_name']" id="item-
${
fieldItem
.
oid
}
">`
+
`<label for="
${
fieldItem
.
oid
}
" class="control-label col-md-4 required" id="req-
${
fieldItem
.
oid
}
">`
+
`
${
fieldItem
.
title
}
</label>`
+
`<div class="col-md-8">`
+
`<select class="form-control" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`" required="required">`
+
`<option disabled selected value> -- pilih produk -- </option>`
+
`<option tal:repeat="item produks" value="
${
item
[
1
]}
">
${
item
[
1
]}
</option>`
+
`</select>`
+
`<input type="text" class="form-control" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" value="" >`
+
`<p id="error-
${
fieldItem
.
oid
}
" class="help-block" tal:condition="fieldItem.error" tal:repeat="error fieldItem.error.messages()">
${
error
}
</p>`
+
`</div>`
+
`</div>`
+
...
...
@@ -356,7 +348,7 @@
`<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=""
readonly=""
>`
+
`<input type="text" class="form-control" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" value="" >`
+
`<p id="error-
${
fieldItem
.
oid
}
" class="help-block" tal:condition="fieldItem.error" tal:repeat="error fieldItem.error.messages()">
${
error
}
</p>`
+
`</div>`
+
`</div>`
+
...
...
@@ -364,8 +356,33 @@
`<div tal:define="fieldItem formItemCart['goods_amt']" id="item-
${
fieldItem
.
oid
}
">`
+
`<label for="
${
fieldItem
.
oid
}
" class="control-label col-md-4" id="req-
${
fieldItem
.
oid
}
">`
+
`
${
fieldItem
.
title
}
</label>`
+
`<div class="col-md-8" style="width: 150px;">`
+
`<input type="text" class="form-control" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" value="" readonly="">`
+
`<div class="col-md-8" >`
+
`<input type="text" class="form-control" id="
${
fieldItem
.
name
}
-`
+
cnt
+
`" name="
${
fieldItem
.
name
}
-`
+
cnt
+
`" value="" >`
+
`<p id="error-
${
fieldItem
.
oid
}
" class="help-block" tal:condition="fieldItem.error" tal:repeat="error fieldItem.error.messages()">
${
error
}
</p>`
+
`</div>`
+
`</div>`
+
`<br></br>`
+
`<div tal:define="fieldItem formItemCart['img_url']" id="item-
${
fieldItem
.
oid
}
">`
+
`<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="" >`
+
`<p id="error-
${
fieldItem
.
oid
}
" class="help-block" tal:condition="fieldItem.error" tal:repeat="error fieldItem.error.messages()">
${
error
}
</p>`
+
`</div>`
+
`</div>`
+
`<div tal:define="fieldItem formItemCart['qty']" id="item-
${
fieldItem
.
oid
}
">`
+
`<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="" >`
+
`<p id="error-
${
fieldItem
.
oid
}
" class="help-block" tal:condition="fieldItem.error" tal:repeat="error fieldItem.error.messages()">
${
error
}
</p>`
+
`</div>`
+
`</div>`
+
`<div tal:define="fieldItem formItemCart['subtotal']" id="item-
${
fieldItem
.
oid
}
">`
+
`<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="" >`
+
`<p id="error-
${
fieldItem
.
oid
}
" class="help-block" tal:condition="fieldItem.error" tal:repeat="error fieldItem.error.messages()">
${
error
}
</p>`
+
`</div>`
+
`</div>`
+
...
...
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