diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-05-21 15:07:20 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-05-21 15:07:20 +0700 |
| commit | 4eff6c52574cd5664c65d9f496506c5ae5bfe9c5 (patch) | |
| tree | e9322f66ecd229b27f61b0c795651045bc075a6a /fixco_custom/models/webhook_ginee.py | |
| parent | 6c6940052eb8d480fc6719819c06a964dc0827dc (diff) | |
detail order logic
Diffstat (limited to 'fixco_custom/models/webhook_ginee.py')
| -rw-r--r-- | fixco_custom/models/webhook_ginee.py | 92 |
1 files changed, 13 insertions, 79 deletions
diff --git a/fixco_custom/models/webhook_ginee.py b/fixco_custom/models/webhook_ginee.py index 1ee814f..e1fb608 100644 --- a/fixco_custom/models/webhook_ginee.py +++ b/fixco_custom/models/webhook_ginee.py @@ -7,10 +7,6 @@ import hmac import base64 from hashlib import sha256 -Request_URI = '/openapi/order/v1/batch-get' -ACCESS_KEY = '24bb6a1ec618ec6a' -SECRET_KEY = '32e4a78ad05ee230' - class WebhookGinee(models.Model): _name = "webhook.ginee" _inherit = ['mail.thread'] @@ -23,85 +19,23 @@ class WebhookGinee(models.Model): ('not_found', 'Record not found') ], 'Execute Status') - def get_order_id(self): - try: - if self.json_ginee: - json_data = json.loads(self.json_ginee) - order_id = json_data.get('payload', {}).get('orderId') - if not order_id: - raise UserError(_("Order ID not found in JSON data")) - return order_id - raise UserError(_("No JSON data available")) - except json.JSONDecodeError: - raise UserError(_("Invalid JSON format in json_ginee field")) - except Exception as e: - raise UserError(_("Error extracting order ID: %s") % str(e)) + # def process_queue_item(self, limit=100, max_exec_time=30): + # domain = [('execute_status', '=', False)] + # records = self.search(domain, order='create_date asc', limit=limit) + # start_time = time.time() + # for rec in records: + # end_time = time.time() + # elapsed_time = end_time - start_time + # if elapsed_time > max_exec_time: + # break + # rec.execute_queue() - def process_queue_item(self, limit=100, max_exec_time=30): + def process_queue_item(self, limit=100): domain = [('execute_status', '=', False)] records = self.search(domain, order='create_date asc', limit=limit) - start_time = time.time() for rec in records: - end_time = time.time() - elapsed_time = end_time - start_time - if elapsed_time > max_exec_time: - break rec.execute_queue() def execute_queue(self): - try: - # Get order ID from json_ginee - order_id = self.get_order_id() - - authorization = self.sign_request() - headers = { - 'Content-Type': 'application/json', - 'X-Advai-Country': 'ID', - 'Authorization': authorization - } - - payload = { - "orderIds": [order_id] - } - - # URL endpoint Ginee - url = "https://api.ginee.com/openapi/order/v1/batch-get" - - # Melakukan POST request - response = requests.post( - url, - headers=headers, - data=json.dumps(payload) - ) - - # Cek status response - if response.status_code == 200: - data = response.json() - detail_order = self.env['detail.order'].create({ - 'detail_order': json.dumps(data), - 'execute_status': 'success' - }) - self.execute_status = 'done' - else: - self.write({ - 'execute_status': 'failed', - 'json_ginee': json.dumps({ - 'error': f"Request failed with status code {response.status_code}", - 'response': response.text - }) - }) - - except Exception as e: - self.write({ - 'execute_status': 'failed', - 'json_ginee': json.dumps({ - 'error': str(e) - }) - }) - - def sign_request(self): - signData = '$'.join(['POST', Request_URI]) + '$' - authorization = ACCESS_KEY + ':' + base64.b64encode( - hmac.new(SECRET_KEY.encode('utf-8'), signData.encode('utf-8'), digestmod=sha256).digest() - ).decode('ascii') - return authorization
\ No newline at end of file + detail_order = self.env['detail.order'].create({'json_ginee': self.json_ginee}) + self.execute_status = 'success' |
