dummy.py 12.4 KB
import json
import datetime
from opensipkd.pasar.models import PartnerProduk, H2hArInvoiceDet
from agratek.api.merchant.views.notify_vendor import purchase_notify
from opensipkd.base import get_settings
import hashlib

import requests

class Lolable(object):
    EPULSA_CLUB = ['XL', 'TSEL', 'ISAT', 'TRI', 'AX', 'SF']
    TELKOM_CLUB = ['TELKOMFLEXI', 'TELKOMSPEEDY', 'TELKOMPSTN', 'TELKOMSELHALO', 'INDIHOME']

    def __init__(self, vendor_produk, inst_class):

        self.status_code = 200

        self.text = {}

        self.inst_class = inst_class

        if type(inst_class).__name__ == 'PartnerLog':
            self.pl_idpel = self.inst_class.inquiry['request']['number']

        elif type(inst_class).__name__ == 'H2hArInvoiceDet':
            self.pl_idpel = self.inst_class.id_pel


        self.vendor_produk = vendor_produk

        self.kategori = vendor_produk.produk.kategori.kode

        self.order = inst_class


    def get_price_epulsa(self, denom):
        price_str = denom
        for member in self.EPULSA_CLUB:
            price_str = price_str.replace(member, '')

        return int(price_str)

        # notify_json
        
    def set_agratek_request(self, agratek_request):
        dict_request = json.loads(agratek_request)
        self.agratek_request = dict_request
        self.agratek_request_data = dict_request['params']['data'][0]


    def stupeed(self, merch_request):
        merch_request_dict = json.loads(merch_request)

        denom = merch_request_dict['data']['denom']
        dumb_dict = {}
        dumb_dict['status'] = 'SUCCESS'
        dumb_dict['message'] = ''

        dumb_data = {}
        dumb_data['order_id'] = 1
        dumb_data['message'] = ''
        
        if self.kategori == 'e-pulsa':
            dumb_data['price'] = (self.get_price_epulsa(denom) * 1000) 
        else:
            if denom[:3] == 'PLN' and denom != "PLNPASCA":
                bayar = denom.replace('PLN', '')
                bayar = int(bayar) * 1000

                dumb_data['price'] = bayar
            else:
                dumb_data['price'] = 150000

            dumb_data['name'] = 'Suriyah Sidkisari'
            dumb_data['serial_number'] = '09090909'
            dumb_data['status'] = 'SUCCESS'
            dumb_data.update(merch_request_dict['data'])


        dumb_dict['data'] = dumb_data

        self.text = json.dumps(dumb_dict)

        # self.kirim_notify()

        return self
