responses.py
1.94 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
import logging
from opensipkd.string import (
FixLength,
FullDateTimeVar,
)
from opensipkd.string.row import Row
from .structure import (
INQUIRY_RESP_FIELDS,
PAYMENT_RESP_FIELDS,
METHOD,
METHOD_CODE,
)
from .exceptions import InternalError
log = logging.getLogger(__name__)
class InquiryResponse(Row):
def __init__(self):
super().__init__(INQUIRY_RESP_FIELDS)
def __setitem__(self, name, value):
if value.find(':') > -1:
msg = f'Ada titik dua pada {name} yaitu {value}'
log.error(msg)
raise InternalError(msg)
Row.__setitem__(self, name, value)
def __str__(self):
return self.to_str()
def to_str(self):
return ':'.join(list(self))
def from_err(self, err):
self.values['Response Code'] = err.code
self.values['Notification Message'] = \
self.values['Biller Name'] = err.message
def from_raw(self, raw):
t = raw.split(':')
i = -1
for fieldname in self.fieldnames:
i += 1
if not t[i:i+1]:
return
self.values[fieldname] = t[i]
class PaymentResponse(InquiryResponse):
def __init__(self):
Row.__init__(self, PAYMENT_RESP_FIELDS)
def get_method(data):
return METHOD[data['trx_type']]
def is_inquiry(data):
return data['trx_type'] == METHOD_CODE['inquiry']
def is_payment(data):
return data['trx_type'] == METHOD_CODE['payment']
def is_reversal(data):
return data['trx_type'] == METHOD_CODE['reversal']
def is_status(data):
return data['trx_type'] == METHOD_CODE['status']
def get_template_response(data):
if is_inquiry(data):
return InquiryResponse()
d = PaymentResponse()
d['Bill Ref'] = data['bill_ref']
return d
def date_from_str(s):
t = FullDateTimeVar()
t.set_raw(s)
return t.get_value()
def get_trx_date(data):
return date_from_str(data['trx_date'])