odeo.py 2.69 KB
import base64
import json

import requests
from opensipkd.base import get_settings

from .vendor import VendorClass


import urllib3
urllib3.disable_warnings()
class Vendor(VendorClass):
    def __init__(self, vendor_produk, bill_no, customer_id=None,
                 cust_trx_id=None, row=None):
        VendorClass.__init__(self, vendor_produk, bill_no, customer_id,
                             cust_trx_id, row)
        settings = get_settings()
        self.mid = 'odeo_mid' in settings and settings['odeo_mid'] or None
        self.key = 'odeo_key' in settings and settings['odeo_key'] or None
        self.url = 'odeo_url' in settings and settings['odeo_url'] or None
        key = ":".join([self.mid, self.key]).encode()
        self.auth = base64.b64encode(key)

    def inquiry(self):
        if not self.v_produk_kd or not self.bill_no:
            return

        params = dict(
            data=dict(
                denom=self.v_produk_kd,
                number=self.bill_no
            )
        )
        self.request = params
        self.save_log("inquiry")
        with requests.session():
            headers = {'Authorization': 'Bearer {key}'.format(key=self.key)}
            data = json.dumps(params)
            resp = requests.post(url=self.url, data=data,
                                 verify=False, headers=headers)
            if resp.ok:
                content = resp.json() #json.dumps(resp.text)
                self.response=content
                self.save_log('inquiry')
                if 'status' in content and content['status']=="NOT_FOUND":
                    content = dict(code=content['data']['error'],
                                   error=content['data']['messsage'])
            else:
                content = dict(code=resp.status_code,
                               error=resp.text)
        return content


    def payment(self):
        if not self.v_produk_kd or not self.bill_no:
            return

        params = dict(
            data=dict(
                denom=self.v_produk_kd,
                number=self.bill_no
            )
        )
        self.request = params
        self.save_log("payment")
        with requests.session():
            headers = {'Authorization': 'Bearer {key}'.format(key=self.key)}
            data = json.dumps(params)
            resp = requests.post(url=self.url, data=data,
                                 verify=False, headers=headers)
            if resp.ok:
                content = resp.json() #json.dumps(resp.text)
                self.response=content
                self.save_log('payment')
            else:
                content = dict(code=resp.status_code,
                                   message=resp.text)
        return content