vsi.py 1.6 KB
import base64
import hashlib
import json
from datetime import datetime

import requests
import xmltodict
from opensipkd.base import get_settings
from opensipkd.pasar.models import Partner, PartnerProduk, Produk
from pyramid_rpc.jsonrpc import JsonRpcError

from .vendor import VendorClass


class Vendor(VendorClass):
    def __init__(self, produk_kd, cid, trx_id, vendor_id):
        """
        :param produk_kd:
            merupakan kode produk versi vendor

        :param trx_id:
            kode unik transaksi
        :param cid:
            merupakan customer id seperti MSN dan atu id pelanggaan
        """
        VendorClass.__init__(self, cid, vendor_id)
        settings = self.settings
        self.mid = 'vsi_mid' in settings and settings['vsi_mid'] or None
        self.key = 'vsi_key' in settings and settings['vsi_key'] or None
        self.url = 'vsi_url' in settings and settings['vsi_url'] or None
        self.trx_id = trx_id
        self.produk_kd = produk_kd

    def get_hc(self, tanggal):
        hash_string = "".join([self.mid, tanggal, self.key])
        self.auth = hashlib.sha256(hash_string.encode()).hexdigest()
        return self.auth

    def get_params(self, cmd, msn=None, idpel=None, modul=None):
        tanggal = datetime.now().strftime('YYYYMMDD')
        params = dict(
            cid=self.mid,
            dt=tanggal,
            hc=self.get_hc(tanggal),
            modul=modul,
            command=cmd,
            resp='XML',
            trxid=self.trx_id,
        )
        if msn:
            params['msn']=msn

        if idpel:
            params['idpel'] = idpel

        return params