# {
#   "status": "SUCCESS",
#   "data": {
#     "subscriber_id": "XXX",
#     "subscriber_name": "XXX",
#     "ref_id": "XXX",
#     "tariff": "R1/1300VA",
#     "inquiries": [
#       {
#         "period": "2016-08",
#         "base_price": 300000,
#         "fine": 0,
#         "admin_fee": 2500
#       }
#     ],
#     "subtotal": 302500,
#     "discount": 900,
#     "total": 301600
#   },
#   "message": ""
# }
    def inquat(self, merch_request):
        merch_request_dict = json.loads(merch_request)
        print('inquat merch_request_dict >>')
        print(merch_request_dict)

        denom = merch_request_dict['denom']

        dumb_dict = {}
        dumb_dict['status'] = 'SUCCESS'
        dumb_dict['message'] = ''

        dumb_data = {}
        # dumb_data['subscriber_id'] = self.inst_class.id_pel
        dumb_data['subscriber_id'] = self.pl_idpel
        dumb_data['subscriber_name'] = 'Suriyah Sidkisari'
        dumb_data['ref_id'] = 1

        dumb_inquiries_arr = []
        dumb_inquiries_data = {}

        today = datetime.datetime.today()
        datem = datetime.datetime(today.year, today.month, 1)
        dumb_inquiries_data['period'] = str(today.year) + '-' + str(today.month)

        print('amt_sell >>')
        print(self.inst_class.amt_sell)
        # "tariff": "R1/1300VA",
        dumb_inquiries_data['base_price'] = 0
        dumb_inquiries_data['admin_fee'] = 0
        if denom == "PLNPASCA":
            dumb_inquiries_data['tariff'] = 'R1/1300VA'
            dumb_inquiries_data['power'] = 2200
            dumb_inquiries_data['base_price'] = 100000
            dumb_inquiries_data['fine'] = 0
            dumb_inquiries_data['admin_fee'] = self.inst_class.produk.harga

            dumb_inquiries_arr.append(dumb_inquiries_data)

            dumb_data['subtotal'] = dumb_inquiries_data['base_price'] + dumb_inquiries_data['admin_fee']
            dumb_data['discount'] = 0
            dumb_data['total'] = dumb_data['subtotal']
        elif denom[:3] == 'PLN' and denom != "PLNPASCA":
            # {
            #   "status": "SUCCESS",
            #   "data": {
            #     "number": "XXX",
            #     "subscriber_id": "XXX",
            #     "name": "XXX",
            #     "tariff": "XXX",
            #     "power": "XXX"
            #   },
            #   "message": ""
            # }
            bayar = denom.replace('PLN', '')
            bayar = int(bayar) * 1000
            dumb_data['number'] = '1919191919'
            dumb_data['subscriber_id'] = merch_request_dict['number']
            dumb_data['name'] = 'Suriyah Sidkisari'
            dumb_data['tariff'] = bayar
            dumb_data['power'] = '1300VA'
            dumb_data['discount'] = 0
        elif denom[:2] == 'FN':
            # {
            #   "status": "SUCCESS",
            #   "data": {
            #     "subscriber_id": "XXX",
            #     "subscriber_name": "XXX",
            #     "ref_id": "XXX",
            #     "inquiries": {
            #       "installment": "XXX",
            #       "due_date": "XXX",
            #       "platform": "XXX",
            #       "base_price": 300000,
            #       "coll_fee": 0,
            #       "fine": 75000,
            #       "admin": 2000
            #     },
            #     "subtotal": 377000,
            #     "discount": 900,
            #     "total": 376100
            #   },
            #   "message": ""
            # }
            dumb_data['subscriber_id'] = merch_request_dict['number']
            dumb_data['subscriber_name'] = 'Suriyah Sidkisari'
            dumb_data['ref_id'] = '0909'

            del dumb_inquiries_data['period']
            dumb_inquiries_data['installment'] = ""
            dumb_inquiries_data['due_date'] = ""
            dumb_inquiries_data['platform'] = ""
            dumb_inquiries_data['base_price'] = 250000
            dumb_inquiries_data['coll_fee'] = 0
            dumb_inquiries_data['fine'] = 25000
            dumb_inquiries_data['admin'] = 2000

            dumb_data['inquiries'] = dumb_inquiries_data

            dumb_data['subtotal'] = 277000
            dumb_data['discount'] = 0
            dumb_data['total'] = 277000     

        elif denom == 'PGN':
            # {
            #   "status": "SUCCESS",
            #   "data": {
            #     "subscriber_id": "XXX",
            #     "subscriber_name": "XXX",
            #     "ref_id": "XXX",
            #     "inquiries": {
            #       "period": "XXX",
            #       "meter_changes": "XXX",
            #       "usages": "XXX",
            #       "base_price": 300000,
            #       "admin_fee": 2500
            #     },
            #     "subtotal": 302500,
            #     "discount": 900,
            #     "total": 301600
            #   },
            #   "message": ""
            # }
            dumb_data['subscriber_id'] = merch_request_dict['number']
            dumb_data['subscriber_name'] = 'Suriyah Sidkisari'
            dumb_data['ref_id'] = '0909'

            dumb_inquiries_data['base_price'] = 800000
            dumb_inquiries_data['admin_fee'] = 2500
            dumb_inquiries_data['usages'] = "2000"
            dumb_inquiries_data['meter_changes'] = "100"
            dumb_data['inquiries'] = dumb_inquiries_data
            # dumb_inquiries_arr.append(dumb_inquiries_data)

            dumb_data['subtotal'] = 802500
            dumb_data['discount'] = 0
            dumb_data['total'] = 802500        
        elif denom in self.TELKOM_CLUB:
            # {
            #   "status": "SUCCESS",
            #   "data": {
            #     "subscriber_id": "XXX",
            #     "subscriber_name": "XXX",
            #     "ref_id": "XXX",
            #     "inquiries": {
            #       "period": "XXX",
            #       "base_price": 300000,
            #       "admin_fee": 1500
            #     },
            #     "subtotal": 301500,
            #     "discount": 900,
            #     "total": 300600
            #   },
            #   "message": ""
            # }
            dumb_data['subscriber_id'] = merch_request_dict['number']
            dumb_data['subscriber_name'] = 'Suriyah Sidkisari'
            dumb_data['ref_id'] = '0909'

            dumb_inquiries_data['base_price'] = 250000
            dumb_inquiries_data['admin_fee'] = 1500
            dumb_data['inquiries'] = dumb_inquiries_data

            dumb_data['subtotal'] = 251500
            dumb_data['discount'] = 0
            dumb_data['total'] = 251500
        elif denom[:3] == 'PAM':
