__init__.py
3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from pprint import pprint
import requests
from .structure import (
INQUIRY_PATH,
PAYMENT_PATH,
REVERSAL_PATH,
KODE_IZIN,
)
class WebClient:
def __init__(
self, base_url, username, password, debug=False, ssl_verify=True):
self.inquiry_url_tpl = '/'.join([base_url, INQUIRY_PATH])
self.payment_url_tpl = '/'.join([base_url, PAYMENT_PATH])
self.reversal_url_tpl = '/'.join([base_url, REVERSAL_PATH])
self.username = username
self.password = password
self.debug = debug
self.ssl_verify = ssl_verify
def send(self, url):
self.debug_info(f'Request to {url}')
r = requests.get(url, timeout=15, verify=self.ssl_verify)
self.debug_info(f'Response:')
self.debug_info(r.text)
return r.json()
def inquiry(self, invoice_id):
url = self.inquiry_url_tpl.format(
username=self.username, password=self.password,
invoice_id=invoice_id)
return self.send(url)
def payment(self, invoice_id, ntb, nominal):
url = self.payment_url_tpl.format(
username=self.username, password=self.password,
invoice_id=invoice_id, ntb=ntb, nominal=nominal)
return self.send(url)
def reversal(self, invoice_id, ntb):
url = self.reversal_url_tpl.format(
username=self.username, password=self.password,
invoice_id=invoice_id, ntb=ntb)
return self.send(url)
def debug_info(self, msg):
if not self.debug:
return
if isinstance(msg, dict):
pprint(msg)
else:
print(msg)
class Inquiry(WebClient):
def __init__(
self, base_url, username, password, invoice_id, debug=False,
do_inquiry=True):
super().__init__(base_url, username, password, debug, False)
self.invoice_id = invoice_id
self.invoice = None
if do_inquiry:
self.do_inquiry()
def do_inquiry(self):
self.resp = self.inquiry(self.invoice_id)
if self.resp['code'] in ('01', '02'):
self.invoice = self.resp['data'][0]
self.tagihan = self.invoice['tagihan_skrd']
self.denda = self.invoice['tagihan_denda']
self.total = self.invoice['total']
def kode_izin(self):
return KODE_IZIN[self.invoice['kode_izin']]
def nama_izin(self):
return self.invoice['jenis_izin']
def jenis_layanan(self):
return self.invoice['tipe_permohonan']
def nomor_resi(self):
return self.invoice['nomor_resi']
def nama_wp(self):
return self.invoice['perusahaan']
def lokasi(self):
return self.invoice['lokasi']
def tagihan(self):
return self.invoice['tagihan_skrd']
def denda(self):
return self.invoice['tagihan_denda']
def ntp(self):
return self.payment['ntp']
def do_payment(self, ntb): # Digunakan opensipkd-iso8583-bjb
resp = self.payment(self.invoice_id, ntb, self.total)
if resp['code'] in ('01', '02'):
self.payment = resp['data'][0]
return resp
def do_reversal(self, ntb): # Digunakan opensipkd-iso8583-bjb
return self.reversal(self.invoice_id, ntb)