Commit 2acd213d by Solo Group

odeo

1 parent 42227c16
...@@ -67,14 +67,15 @@ class Vendor(VendorClass): ...@@ -67,14 +67,15 @@ class Vendor(VendorClass):
if not self.v_produk_kd or not self.id_pel: if not self.v_produk_kd or not self.id_pel:
return self.set_response(message='Parameter tidak lengkap') return self.set_response(message='Parameter tidak lengkap')
resp = self._inquiry() resp = self._inquiry()
if not resp.text: if resp is None or not resp.text:
log.info("Resp Tidak Ada, {}".format(resp)) log.info("Resp Tidak Ada, {}".format(resp))
return return
try: try:
result = json.loads(resp.text) result = json.loads(resp.text)
except: except:
result = resp.text self.response = resp.text
return self.set_failed(typ="inquiry")
self.response = result self.response = result
log.info("Inquiry Response: %s" % self.response) log.info("Inquiry Response: %s" % self.response)
...@@ -82,7 +83,7 @@ class Vendor(VendorClass): ...@@ -82,7 +83,7 @@ class Vendor(VendorClass):
self.status = 1 # sukses self.status = 1 # sukses
data = "data" in result and result["data"] or None data = "data" in result and result["data"] or None
parsd = self.pars_data(data) parsd = self.pars_data(data)
return self.set_success(parsd) # parsd return self.set_success(parsd, "inquiry") # parsd
elif resp.status_code == 400: elif resp.status_code == 400:
data = "data" in result and result["data"] or None data = "data" in result and result["data"] or None
...@@ -92,9 +93,9 @@ class Vendor(VendorClass): ...@@ -92,9 +93,9 @@ class Vendor(VendorClass):
pos = msg.find("Sisa saldo") pos = msg.find("Sisa saldo")
message = pos > -1 and msg[:pos] or msg message = pos > -1 and msg[:pos] or msg
parsd = self.pars_data(data) parsd = self.pars_data(data)
return self.set_failed(parsd, message=message, typ="payment") return self.set_failed(parsd, message=message, typ="inquiry")
return return self.set_failed(typ="inquiry")
# parsd = self._inquiry() # parsd = self._inquiry()
...@@ -105,9 +106,38 @@ class Vendor(VendorClass): ...@@ -105,9 +106,38 @@ class Vendor(VendorClass):
# Jika kategory bukan e-pulsa Call Inquiry First # Jika kategory bukan e-pulsa Call Inquiry First
parsd = None parsd = None
if self.vendor_produk.produk.kategori.kode != "e-pulsa": if self.vendor_produk.produk.kategori.kode != "e-pulsa":
parsd = self._inquiry() 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_pending(typ="inquiry")
self.response = result
log.info("Inquiry Response: %s" % self.response)
if resp.status_code == 200:
self.status = 1 # sukses
data = "data" in result and result["data"] or None
parsd = self.pars_data(data)
elif resp.status_code == 400:
data = "data" in result and result["data"] or None
message = ""
if data and "errors" in data:
msg = data["errors"][0]
pos = msg.find("Sisa saldo")
message = pos > -1 and msg[:pos] or msg
parsd = self.pars_data(data)
return self.set_pending(parsd, message=message, typ="inquiry")
else:
return self.set_pending(typ="inquiry")
if not parsd: if not parsd:
return self.set_failed() return self.set_pending(typ="inquiru")
params = dict( params = dict(
data=dict( data=dict(
...@@ -128,20 +158,19 @@ class Vendor(VendorClass): ...@@ -128,20 +158,19 @@ class Vendor(VendorClass):
except: except:
resp = None resp = None
if resp is None: if resp is None or not resp.text:
return self.set_pending(parsd, typ="payment") return self.set_pending(parsd, typ="payment")
# todo: dibuat seolah menjadi belum di transaksikan
# todo: membuat cron untuk melakukan pengecekan transaksi
try: try:
result = json.loads(resp.text) result = json.loads(resp.text)
self.response = result
log.info("Payment Response: %s" % self.response)
except: except:
result = resp.text self.response = resp.text
self.response = result
log.info("Payment Response: %s" % self.response) log.info("Payment Response: %s" % self.response)
return self.set_pending(parsd, typ="payment") return self.set_pending(parsd, typ="payment")
self.response = result
log.info("Payment Response: %s" % self.response)
# odeo mengembalikan result dalam bentuk status # odeo mengembalikan result dalam bentuk status
# 0200 ok # 0200 ok
# 0400 bad request # 0400 bad request
...@@ -180,8 +209,11 @@ class Vendor(VendorClass): ...@@ -180,8 +209,11 @@ class Vendor(VendorClass):
sn = len(sn_spl) > 1 and sn_spl[1] or "" sn = len(sn_spl) > 1 and sn_spl[1] or ""
parsd["serial_number"] = sn parsd["serial_number"] = sn
return self.set_failed(parsd, message=message, typ="payment") return self.set_failed(parsd, message=message, typ="payment")
elif resp.status_code == 401: elif resp.status_code == 401:
return self.set_failed(parsd, typ="payment") return self.set_failed(parsd, typ="payment")
else:
return
def advice(self): def advice(self):
if not self.v_produk_kd or not self.id_pel or not self.invoice_det: if not self.v_produk_kd or not self.id_pel or not self.invoice_det:
......
...@@ -105,7 +105,8 @@ class VendorClass(object): ...@@ -105,7 +105,8 @@ class VendorClass(object):
def set_pending(self, data=None, message=None, typ="payment"): def set_pending(self, data=None, message=None, typ="payment"):
self.status = -1 self.status = -1
data = data and data or {} data = data and data or {}
message = "TRX ke {} sedang di proses".format(self.id_pel) if not message:
message = "TRX ke {} sedang di proses".format(self.id_pel)
data.update(dict(denom=self.vendor_produk.produk.kode, data.update(dict(denom=self.vendor_produk.produk.kode,
id_pel=self.id_pel, id_pel=self.id_pel,
code=68, code=68,
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!