Commit 4ce7d60d by yasir

merapikan, merubah status purchase ke pending, merubah value MCC, update nilai total admin

1 parent 2f67bcc4
...@@ -22,7 +22,7 @@ timeout = 30 ...@@ -22,7 +22,7 @@ timeout = 30
class Vendor(VendorClass): class Vendor(VendorClass):
def __init__(self, vendor_produk, invoice_det): def __init__(self, vendor_produk, invoice_det):
VendorClass.__init__(self, vendor_produk, invoice_det=invoice_det) VendorClass.__init__(self, vendor_produk, invoice_det = invoice_det)
# id_pel, customer_id, cust_trx, row # id_pel, customer_id, cust_trx, row
settings = get_settings() settings = get_settings()
# self.mid = 'odeo_mid' in settings and settings['odeo_mid'] or None # self.mid = 'odeo_mid' in settings and settings['odeo_mid'] or None
...@@ -43,17 +43,11 @@ class Vendor(VendorClass): ...@@ -43,17 +43,11 @@ class Vendor(VendorClass):
params = {} params = {}
params['Action'] = 'inquiry' params['Action'] = 'inquiry'
params['ClientId'] = self.userid params['ClientId'] = self.userid
params['MCC'] = '6008' params['MCC'] = 6025
params['KodeProduk'] = self.v_produk_kd params['KodeProduk'] = self.v_produk_kd
params['NomorPelanggan'] = self.id_pel params['NomorPelanggan'] = self.id_pel
# params = dict(
# 'Action' = 'inquiry',
# 'ClientId' = self.userid,
# 'MCC' = '6008',
# 'KodeProduk' = self.v_produk_kd,
# NomorPelanggan = self.id_pel
# )
params = json.dumps(params) params = json.dumps(params)
self.request = params self.request = params
log.info("Inquiry Request: url: %s params %s" % (self.url, params)) log.info("Inquiry Request: url: %s params %s" % (self.url, params))
...@@ -67,40 +61,7 @@ class Vendor(VendorClass): ...@@ -67,40 +61,7 @@ class Vendor(VendorClass):
return return
return resp return resp
def inquiry(self): def _integrate_inquiry(self):
if not self.v_produk_kd or not self.id_pel:
return self.set_response(message='Parameter tidak lengkap')
resp = self._inquiry()
if resp is None or not resp.text:
log.info("Resp Tidak Ada, {}".format(resp))
return
try:
result = json.loads(resp.text)
except:
self.response = resp.text
return self.set_failed(typ="inquiry")
self.response = result
log.info("Inquiry Response: %s" % self.response)
if resp.status_code == 200:
self.status = 1 # sukses
data = self.response
parsd = self.pars_data(data)
return self.set_success(parsd, "inquiry") # parsd
elif resp.status_code == 400:
data = self.response
message = ""
if data and "ErrorMessage" in data:
msg = data["ErrorMessage"][0]
pos = msg.find("Sisa saldo")
message = pos > -1 and msg[:pos] or msg
parsd = self.pars_data(data)
return self.set_failed(parsd, message=message, typ="inquiry")
def payment(self):
parsd = None parsd = None
response_inquiry = self._inquiry() #plain json type response_inquiry = self._inquiry() #plain json type
...@@ -119,38 +80,78 @@ class Vendor(VendorClass): ...@@ -119,38 +80,78 @@ class Vendor(VendorClass):
self.response = result_inquiry # should be json serializable self.response = result_inquiry # should be json serializable
message_log = 'Success' message_log = 'Success'
parsd = self.pars_data(result_inquiry) # parsing to user information
if response_inquiry.status_code == 200: #answered request if response_inquiry.status_code == 200: #answered request
is_error = 'ErrorMessage' in result_inquiry and result_inquiry['ErrorMessage'] or '' is_error = 'ErrorMessage' in result_inquiry and result_inquiry['ErrorMessage'] or ''
is_error = is_error != '' and result_inquiry['Status'] != '0000'
error_status = result_inquiry['Status']
error_msg = is_error
message_log = '[' + error_status + '] ' + error_msg
is_error = is_error != '' and error_status != '0000'
if is_error : if is_error :
self.status = 0 self.status = 0
error_msg = result_inquiry['ErrorMessage']
error_status = result_inquiry['Status']
message_log = '[' + error_status + '] ' + error_msg
parsd = self.pars_data(result_inquiry) # parsing to user information
return self.set_failed(parsd, message = message_log, typ = "inquiry") # error means failed return self.set_failed(parsd, message = message_log, typ = "inquiry") # error means failed
else : else :
# nothing goes wrong, will continue to payment sequences # nothing goes wrong, will continue to payment sequences
self.status = 1 # sukses self.status = 1 # sukses
parsd = self.pars_data(result_inquiry)
print('inq_sukses >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') return result_inquiry
# return self.set_success(parsd, typ = "inquiry")
else: # network fail or any other errors else: # network fail or any other errors
message_log = 'Terjadi kesalahan Server Pembayaran.' return self.set_failed(parsd, typ="inquiry")
def inquiry(self):
if not self.v_produk_kd or not self.id_pel:
return self.set_response(message='Parameter tidak lengkap')
response_inquiry = self._inquiry()
if response_inquiry is None or not response_inquiry.text:
log.info("Resp Tidak Ada, {}".format(response_inquiry))
return
try:
result_inquiry = json.loads(response_inquiry.text)
except:
self.response = response_inquiry.text
return self.set_failed(typ="inquiry")
self.response = result_inquiry
log.info("Inquiry Response: %s" % self.response)
parsd = self.pars_data(result_inquiry) # parsing to user information
if response_inquiry.status_code == 200: #answered request
is_error = 'ErrorMessage' in result_inquiry and result_inquiry['ErrorMessage'] or '' is_error = 'ErrorMessage' in result_inquiry and result_inquiry['ErrorMessage'] or ''
is_error = is_error != '' and result_inquiry['Status'] != '0000'
if is_error:
error_msg = result_inquiry['ErrorMessage']
error_status = result_inquiry['Status']
message_log = '[' + error_status + '] ' + error_msg
parsd = self.pars_data(result_inquiry) error_status = result_inquiry['Status']
error_msg = is_error
message_log = '[' + error_status + '] ' + error_msg
is_error = is_error != '' and error_status != '0000'
return self.set_failed(parsd, message=message_log, typ="inquiry") if is_error :
self.status = 0
return self.set_failed(parsd, message = message_log, typ = "inquiry") # error means failed
else :
# nothing goes wrong, will continue to payment sequences
self.status = 1 # sukses
return self.set_success(parsd, typ = "inquiry")
else: # network fail or any other errors
return self.set_failed(parsd, typ="inquiry")
def payment(self):
parsd = None
result_inquiry = self._integrate_inquiry()
tagihan_list_inq = result_inquiry['Tagihan'] tagihan_list_inq = result_inquiry['Tagihan']
tagihan_list_pay = [] tagihan_list_pay = []
...@@ -169,7 +170,7 @@ class Vendor(VendorClass): ...@@ -169,7 +170,7 @@ class Vendor(VendorClass):
Action = "payment", Action = "payment",
ClientId = self.userid, ClientId = self.userid,
KodeProduk = self.v_produk_kd, KodeProduk = self.v_produk_kd,
MCC = 6008, MCC = 6025,
SessionId = result_inquiry['SessionId'], SessionId = result_inquiry['SessionId'],
NomorPelanggan = result_inquiry['NomorPelanggan'], NomorPelanggan = result_inquiry['NomorPelanggan'],
Tagihan = tagihan_list_pay, Tagihan = tagihan_list_pay,
...@@ -201,93 +202,54 @@ class Vendor(VendorClass): ...@@ -201,93 +202,54 @@ class Vendor(VendorClass):
self.response = result_payment self.response = result_payment
log.info("Payment Response: %s" % self.response) log.info("Payment Response: %s" % self.response)
if response_payment.status_code == 200 : #answered request
is_error = 'ErrorMessage' in result_payment and result_payment['ErrorMessage'] or ''
is_error = is_error != '' and result_payment['Status'] != '0000'
if is_error :
self.status = 0
error_msg = result_payment['ErrorMessage']
error_status = result_payment['Status']
message_log = '[' + error_status + '] ' + error_msg
parsd = self.pars_data(result_payment) # parsing to user information
return self.set_failed(parsd, message = message_log, typ = "payment") # error means failed parsd = self.pars_data(result_payment) # parsing to user information
else :
# nothing goes wrong, the next process should be waiting for the notify ? or just checking regularly by advice request ?
# there is no notify url parameter in the payment request.
# so i set it in pending status ?
self.status = 1 # sukses
parsd = self.pars_data(result_payment)
message_log = "Request Advice untuk cek status."
return self.set_pending(parsd, message = message_log, typ = "payment")
def advice(self): if response_payment.status_code == 200: #answered request
# if not self.v_produk_kd or not self.id_pel or not self.invoice_det: is_error = 'ErrorMessage' in result_payment and result_payment['ErrorMessage'] or ''
# return dict(code=9999,
# message='Parameter tidak lengkap')
parsd = None
response_inquiry = self._inquiry() #plain json type
if response_inquiry is None or not response_inquiry.text:
log.info("Resp Tidak Ada, {}".format(response_inquiry))
return
try:
result_inquiry = json.loads(response_inquiry.text) # converting to dictionary type
except:
self.response = response_inquiry.text #converting to readable string
return self.set_failed(typ="inquiry") # failing while parsing json to dictionary
log.info("Inquiry Response: %s" % self.response) error_status = result_payment['Status']
error_msg = is_error
message_log = '[' + error_status + '] ' + error_msg
self.response = result_inquiry # should be json serializable is_error = is_error != '' and error_status != '0000'
message_log = 'Success'
if response_inquiry.status_code == 200: #answered request
is_error = 'ErrorMessage' in result_inquiry and result_inquiry['ErrorMessage'] or ''
is_error = is_error != '' and result_inquiry['Status'] != '0000'
if is_error : if is_error :
self.status = 0 self.status = 0
error_msg = result_inquiry['ErrorMessage']
error_status = result_inquiry['Status']
message_log = '[' + error_status + '] ' + error_msg
parsd = self.pars_data(result_inquiry) # parsing to user information
return self.set_failed(parsd, message = message_log, typ = "inquiry") # error means failed if error_status == '0068' :
return self.set_pending(parsd, typ = "payment")
else :
return self.set_failed(parsd, message = message_log, typ = "payment") # error means failed
else : else :
# nothing goes wrong, will continue to advice sequences # nothing goes wrong, will continue to payment sequences
self.status = 1 # sukses self.status = 1 # sukses
parsd = self.pars_data(result_inquiry)
print('inq_sukses >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') return self.set_pending(parsd, typ = "payment")
else: # network fail or any other errors else: # network fail or any other errors
message_log = 'Terjadi kesalahan Server.' return self.set_failed(parsd, typ="payment")
is_error = 'ErrorMessage' in result_inquiry and result_inquiry['ErrorMessage'] or ''
is_error = is_error != '' and result_inquiry['Status'] != '0000'
if is_error:
error_msg = result_inquiry['ErrorMessage']
error_status = result_inquiry['Status']
message_log = '[' + error_status + '] ' + error_msg
parsd = self.pars_data(result_inquiry) def advice(self):
# if not self.v_produk_kd or not self.id_pel or not self.invoice_det:
# return dict(code=9999,
# message='Parameter tidak lengkap')
return self.set_failed(parsd, message=message_log, typ="inquiry") parsd = None
result_inquiry = self._integrate_inquiry()
tagihan_list_inq = result_inquiry['Tagihan'] tagihan_list_inq = result_inquiry['Tagihan']
tagihan_list_pay = [] tagihan_list_pay = []
total_admin = 0 # total_admin = 0
total_admin = int(self.vendor_produk.produk.harga * len(tagihan_list_inq))
for item in tagihan_list_inq: for item in tagihan_list_inq:
tagihan_pay = {} tagihan_pay = {}
tagihan_pay['Periode'] = item['Periode'] tagihan_pay['Periode'] = item['Periode']
tagihan_pay['Total'] = item['Total'] tagihan_pay['Total'] = item['Total']
total_admin = total_admin + item['Total'] # total_admin = total_admin + item['Total']
tagihan_list_pay.append(tagihan_pay) tagihan_list_pay.append(tagihan_pay)
...@@ -295,7 +257,7 @@ class Vendor(VendorClass): ...@@ -295,7 +257,7 @@ class Vendor(VendorClass):
Action = "advice", Action = "advice",
ClientId = self.userid, ClientId = self.userid,
KodeProduk = self.v_produk_kd, KodeProduk = self.v_produk_kd,
MCC = 6008, MCC = 6025,
SessionId = result_inquiry['SessionId'], SessionId = result_inquiry['SessionId'],
NomorPelanggan = result_inquiry['NomorPelanggan'], NomorPelanggan = result_inquiry['NomorPelanggan'],
Tagihan = tagihan_list_pay, Tagihan = tagihan_list_pay,
...@@ -327,51 +289,6 @@ class Vendor(VendorClass): ...@@ -327,51 +289,6 @@ class Vendor(VendorClass):
return parsd return parsd
# if self.kategori == 'e-payment':
# order_id = self.invoice_det.vend_inv_no
# url = self.get_url()
# params = None
# self.request = url
# else:
# params = dict(
# data=dict(
# denom=self.v_produk_kd,
# number=self.id_pel
# )
# )
# self.request = params
# url = self.get_url()
# self.save_log("advice")
# try:
# resp = requests.get(url, params=params, verify=False,
# headers=self.get_headers(), timeout=timeout)
# except:
# return self.set_response()
# try:
# result = json.loads(resp.text)
# except:
# result = resp.text
# self.response = result
# if resp.ok:
# self.status = 1 # sukses
# data = "data" in result and result["data"] or None
# parsd = self.pars_data(data)
# return self.set_success(parsd, "payment")
# elif resp.status_code == 400:
# self.status = -3
# parsd = dict(code=resp.status_code,
# message=resp.text)
# else:
# self.status = -4
# parsd = dict(code=500,
# message="Other Error")
# self.save_log('advice')
# return parsd
def pars_data(self, data): def pars_data(self, data):
result = dict() result = dict()
print('isi data pars data >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') print('isi data pars data >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!