odeo.py 2.64 KB
import base64
import json

import requests
from opensipkd.base import get_settings
from opensipkd.base.models import Partner
from opensipkd.pasar.models import PartnerProduk, Produk, PartnerLog, flush_row
from pyramid.view import view_config
from pyramid_rpc.jsonrpc import JsonRpcError

from .vendor import VendorClass



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
            )
        )
        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:
                print(resp.text)
                content = resp.json() #json.dumps(resp.text)
            else:
                raise JsonRpcError(code=resp.status_code,
                                   message=resp.text)
            return content
        return


    def payment(self):
        # request = Request('https://api.odeo.co.id/v1/affiliate/prepaid/purchase', data=values, headers=headers)
        #
        # response_body = urlopen(request).read()
        # print
        # response_body
        #
        """
        Digunakan untuk melakukan inquory ke server odeoo

        :return:
        """

        if not self.product_kd or not self.cid:
            return

        params = dict(
            data=dict(
                denom=self.product_kd,
                number=self.cid
            )
        )
        with requests.session():
            headers = {'Authorization': 'Bearer {key}'.format(key=self.key)}
            resp = requests.post(url=self.url, data=json.dump(params, None),
                                 verify=False, headers=headers)
            content = resp.json()
            if resp != "200":
                raise JsonRpcError(data=content)
            return content
        return