Commit 69ccc330 by yasir

update fitur payment request

1 parent a33e5ae3
...@@ -86,4 +86,9 @@ odeo-postpaid-inquiry,/api/odeo/postpaid/inquiry,API TEST ODEO INQUIRY POSTPAUD, ...@@ -86,4 +86,9 @@ odeo-postpaid-inquiry,/api/odeo/postpaid/inquiry,API TEST ODEO INQUIRY POSTPAUD,
test-purchase,/api/test/prepaid/purchase,API TEST PURCHASE,1,0 test-purchase,/api/test/prepaid/purchase,API TEST PURCHASE,1,0
test-prepaid-inquiry-pln,/api/test/prepaid/pln/inquiry,API TEST PLN PRE INQUIRY,1,0 test-prepaid-inquiry-pln,/api/test/prepaid/pln/inquiry,API TEST PLN PRE INQUIRY,1,0
test-postpaid-inquiry,/api/test/postpaid/inquiry,API TEST INQUIRY POSTPAUD,1,0 test-postpaid-inquiry,/api/test/postpaid/inquiry,API TEST INQUIRY POSTPAUD,1,0
api-vsi,/api/vsi,'API VSI,1,0
\ No newline at end of file \ No newline at end of file
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-request,/pay_request,Pembayaran,1,0
pay-request-resp,/pay_request_resp,Respon Request Pembayaran,1,0
\ No newline at end of file \ No newline at end of file
from opensipkd.base.views import BaseView
from opensipkd.pasar.models.produk import PartnerPay
from pyramid.view import view_config
class view_pay(BaseView):
@view_config(route_name = 'pay-info', renderer = 'templates/pay_info.pt')#permission = 'pay-form',
def the_form(self):
request = self.req
session = self.ses
url_dict = request.matchdict
meth = url_dict['meth']
pay_token = url_dict['pay_token']
row = PartnerPay.query().filter(PartnerPay.token_pay_req == pay_token).first()
if meth == 'VA':
subject = 'Nomor VA :'
content = row.card_no
elif meth == 'CC':
content = row.card_no
elif meth == 'CVS':
subject = ''
content = ''
elif meth == 'EM':
subject = ''
content = ''
elif meth == 'loan':
subject = ''
content = ''
elif meth == 'CP':
subject = ''
content = ''
return dict(
subject = subject,
content = content
)
\ No newline at end of file \ No newline at end of file
import random
import string
import colander
import logging
from opensipkd.pasar.models.produk import PartnerPay
from opensipkd.base.models import User, DBSession, Partner, flush_row
from pyramid_rpc.jsonrpc import jsonrpc_method
from opensipkd.base.views import BaseView
from opensipkd.base.tools.api import (auth_from_rpc,
JsonRpcProdukNotFoundError, JsonRpcCustomerNotFoundError,
JsonRpcParameterNotFound)
from pyramid.view import view_config
from .api_payment import set_register_values
from opensipkd.base.views import BaseView
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 = {}
for key in form_request_data:
if key[-5:] == '_cust':
customer_req[key.replace('_cust', '')] = form_request_data[key]
elif key[-8:] == '_deliver':
deliver_to[key.replace('_deliver', '')] = form_request_data[key]
elif key[-8:] == '_server':
server[key.replace('_server', '')] = form_request_data[key]
else:
decoded_dict[key] = form_request_data[key]
produks = parsed_produks
decoded_dict['customer'] = customer_req
decoded_dict['deliver_to'] = deliver_to
decoded_dict['server'] = server
decoded_dict['produk'] = produks
return decoded_dict
def randomString(stringLength):
letters = string.ascii_letters
return ''.join(random.choice(letters) for i in range(stringLength))
def save_partner_pay_request(values, row=None):
if not row:
row = PartnerPay()
row.from_dict(values)
random_token = randomString(20)
row.token_pay_req = random_token
flush_row(row)
return row
def added_register_values(current_register_values, dat):
added_dict = current_register_values
added_dict['biller_name'] = dat['biller']['name']
added_dict['biller_phone'] = dat['biller']['phone']
added_dict['biller_email'] = dat['biller']['email']
added_dict['biller_address'] = dat['biller']['address']
added_dict['biller_city'] = dat['biller']['city']
added_dict['biller_state'] = dat['biller']['state']
added_dict['biller_post_code'] = dat['biller']['post_code']
added_dict['biller_country'] = dat['biller']['country']
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()
i = 0
print('masuk sini loh >>>>>>>>>>>>>>>>>>>>>>>>>>>')
# if not data:
# raise JsonRpcParameterNotFound
is_list = type(data) == list
data = is_list and data or [data]
customer = Partner.query_user(user).first()
if not customer:
raise JsonRpcCustomerNotFoundError
r_data = {}
log.info("%s Payment Attempt Request: %s" % (customer.kode, data))
for dat in data:
if "invoice_no" not in dat or \
'amount' not in dat or not dat['amount']:
r_data["status"] = "FAILED"
r_data["message"] = "Parameter tidak lengkap"
r_data['code'] = -1
else:
inv_no = dat["invoice_no"]
row = PartnerPay.query().filter_by(cust_inv_no=inv_no).first()
if row and row.status > 0:
raise JsonRpcInvoiceFoundError()
dat['produk'] = dat['cart']
values = set_register_values(dat, customer)
values = added_register_values(values, dat)
print('isi dat >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
print(dat)
print('isi values >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
print(values)
credit_card = "credit_card" in dat and dat["credit_card"] or {}
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)
# dat.update(ar_invoice.inquiry["result"])
# if "form" in result:
# dat.update(dict(form=result["form"]))
# # request.environ["application"]="text/html"
# # request.response()
# # return request.response
r_data['token'] = ar_invoice.token_pay_req
# data = is_list and r_data or r_data[0]
log.info("%s Payment Request Response: %s " % (customer.kode, r_data))
return r_data
class view_pay(BaseView):
@view_config(route_name = 'pay-request-resp', permission = 'pay-request-resp', renderer = 'templates/pay_request_resp.pt')#permission = 'pay-form',
def the_form(self):
request = self.req
session = self.ses
url_dict = request.matchdict
post_data = request.POST
items = dict(post_data)
if post_data:
produks = []
for key in items:
print(key)
if key[:10] == 'goods_name':
uniq = key.split('-')
uniq = uniq[1]
produk = (items[key], items['goods_detail-' + uniq], "{:n}".format(int(items['goods_amt-' + uniq])), items['img_url-' + uniq])
produks.append(produk)
json_dict_request = encode_to_json(items, produks)
return {}
<html metal:use-macro="load: opensipkd.base:views/templates/base3.pt"> <html metal:use-macro="load: opensipkd.base:views/templates/base3.pt">
<ul metal:fill-slot="navs"> <ul metal:fill-slot="navs">
<li> <li>
<a href="${request._host}/pay_request">
<i class="fa fa-lg fa-fw fa-home"></i>
<span class="menu-item-parent">Request Pembayaran</span>
</a>
</li>
<li>
<a href="${request._host}/api/kategori/list"> <a href="${request._host}/api/kategori/list">
<i class="fa fa-lg fa-fw fa-home"></i> <i class="fa fa-lg fa-fw fa-home"></i>
<span class="menu-item-parent">List Kategori</span> <span class="menu-item-parent">List Kategori</span>
......
<html metal:use-macro="load: base.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">
<!-- Proses Template Form -->
<form method="post"
accept-charset="utf-8"
id="deform"
class="form-horizontal"
enctype="multipart/form-data"
style="background-color:white;"
autocomplete="off">
<!-- Tampilan untuk general error -->
<!-- END Tampilan untuk general error -->
<div class="col-md-12">
<!-- 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> -->
</div>
</div>
<div>
</div>
</form>
<!-- End Template Form -->
<!-- </div> -->
</div>
</div>
<script>
$(document).ready(function() {
})
</script>
</div>
</html>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!