Commit 3f809681 by Solo Group

VSI

1 parent 1d67c30f
...@@ -286,7 +286,7 @@ class ViewHome(BaseView): ...@@ -286,7 +286,7 @@ class ViewHome(BaseView):
if result["f_result"]["code"]==0: if result["f_result"]["code"]==0:
session.flash("Sukses") session.flash("Sukses")
else: else:
session.flash(result["f_result"]["status"], "error") session.flash(result["f_result"]["message"], "error")
form.render(values) form.render(values)
return dict(form=form, params=form_params_view) return dict(form=form, params=form_params_view)
......
...@@ -60,7 +60,9 @@ class Vendor(VendorClass): ...@@ -60,7 +60,9 @@ class Vendor(VendorClass):
"discount": 300, "discount": 300,
"total": 156400 "total": 156400
}] }]
"""
"""
<?xml version="1.0"?> <?xml version="1.0"?>
<root> <root>
<status>SUCCESS</status> <status>SUCCESS</status>
...@@ -125,24 +127,27 @@ class Vendor(VendorClass): ...@@ -125,24 +127,27 @@ class Vendor(VendorClass):
log.info("Request: %s", params) log.info("Request: %s", params)
try: try:
resp = requests.get(self.url, params=params, timeout=15) resp = requests.get(self.url, params=params, timeout=15)
if resp and resp.ok:
data = dict(xmltodict.parse(resp.text)["root"])
log.info("Response: %s", data)
self.response = data
else:
data = dict(message=resp.text,
code=resp.status_code)
self.response = data
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
data = dict(message = e.strerror, data = dict(message = e.strerror,
code = e.errno) code = e.errno)
return self.save_response(data) return self.save_response(data)
if resp and resp.ok: if not resp:
data = dict(xmltodict.parse(resp.text)["root"])
log.info("Response: %s", data)
data = self.pars_data(data)
elif resp:
data = dict(message=resp.text,
code=resp.status_code)
else:
data = dict(message="No Response From Biller ", data = dict(message="No Response From Biller ",
code=500) code=500)
return self.save_response(data) return self.save_response(data)
data = self.pars_data(data)
self.result = data
return self.save_response(data) return self.save_response(data)
def payment(self): def payment(self):
...@@ -159,11 +164,11 @@ class Vendor(VendorClass): ...@@ -159,11 +164,11 @@ class Vendor(VendorClass):
else: else:
data = dict(code=resp.status_code, data = dict(code=resp.status_code,
message=resp.text) message=resp.text)
self.response = data
except: except:
data = dict(code=500, data = dict(code=500,
message="No Response From Biller") message="No Response From Biller")
self.response = data
data = self.pars_data(data) data = self.pars_data(data)
self.save_log('payment') self.save_log('payment')
......
...@@ -160,29 +160,20 @@ class Vendor(VendorClass): ...@@ -160,29 +160,20 @@ class Vendor(VendorClass):
if resp and resp.ok: if resp and resp.ok:
data = dict(xmltodict.parse(resp.text)["root"]) data = dict(xmltodict.parse(resp.text)["root"])
self.response = data
data = self.pars_data(data) data = self.pars_data(data)
elif resp: elif resp:
data = dict(message=resp.text, data = dict(message=resp.text,
code=resp.status_code) code=resp.status_code)
self.response = data
else: else:
data = dict(message="No Response From Biller ", data = dict(message="No Response From Biller ",
code=500) code=500)
return self.save_response(data) return self.save_response(data)
# if "status" in data and data["status"] and data["status"] == "SUCCESS": self.result = data
# # data = self.pars_data(data)
# data.update(dict(message="SUCCESS",
# code=0))
#
# elif "status" in data and data["status"] and data["status"] == "ERROR":
# #todo: apakah data akan dimapping errornya?
# data.update(dict(message=data["rcm"],
# code=data["rc"]))
# else:
# data.update(dict(message="Other Error",
# code=500))
return self.save_response(data) return self.save_response(data)
def payment(self): def payment(self):
...@@ -201,12 +192,11 @@ class Vendor(VendorClass): ...@@ -201,12 +192,11 @@ class Vendor(VendorClass):
else: else:
data = dict(code=resp.status_code, data = dict(code=resp.status_code,
message=resp.text) message=resp.text)
self.response = data
except: except:
data = dict(code=500, data = dict(code=500,
message="No Response From Biller") message="No Response From Biller")
self.response = data
data = self.pars_data(data) data = self.pars_data(data)
self.save_log('payment') self.save_log('payment')
return data return data
...@@ -223,16 +213,14 @@ class Vendor(VendorClass): ...@@ -223,16 +213,14 @@ class Vendor(VendorClass):
resp = requests.get(self.url, params=params, timeout=15) resp = requests.get(self.url, params=params, timeout=15)
if resp.ok: if resp.ok:
data = dict(xmltodict.parse(resp.text)["root"]) data = dict(xmltodict.parse(resp.text)["root"])
self.response = data
else: else:
data = dict(code=resp.status_code, data = dict(code=resp.status_code,
message=resp.text) message=resp.text)
self.response = data self.response = data
except: except:
data = dict(code=500, data = dict(code=500,
message="No Response From Biller") message="No Response From Biller")
self.response = data
data = self.pars_data(data) data = self.pars_data(data)
self.result = data self.result = data
......
...@@ -105,9 +105,9 @@ class Vendor(VendorClass): ...@@ -105,9 +105,9 @@ class Vendor(VendorClass):
"total": subtotal-discount, "total": subtotal-discount,
} }
def save_response(self, data, typ="inquiry"): def save_result(self, data, typ="inquiry"):
self.response = data self.result = data
log.info("VSI PLN PRE Response: %s", data) log.info("Result: %s", data)
self.save_log(typ) self.save_log(typ)
return data return data
...@@ -118,40 +118,26 @@ class Vendor(VendorClass): ...@@ -118,40 +118,26 @@ class Vendor(VendorClass):
self.request = params self.request = params
self.save_log('inquiry') self.save_log('inquiry')
params['trxid'] = self.invoice_det.id params['trxid'] = self.invoice_det.id
log.info("VSI PLN PRE Request: %s", params) log.info("Request: %s", params)
try: try:
resp = requests.get(self.url, params=params, timeout=15) resp = requests.get(self.url, params=params, timeout=15)
if resp and resp.ok:
data = dict(xmltodict.parse(resp.text)["root"])
self.response = data
else:
data = dict(message=resp.text,
code=resp.status_code)
self.response = data
log.info("REsponse: %s" % data )
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
data = dict(message = e.strerror, data = dict(message = e.strerror,
code = e.errno) code = e.errno)
return self.save_response(data) return self.save_result(data)
if resp and resp.ok:
data = dict(xmltodict.parse(resp.text)["root"])
data = self.pars_data(data)
elif resp: data = self.pars_data(data)
data = dict(message=resp.text, return self.save_result(data)
code=resp.status_code)
else:
data = dict(message="No Response From Biller ",
code=500)
return self.save_response(data)
# if "status" in data and data["status"] and data["status"] == "SUCCESS":
# # data = self.pars_data(data)
# data.update(dict(message="SUCCESS",
# code=0))
#
# elif "status" in data and data["status"] and data["status"] == "ERROR":
# #todo: apakah data akan dimapping errornya?
# data.update(dict(message=data["rcm"],
# code=data["rc"]))
# else:
# data.update(dict(message="Other Error",
# code=500))
return self.save_response(data)
def payment(self): def payment(self):
params = self.get_params(cmd='PAY', modul='PRE') params = self.get_params(cmd='PAY', modul='PRE')
...@@ -168,13 +154,14 @@ class Vendor(VendorClass): ...@@ -168,13 +154,14 @@ class Vendor(VendorClass):
else: else:
data = dict(code=resp.status_code, data = dict(code=resp.status_code,
message=resp.text) message=resp.text)
self.response = data
except: except:
data = dict(code=500, data = dict(code=500,
message="No Response From Biller") message="No Response From Biller")
self.response = data
data = self.pars_data(data) data = self.pars_data(data)
self.result = data
self.save_log('payment') self.save_log('payment')
return data return data
...@@ -191,16 +178,14 @@ class Vendor(VendorClass): ...@@ -191,16 +178,14 @@ class Vendor(VendorClass):
resp = requests.get(self.url, params=params, timeout=15) resp = requests.get(self.url, params=params, timeout=15)
if resp.ok: if resp.ok:
data = dict(xmltodict.parse(resp.text)["root"]) data = dict(xmltodict.parse(resp.text)["root"])
self.response = data
else: else:
data = dict(code=resp.status_code, data = dict(code=resp.status_code,
message=resp.text) message=resp.text)
self.response = data self.response = data
except: except:
data = dict(code=500, data = dict(code=500,
message="No Response From Biller") message="No Response From Biller")
self.response = data
data = self.pars_data(data) data = self.pars_data(data)
self.result = data self.result = data
......
...@@ -2,7 +2,7 @@ from opensipkd.pasar.models import PartnerProduk ...@@ -2,7 +2,7 @@ from opensipkd.pasar.models import PartnerProduk
import requests import requests
import xmltodict import xmltodict
from agratek.api.merchant.tools import JsonRpcError from agratek.api.merchant.tools import JsonRpcError
from agratek.api.merchant.views.vsi import Vendor as VendorClass from agratek.api.merchant.views.vsi import Vendor as VendorClass, vsi_status
import logging import logging
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -24,25 +24,30 @@ class Vendor(VendorClass): ...@@ -24,25 +24,30 @@ class Vendor(VendorClass):
:return: :return:
""" """
code = "rc" in data and int(data["rc"]) or 0 code = "rc" in data and int(data["rc"]) or 0
if code==0: self.status = vsi_status[str(code)]["status"]
status = self.status == -3 and "FAILED" or "PENDING"
if status == "PENDING":
code = 68
if self.status>-3:
product_id = self.invoice_det.produk.id product_id = self.invoice_det.produk.id
partner_id = self.invoice_det.h2h_ar_invoice.customer_id partner_id = self.invoice_det.h2h_ar_invoice.customer_id
discount = PartnerProduk.get_discount(partner_id, product_id) discount = PartnerProduk.get_discount(partner_id, product_id)
harga = self.vendor_produk.produk.harga harga = self.vendor_produk.produk.harga
self.status = 1 self.status = 1
status = "status" in data and data["status"] or ""
if not harga: if not harga:
raise JsonRpcError() raise JsonRpcError()
else: else:
discount = 0 discount = 0
harga = 0 harga = 0
self.status = -1
result = dict( result = dict(
status="status" in data and data["status"] or "PENDING", status=status,
code=code, code=code,
message="rcm" in data \ message="rcm" in data \
and (data["rcm"] == "00000" and "SUCCESS" or data["rcm"]) \ and (data["rcm"] == "00000" and "SUCCESS" or data["rcm"]) \
or "PENDING", or status,
serial_number="serialnumber" in data and data["serialnumber"] or "", serial_number="serialnumber" in data and data["serialnumber"] or "",
subtotal=int(harga), subtotal=int(harga),
discount=int(discount), discount=int(discount),
...@@ -60,21 +65,21 @@ class Vendor(VendorClass): ...@@ -60,21 +65,21 @@ class Vendor(VendorClass):
try: try:
result = requests.get(self.url, params=params, timeout=15) result = requests.get(self.url, params=params, timeout=15)
if result.ok: if result.ok:
data = xmltodict.parse(result.text)["root"] data = dict(xmltodict.parse(result.text)["root"])
else: else:
data = dict(code=result.status_code, data = dict(code=result.status_code,
message=result.text) message=result.text)
self.response = data
log.info("Response: %s" % (data))
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
data = dict(code=e.errno, data = dict(code=e.errno,
message=e.strerror) message=e.strerror)
log.info("VSI PULSA Response: %s" % (data))
self.response = data
self.result = self.pars_data(data) self.result = self.pars_data(data)
log.info("VSI PULSA Result: %s" % (self.result)) log.info("Result: %s" % (self.result))
self.save_log('inquiry') self.save_log('inquiry')
return data return self.result
def payment(self): def payment(self):
params = self.get_params(cmd='PAY', modul='ISI') params = self.get_params(cmd='PAY', modul='ISI')
...@@ -86,18 +91,18 @@ class Vendor(VendorClass): ...@@ -86,18 +91,18 @@ class Vendor(VendorClass):
result = requests.get(self.url, params=params, timeout=15) result = requests.get(self.url, params=params, timeout=15)
if result.ok: if result.ok:
data = dict(xmltodict.parse(result.text)["root"]) data = dict(xmltodict.parse(result.text)["root"])
self.response = data
else: else:
data = dict(code=result.status_code, data = dict(code=result.status_code,
message=result.text) message=result.text)
self.response = data
log.info("Payment Response: %s" % (data))
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
data = dict(code=e.errno, data = dict(code=e.errno,
message=e.strerror) message=e.strerror)
log.info("Payment Response: %s" % (data))
self.amt_buy = "harga" in data and data["harga"] or self.amt_buy self.amt_buy = "harga" in data and data["harga"] or self.amt_buy
self.vend_inv_no = "ref_num" in data and data["ref_num"] or self.vend_inv_no self.vend_inv_no = "ref_num" in data and data["ref_num"] or self.vend_inv_no
self.response = data
self.result = self.pars_data(data) self.result = self.pars_data(data)
log.info("Payment Result: %s" % (self.result)) log.info("Payment Result: %s" % (self.result))
self.save_log('payment') self.save_log('payment')
...@@ -105,14 +110,24 @@ class Vendor(VendorClass): ...@@ -105,14 +110,24 @@ class Vendor(VendorClass):
def advice(self): def advice(self):
params = self.get_params(cmd='ADV', modul='ISI') params = self.get_params(cmd='ADV', modul='ISI')
params["tujuan"] = self.id_pel
params["voucherid"] = self.vendor_produk.kode
self.request = params self.request = params
result = requests.get(self.url, params=params, timeout=15) log.info("Advice Request: %s" % (self.request))
if result.ok: try:
data = xmltodict.parse(result.text)["root"] result = requests.get(self.url, params=params, timeout=15)
if result.ok:
data = xmltodict.parse(result.text)["root"]
else:
data = dict(code=result.status_code,
message=result.text)
self.response = data self.response = data
else: log.info("Advice Response: %s" % (self.response))
data = dict(error=result.status_code) except:
data = dict(code=999,
message="No Response From Biller")
self.result = data
log.info("Advice Result: %s" % (self.result))
self.save_log('advice') self.save_log('advice')
return data return data
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!