Commit b2fda85f by Solo Group

auto-push

1 parent 98b0c172
...@@ -23,7 +23,7 @@ from . import BaseView # , save_file_upload ...@@ -23,7 +23,7 @@ from . import BaseView # , save_file_upload
from ..models import (DBSession, flush_row, Partner, PartnerProduk, H2hArInvoiceDet) from ..models import (DBSession, flush_row, Partner, PartnerProduk, H2hArInvoiceDet)
from ..models import (Produk, ProdukKategori) from ..models import (Produk, ProdukKategori)
from ..tools import (btn_next, date_from_str, get_settings, btn_reset, from ..tools import (btn_next, date_from_str, get_settings, btn_reset,
btn_inquiry, btn_advice, btn_payment) btn_inquiry, btn_advice, btn_payment, get_jsonrpc)
from ..tools import log from ..tools import log
...@@ -86,11 +86,11 @@ class VendorClass(object): ...@@ -86,11 +86,11 @@ class VendorClass(object):
elif typ == 'advice': elif typ == 'advice':
self.invoice_det.advice = dict(request=self.request, self.invoice_det.advice = dict(request=self.request,
response=self.response, response=self.response,
result=self.result) result=self.result)
elif typ == 'info': elif typ == 'info':
self.invoice_det.info = dict(request=self.request, self.invoice_det.info = dict(request=self.request,
response=self.response, response=self.response,
result=self.result) result=self.result)
flush_row(self.invoice_det) flush_row(self.invoice_det)
...@@ -155,9 +155,8 @@ def update_harga(p, k, v): ...@@ -155,9 +155,8 @@ def update_harga(p, k, v):
return True return True
def proses_odeo(request): def proses_odeo(data):
settings = get_settings() settings = get_settings()
data = json.loads(request.text)
mid = 'odeo_mid' in settings and settings["odeo_mid"] or None mid = 'odeo_mid' in settings and settings["odeo_mid"] or None
key = 'odeo_key' in settings and settings["odeo_key"] or None key = 'odeo_key' in settings and settings["odeo_key"] or None
partner = Partner.query_kode("ODEO").first() partner = Partner.query_kode("ODEO").first()
...@@ -203,23 +202,65 @@ def proses_odeo(request): ...@@ -203,23 +202,65 @@ def proses_odeo(request):
# proses jika status 1 notify ada isinya tapi belum ada field result # proses jika status 1 notify ada isinya tapi belum ada field result
# todo: create cron torecurring order to other vendor # todo: create cron torecurring order to other vendor
# jika status = -2 proses vendor yang lain # jika status = -2 proses vendor yang lain
# callback_merchant(order)
# customer = Partner.query_id(order.customer_id).first() return order
# if customer and customer.website:
# users = customer.users
# url = customer.website def callback_merchant(order):
# c_data = dict(trx_id=order.cust_trx, # Callback to merchant
# status=status, customer = order.customer
# signature=sha256(users.user_name + users.api_key)) invoice = order.invoice
# with requests.session(): if customer and customer.website:
# requests.post(url, data=c_data) url = customer.website
users = customer.users
status = order.status == 1 and "SUCCESS" \
or order.status > -2 and "FAILED" \
or "PENDING"
key = invoice.cust_inv_no + users.user_name + users.api_key + status
signature = sha256(key.encode()).decode()
data = produk = []
dat = dict(
invoice_no=invoice.cust_inv_no,
signature=signature)
produk.append(dict(
denom=order.produk.kode,
id_pel=order.id_pel,
subtotal=order.amt_sell + order.discount,
discount=order.discount,
total=order.amt_sell,
status=status,
serial_number=order.serial_number
))
dat.update(produk=produk)
data.append(dat)
js = get_jsonrpc(method="notify", params=data)
log.info("Notify: %s %s" %(url, js))
with requests.session():
requests.post(url, data=data, timeout=15)
"""
{
"jsonrpc": "2.0",
"id": 1,
"params": {
"data": [{
"invoice_no": "15678",
"signature":
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
}
]
}
}
"""
@view_config(route_name='api-vendor-notify', renderer='json') @view_config(route_name='api-vendor-notify', renderer='json')
def api_vendor_notify(request): def api_vendor_notify(request):
vendor_nm = request.matchdict['name'] vendor_nm = request.matchdict['name']
if vendor_nm == "odeo": if vendor_nm == "odeo":
proses_odeo(request) data = json.loads(request.text)
order = proses_odeo(data)
@view_config(route_name='api-vendor-test', renderer="string") @view_config(route_name='api-vendor-test', renderer="string")
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!