notify.py
3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from ..vendor import sha256
import logging
from agratek.api.merchant.views.notify_vendor import purchase_notify, update_harga
from opensipkd.base import get_settings
from opensipkd.base.models import Partner, flush_row
from opensipkd.pasar.models import H2hArInvoiceDet
log = logging.getLogger(__name__)
def proses(data):
print('masuk odeo notify >>')
settings = get_settings()
mid = 'odeo_mid' in settings and settings["odeo_mid"] or None
key = 'odeo_key' in settings and settings["odeo_key"] or None
partner = Partner.query_kode("ODEO").first()
status = str(data["status"])
if status == "BROADCAST_NEW_PRICE":
signature = sha256("{mid}{key}{status}".format(
mid=mid, key=key, status=status))
if signature != data["signature"]:
log.info("Signature Vendor Different")
log.info("local %s, vendor %s" % (signature, data["signature"]))
return dict(error="Signature different")
new_price = data["new_prices"]
for k in new_price:
v = new_price[k]
update_harga(partner, k, v)
return dict(success=True)
else:
order_id = str(data["order_id"])
sg = "{order_id}{mid}{key}{status}".format(
order_id=order_id, mid=mid, key=key, status=status)
log.info(sg)
signature = sha256(sg)
if signature != data["signature"]:
log.info("Signature Vendor Different {} {}".format(data["signature"],
signature))
log.info("local %s, vendor %s" % (signature, data["signature"]))
return dict(error="Signature Different")
print('odeo notify partner.id >>')
print(partner.id)
print('odeo notify order_id >>')
print(order_id)
order = H2hArInvoiceDet.query() \
.filter(H2hArInvoiceDet.vendor_id == partner.id,
H2hArInvoiceDet.vend_inv_no == str(order_id)).first()
print('purchase_notify data >>')
print(data)
print('purchase_notify order >>')
print(order)
if order:
print(order.h2h_ar_invoice.cust_inv_no)
if status == "COMPLETED":
order.status = 1
else:
order.status = -3
order.notify = dict(postdata=data)
if "sn" in data and data["sn"]:
order.serial_number = data["sn"]
else:
message = 'message' in data and data["message"] or ""
if message:
loc = message.find("SN: ")
if loc>-1:
sn = message[loc+4:loc+28]
order.serial_number=sn
log.info("Notify Save: POST={}".format(data))
flush_row(order)
# todo: add to customer notify table
# todo: create cron for notify
# proses jika status 1 notify ada isinya tapi belum ada field result
# todo: create cron to recurring order to other vendor
# jika status = -2 proses vendor yang lain
purchase_notify(order)
return order