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 fbe02509
authored
Sep 23, 2019
by
Solo Group
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
add notify test
1 parent
402b6945
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
215 deletions
src/agratek/api/merchant/views/api_merchant.py
src/agratek/api/merchant/views/merchant_payment.py
src/agratek/api/merchant/views/notify_vendor.py
src/agratek/api/merchant/views/vendor_trx.py
src/agratek/api/merchant/views/api_merchant.py
View file @
fbe0250
...
...
@@ -12,6 +12,22 @@ from ..tools import JsonRpcInvoiceFoundError, JsonRpcError
log
=
logging
.
getLogger
(
__name__
)
def
save_partner_log
(
values
,
vendor_produk
):
partner_log
=
PartnerLog
()
partner_log
.
vendor_id
=
vendor_produk
.
partner_id
partner_log
.
produk_id
=
vendor_produk
.
produk
.
id
partner_log
.
customer_id
=
values
[
"customer_id"
]
partner_log
.
id_pel
=
values
[
"id_pel"
]
flush_row
(
partner_log
)
return
partner_log
def
qry_vendor_produk
():
return
PartnerProduk
.
query
()
\
.
join
(
Partner
,
Partner
.
id
==
PartnerProduk
.
partner_id
)
\
.
join
(
Produk
,
Produk
.
id
==
PartnerProduk
.
produk_id
)
def
build_request
(
typ
,
vendor_produk
,
partner_log
=
None
,
**
kwargs
):
# produk_id = values['produk_id']
# vendor_id = values['vendor_id']
...
...
@@ -50,22 +66,6 @@ def build_request(typ, vendor_produk, partner_log=None, **kwargs):
return
result
def
save_partner_log
(
values
,
vendor_produk
):
partner_log
=
PartnerLog
()
partner_log
.
vendor_id
=
vendor_produk
.
partner_id
partner_log
.
produk_id
=
vendor_produk
.
produk
.
id
partner_log
.
customer_id
=
values
[
"customer_id"
]
partner_log
.
id_pel
=
values
[
"id_pel"
]
flush_row
(
partner_log
)
return
partner_log
def
qry_vendor_produk
():
return
PartnerProduk
.
query
()
\
.
join
(
Partner
,
Partner
.
id
==
PartnerProduk
.
partner_id
)
\
.
join
(
Produk
,
Produk
.
id
==
PartnerProduk
.
produk_id
)
def
get_vendor_produk
(
produk_kd
,
vendor_kd
=
None
,
harga
=
None
):
"""
Fungsi ini digunakan untuk mencari vendor yang paling murah
...
...
@@ -96,7 +96,7 @@ def inquiry(request, data, **kwargs):
denom: string,
id_pel:string
}
:param token:
:param token:
(jika merchant wajib menggunakan token)
user_token
:return:
{
...
...
@@ -168,30 +168,31 @@ def purchase(request, data, **kwargs):
Digunakan untuk mendapatkan daftar produk
:param request:
:param data:
{
[
{
denom: string,
id_pel:string
inv_no: string optional
}
:param token:
}
]
:param token:
(jika hanya menggunakan token)
user_token
:return:
{
product_nm:string,
[{
denom: string,
id_pel:string
inv_no: string
optional
deno
m:string,
inv_no: string
product_n
m:string,
harga:integer,
admin:integer,
discount:integer,
total:integer,
status:success/pending/failed
}]
"""
user
=
auth_from_rpc
(
request
)
i
=
0
if
not
data
:
raise
JsonRpcParameterNotFound
is_list
=
type
(
data
)
==
list
data
=
is_list
and
data
or
[
data
]
customer
=
Partner
.
query_user
(
user
)
.
first
()
...
...
@@ -238,15 +239,6 @@ def purchase(request, data, **kwargs):
result
=
build_purchase
(
vendor_produk
,
ar_invoice_det
)
total
=
"total"
in
result
and
result
[
"total"
]
or
0
prod
.
update
(
result
[
"f_result"
])
# # Perhitungan Total
# # Jika harga jual lebih besar dari harga beli jual dipakai harga jual
# # jika harga lebih kecil dari harga beli maka harga beli ditambah admin_fee
# if total:
# if vendor_produk.produk.harga < total:
# total += vendor_produk.produk.harga
# elif vendor_produk.produk.harga > total:
# total = vendor_produk.produk.harga
# prod.update(dict(total=total))
r_prod
.
append
(
prod
)
ar_invoice
.
payment
[
"response"
]
=
r_prod
dat
[
"produk"
]
=
r_prod
...
...
@@ -455,165 +447,3 @@ def cancel_rpc(request, data):
data
=
is_list
and
r_data
or
r_data
[
0
]
return
data
#
# @jsonrpc_method(method='payment', endpoint='api-merchant')
# def payment(request, token, data):
# """
# Digunakan untuk mendapatkan daftar produk
# :param request:
# :param data:
# {
# denom: string,
# id_pel:string
# inv_no: string optional
# }
# :param token:
# user_token
# :return:
# {
# product_nm:string,
#
# denom: string,
# id_pel:string
# inv_no: string optional
# denom:string,
# harga:integer,
# admin:integer,
# discount:integer,
# total:integer,
# status:success/pending/failed 00/01/02
# """
# user = auth_from_rpc(request, token)
# i = 0
# dat = data is list and data or [data]
# costumer = Partner.query_user(user)
# for dat in data:
# produk_kd = 'denom' in dat and dat['denom'] or None
# if not produk_kd :
# raise JsonRpcProdukNotFound(message="Produk harus diisi")
#
# produk = Produk.query_kode(produk_kd).first()
# if not produk:
# raise JsonRpcProdukNotFound(message="Produk %s tidak ditemukan" % produk_kd)
#
# # todo: search product lowest price
# vend_kd = 'ODEO'
#
# qry = PartnerProduk.query() \
# .filter(Partner.kode == vend_kd) \
# .filter(Produk.kode == produk_kd).first()
#
# r_data = dat
# r_data.update(dict(data=result))
# data[i] = r_data
# i += 1
# return data
#
#
# @jsonrpc_method(method='get_product', endpoint='api-merchant')
# def get_product(request, token, data ):
# """
# Digunakan untuk mendapatkan daftar produk
# :param request:
# :param data:
# {
# product_kd: string, //optional
# page:integer, //optional
# length:integer, //optional
# category:string, //optional
# search:string //optional
# }
# :return: [
# {
# product_kd:string,
# product_nm:string,
# harga:integer
# }
#
# ]
# """
# auth_from_rpc(request)
# i =0
# qry = DepartemenProduk.query() \
# .filter(Departemen.kode == '100000')
# for dat in data:
# page = 'page' in dat and dat['page'] or 1
# length = 'length' in dat and dat['length'] or 5
# product_kd = 'product_kd' in dat and dat['product_kd'] or None
# search = 'search' in dat and dat['search'] or None
# category = 'category' in dat and dat['category'] or None
# if product_kd :
# rst = qry.join(Produk).filter(Produk.kode == product_kd)
# elif search:
# rst = qry.join(Produk).filter(Produk.nama.ilike("".join(['%',search,'%' ])))
# elif category:
# rst = qry.join(Produk).join(ProdukKategori) \
# .filter(ProdukKategori.nama.ilike("".join(['%', category, '%'])))
# else:
# rst = qry
#
# rst = rst.limit(length).offset((page-1)*length)
# result = []
# for row in rst.all():
# result.append(dict(product_kd=row.produk.kode,
# produk_nm=row.produk.nama,
# harga=row.harga ))
# r_data = dat
# r_data.update(dict(data=result))
# data[i]=r_data
# i += 1
# return data
#
# @jsonrpc_method(method='get_biaya', endpoint='api-merchant')
# def get_biaya(request, data, token=None):
# """
# Digunakan untuk mencari methode pembayaran dan biaya layanan
# :param request:
# :param data:
# {
# biaya_kd: string,
# harga:integer,
# cname:string,
# cid:string,
# cvv:string, optional
# }
# :param token:
# user_token
# :return:
# {
# product_kd:string,
# product_nm:string,
# harga:integer
# }
# """
#
# user = auth_from_rpc(request, token)
# i =0
# qry = DepartemenProduk.query() \
# .filter(Departemen.kode == '100000')
# for dat in data:
# product_kd = 'biaya_kd' in dat and dat['biaya_kd'] or None
# cid = 'cid' in dat and dat['cid'] or None
# if not product_kd :
# raise JsonRpcParameterNotFound(message='Paramter product_kd wajib di isi')
#
# rst = qry.join(Produk).filter(Produk.kode == product_kd)
# result = []
# for row in rst.all():
# if row.is_cid and not cid:
# raise JsonRpcParameterNotFound(message="Parameter cid wajib di isi")
# if row.produk.fixed:
# harga = row.harga
# else:
# harga = dat['harga']*row.harga
#
# result.append(dict(biaya_kd=row.produk.kode,
# produk_nm=row.produk.nama,
# harga=harga))
#
# r_data = dat
# r_data.update(dict(data=result))
# data[i]=r_data
# i += 1
# return data
src/agratek/api/merchant/views/merchant_payment.py
View file @
fbe0250
import
json
import
logging
import
socket
from
datetime
import
datetime
,
timedelta
import
colander
from
colander
import
string_types
from
deform
import
widget
,
Form
,
ValidationFailure
,
Button
from
opensipkd.base
import
get_host
from
opensipkd.base.models
import
Partner
,
flush_row
from
opensipkd.base.models
import
Partner
from
opensipkd.base.views
import
BaseView
from
opensipkd.pasar.models
import
Produk
,
PartnerLog
,
PartnerProduk
,
H2hArInvoice
,
H2hArInvoiceDet
from
opensipkd.pasar.models
import
Produk
,
PartnerLog
from
opensipkd.pasar.models.views
import
(
deferred_produk
,
deferred_vendor
,
deferred_customer
)
from
pyramid.encode
import
url_quote
,
urlencode
from
pyramid.httpexceptions
import
HTTPFound
from
pyramid.url
import
QUERY_SAFE
from
pyramid.view
import
view_config
from
requests
import
Response
from
..tools
import
get_settings
,
btn_purchase
,
ymd
,
hms
,
json_rpc_header
,
get_random_number
,
get_qs
from
..tools
import
btn_inquiry
,
btn_reset
,
btn_payment
,
btn_advice
,
btn_next
,
btn_register
,
btn_cancel
from
.api_merchant
import
build_request
,
qry_vendor_produk
,
save_partner_log
import
logging
from
.api_payment
import
register
from
..tools
import
btn_payment
,
btn_cancel
from
..tools
import
json_rpc_header
,
get_random_number
log
=
logging
.
getLogger
(
__name__
)
...
...
src/agratek/api/merchant/views/notify_vendor.py
View file @
fbe0250
...
...
@@ -99,6 +99,7 @@ def payment_notify(order):
# data.update(order.notify["result"])
# print('>>>', json.dumps(data, indent=4, sort_keys=True))
js
=
get_jsonrpc
(
method
=
"notify"
,
params
=
dict
(
data
=
data
))
log
.
info
(
"Notify:
%
s
%
s"
%
(
url
,
js
))
try
:
# pass
...
...
@@ -117,6 +118,10 @@ def api_vendor_notify(request):
except
:
data
=
request
.
POST
and
dict
(
request
.
POST
.
items
())
or
dict
(
request
.
GET
.
items
())
if
vendor_nm
==
"test"
:
log
.
info
(
"TEST NOTIFY {}"
.
format
(
data
))
return
modul
=
'.notify'
pckgs
=
'agratek.api.merchant.views.{}'
.
format
(
vendor_nm
)
moduls
=
import_module
(
modul
,
pckgs
)
...
...
src/agratek/api/merchant/views/vendor_trx.py
View file @
fbe0250
import
json
import
logging
import
colander
from
deform
import
widget
,
Form
,
ValidationFailure
from
opensipkd.base.models
import
Partner
,
flush_row
from
opensipkd.base.views
import
BaseView
from
opensipkd.pasar.models
import
Produk
,
PartnerLog
,
PartnerProduk
,
H2hArInvoice
,
H2hArInvoiceDet
from
opensipkd.pasar.models
import
Produk
,
PartnerLog
,
H2hArInvoice
,
H2hArInvoiceDet
from
opensipkd.pasar.models.views
import
(
deferred_produk
,
deferred_vendor
,
deferred_customer
)
from
paste.httpexceptions
import
HTTPFound
from
pyramid.view
import
view_config
from
..tools
import
get_settings
,
btn_purchase
from
..tools
import
btn_inquiry
,
btn_reset
,
btn_payment
,
btn_advice
,
btn_next
from
.api_merchant
import
build_request
,
qry_vendor_produk
,
save_partner_log
import
logging
from
..tools
import
btn_inquiry
,
btn_payment
,
btn_advice
,
btn_next
from
..tools
import
get_settings
,
btn_purchase
log
=
logging
.
getLogger
(
__name__
)
...
...
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