Commit 6203408b by yasir

update

1 parent d01d060b
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'
}
......@@ -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']
......
......@@ -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
......@@ -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"
......
......@@ -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>
......
<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>
......
......@@ -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>`+
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!