Commit 3dd45e9b by yasir

update

1 parent 14f382b9
......@@ -78,12 +78,12 @@ def get_str_bulan(only_bulan):
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'
'MANDIRI': 'mandiri.png',
'BNI': 'bni.svg',
'BRI': 'bri.png',
'DANAMON': 'danamon.png',
'MAYBANK': 'maybank.png',
'PERMATA': 'permata.png',
'HANABANK': 'hanabank.png',
'CIMB': 'cimb.png'
}
......@@ -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,
......
......@@ -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>
......
......@@ -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>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!