# {
#   "status": "SUCCESS",
#   "data": {
#     "subscriber_id": "XXX",
#     "subscriber_name": "XXX",
#     "ref_id": "XXX",
#     "inquiries": [
#       {
#         "period": "XXX",
#         "base_price": 300000,
#         "fine": 0,
#         "admin_fee": 2500,
#         "meter_changes": "XXX"
#       }
#     ],
#     "subtotal": 302500,
#     "discount": 900,
#     "total": 301600
#   },
#   "message": ""
# }
            dumb_data['subscriber_id'] = merch_request_dict['number']
            dumb_data['subscriber_name'] = 'Suriyah Sidkisari'
            dumb_data['ref_id'] = '0909'

            dumb_inquiries_data['base_price'] = 150000
            dumb_inquiries_data['admin_fee'] = 2500
            dumb_inquiries_data['fine'] = 0
            dumb_inquiries_data['meter_changes'] = 1220

            dumb_inquiries_arr.append(dumb_inquiries_data)

            dumb_data['subtotal'] = 152500
            dumb_data['discount'] = 0
            dumb_data['total'] = 152500
        elif denom[:7] == 'BPJSKES':
# {
#   "status": "SUCCESS",
#   "data": {
#     "subscriber_id": "XXX",
#     "subscriber_name": "XXX",
#     "ref_id": "XXX",
#     "inquiries": {
#       "branch_code": "-",
#       "branch_name": "XXX",
#       "month_counts": 1,
#       "participant_counts": 3,
#       "base_price": 154200,
#       "bill_rest": 0,
#       "admin": 2500
#     },
#     "subtotal": 156700,
#     "discount": 600,
#     "total": 156100
#   },
#   "message": ""
# }         
            print('masuk BPJSKES >>')

            jml_bln = int(denom.replace('BPJSKES', ''))

            dumb_data['subscriber_id'] = merch_request_dict['number']
            dumb_data['subscriber_name'] = 'Suriyah Sidkisari'
            dumb_data['ref_id'] = '0909'

            dumb_inquiries_data['branch_name'] = 'BPJS Kesehatan'
            dumb_inquiries_data['branch_code'] = '-'
            dumb_inquiries_data['participant_counts'] = 3
            dumb_inquiries_data['month_counts'] = jml_bln
            dumb_inquiries_data['bill_rest'] = 0
            dumb_inquiries_data['base_price'] = 150000
            dumb_inquiries_data['admin'] = 2500
            dumb_inquiries_data['total'] = 152500

            dumb_data['inquiries'] = dumb_inquiries_data

            dumb_data['subtotal'] = 152500
            dumb_data['discount'] = 0
            dumb_data['total'] = 152500

        if len(dumb_inquiries_arr) > 0:
            dumb_data['inquiries'] = dumb_inquiries_arr

        dumb_dict['data'] = dumb_data

        self.text = json.dumps(dumb_dict)

        return self

def kirim_notify(order_id):
    # try:
# {
#         "order_id": 1,
#         "status": "COMPLETED",
#         "message": "XXX"
#         "signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
# }     
    print('kirim_notify >> ')
    fake_web = 'http://DESKTOP-0KSLBA0:6555/notify/artpay'
    dict_notify = {}
    dict_notify['order_id'] = order_id
    dict_notify['status'] = 'COMPLETED'
    dict_notify['message'] = 'Sukses'

    settings = get_settings()
    website = settings['_host'] + '/api/vendor/odeo/notify'
    mid = 'odeo_mid' in settings and settings["odeo_mid"] or None
    key = 'odeo_key' in settings and settings["odeo_key"] or None
    signature = sha256("{order_id}{mid}{key}{status}".format(order_id=order_id, mid=mid, key=key, status='COMPLETED'))
    dict_notify['signature'] = signature

    requests.post(website, data=json.dumps(dict_notify), timeout=30)
    # requests.post(fake_web, data=json.dumps(dict_notify), timeout=30)
    # except Exception as e:
    #     print('error notify >>')
    #     print(e)

def sha256(hash_string):
    return hashlib.sha256(hash_string.encode()).hexdigest()