Commit 3f809681 by Solo Group

VSI

1 parent 1d67c30f
...@@ -27,45 +27,35 @@ class Vendor(VendorClass): ...@@ -27,45 +27,35 @@ class Vendor(VendorClass):
key = ":".join([self.mid, self.key]).encode() key = ":".join([self.mid, self.key]).encode()
self.auth = base64.b64encode(key).decode() self.auth = base64.b64encode(key).decode()
def set_response(self, result=None, data=None, message=None, code=None): def set_response(self, data=None, message=None, code=999, typ="inquiry"):
if result: if not data and message:
self.response = result
elif not data and message:
code = code and code or 500
message = message and message or "Biller No Response" message = message and message or "Biller No Response"
data = dict(code=code, data = dict(code=code,
message=message) message=message)
self.result = data self.result = data
self.save_log('inquiry') self.save_log(typ)
log.info("Response To Cust: %s" % data) log.info("Result: %s" % data)
return data return data
def request_post(self, params, url=None): def get_headers(self):
headers = {'Authorization': 'Bearer {key}'.format(key=self.auth)} return {'Authorization': 'Bearer {key}'.format(key=self.auth)}
data = json.dumps(params)
url = url and self.url + url or self.url
try:
with requests.session():
resp = requests.post(url, data=data,
verify=False, headers=headers, timeout=15)
except:
resp = None
return resp def get_url(self, url=None):
return url and self.url + url or self.url
def request_get(self, params, url=None): # def request_post(self, data, url=None):
headers = {'Authorization': 'Bearer {key}'.format(key=self.auth)} # # data = json.dumps(params)
url = url and self.url + url or self.url # url = url and self.url + url or self.url
try: # return requests.post(url, data=data, verify=False,
# headers=self.get_headers(), timeout=15)
# # try:
# # pass
# except requests.exceptions.RequestException as e:
# resp = None
#
# return resp
with requests.session():
resp = requests.get(url, params=params,
verify=False, headers=headers, timeout=15)
except:
resp = None
return resp
def inquiry(self): def inquiry(self):
if not self.v_produk_kd or not self.id_pel: if not self.v_produk_kd or not self.id_pel:
...@@ -75,21 +65,22 @@ class Vendor(VendorClass): ...@@ -75,21 +65,22 @@ class Vendor(VendorClass):
params = dict( params = dict(
number=self.id_pel number=self.id_pel
) )
url = '/prepaid/pln/inquiry' url = self.get_url('/prepaid/pln/inquiry')
else: else:
params = dict( params = dict(
denom=self.v_produk_kd, denom=self.v_produk_kd,
number=self.id_pel number=self.id_pel
) )
url = '/postpaid/inquiry' url = self.get_url('/postpaid/inquiry')
self.request = params self.request = params
log.info("Inquiry Request: url: %s params %s" % (url, params)) log.info("Inquiry Request: url: %s params %s" % (url, params))
self.save_log("inquiry") self.save_log("inquiry")
try: try:
resp = self.request_get(params, url) resp = requests.get(url, params=params, verify=False,
headers=self.get_headers(), timeout=15)
except: except:
return self.set_response(message="Biller No Response") return self.set_response(message="Biller Not Response")
if not resp: if not resp:
return self.set_response(message="Biller No Response") return self.set_response(message="Biller No Response")
...@@ -98,50 +89,60 @@ class Vendor(VendorClass): ...@@ -98,50 +89,60 @@ class Vendor(VendorClass):
result = json.loads(resp.text) result = json.loads(resp.text)
except: except:
result = resp.text result = resp.text
self.response = result
log.info("Inquiry Response: %s" % result) log.info("Inquiry Response: %s" % self.response)
if resp.ok: if resp.status_code==200:
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)
if parsd: if parsd:
parsd.update(code=0, parsd.update(code=0,
status="SUCCES") messagge="SUCCES",
status="SUCCESS")
elif resp.status_code == 400: elif resp.status_code == 400:
self.status = -1 self.status = -1
message = "data" in result and result["data"] or {} message = "data" in result and result["data"] or {}
message = message and "errors" in message and message["errors"] or message message = message and "errors" in message and message["errors"] or message
message = type(message) is list and ", ".join(message) or message message = type(message) is list and ", ".join(message) or message
parsd = dict(code=resp.status_code, parsd = dict(code=resp.status_code,
message=message) message=message)
else: else:
self.status = -1 self.status = -1
parsd = dict(code=500, parsd = None
message="Other Error") return self.set_response(parsd) #parsd
# self.response = result
# log.info("Response To Cust: %s" % parsd)
# self.result = parsd
# self.save_log('inquiry')
return self.set_response(result, parsd) #parsd
def gagal_transaksi(self, inq):
self.status = -2 # Try Other Vendor
if inq:
inq.update(dict(code=68,
message="PENDING",
status="PENDING"))
return self.set_response(data=inq, typ="payment")
else:
parsd = self.get_price()
parsd.update(dict(code=68,
message="PENDING",
status="PENDING"))
return self.set_response(data=parsd, typ="payment")
def gagal_transaksi(self, code): def get_price(self, inq=None):
if code==400: product_id = self.invoice_det.produk.id
self.status = -3 if hasattr(self.invoice_det, "customer_id"):
partner_id = self.invoice_det.customer_id
else: else:
self.status = -2 partner_id = self.invoice_det.h2h_ar_invoice.customer_id
parsd = dict( harga = self.vendor_produk.produk.harga
status="FAILED", self.discount = PartnerProduk.get_discount(partner_id, product_id)
code=code, self.amt_sell = harga - self.discount
message="Gagal Transaksi" return dict(
subtotal=harga,
discount=self.discount,
total=self.amt_sell
) )
self.result = parsd
self.save_log('payment')
return parsd
def payment(self): def payment(self):
params = dict( params = dict(
...@@ -158,8 +159,18 @@ class Vendor(VendorClass): ...@@ -158,8 +159,18 @@ class Vendor(VendorClass):
if self.vendor_produk.produk.kategori.kode in ["e-payment", "e-voucher"]: if self.vendor_produk.produk.kategori.kode in ["e-payment", "e-voucher"]:
inq = self.inquiry() inq = self.inquiry()
if inq["code"]!=0:
return self.set_response()
resp = self.request_post(params, '/prepaid/purchase') url = self.get_url("/prepaid/purchase")
try:
resp = requests.post(url, data=params, verify=False,
headers=self.get_headers(), timeout=15)
except:
resp = None
if not resp:
self.gagal_transaksi(inq)
try: try:
result = json.loads(resp.text) result = json.loads(resp.text)
except: except:
...@@ -175,22 +186,25 @@ class Vendor(VendorClass): ...@@ -175,22 +186,25 @@ class Vendor(VendorClass):
parsd = {} parsd = {}
if resp.status_code == 200 and type(result) is dict: # 0200 if resp.status_code == 200 and type(result) is dict: # 0200
data = "data" in result and result["data"] or {} data = "data" in result and result["data"] or {}
# cel rc status
if not data: if not data:
return self.gagal_transaksi(500) return self.gagal_transaksi(inq)
if "rc" in data: if "rc" in data:
parsd["code"] = int(data["rc"]) parsd["code"] = int(data["rc"])
if data["rc"] == "13": if data["rc"] == "13":
parsd["status"] = "FAILED" parsd["status"] = "FAILED"
self.status = -2 self.status = -3
elif data["rc"] == "67":
parsd["status"] = "DOUBLE"
self.status = -3 # Gagal Karena Pernah Transaksi
elif data["rc"] == "68": elif data["rc"] == "68":
parsd["status"] = "PENDING" parsd["status"] = "PENDING"
self.status = -1 # pending self.status = -1 # pending
elif data["rc"] == "67": if self.status == -2:
parsd["status"] = "DOUBLE" parsd["message"] = "PENDING"
self.status = -2 # Gagal Karena Pernah Transaksi else:
# Status ini hanya sementara nunggu refund parsd["message"] = "FAILED"
# Status ini hanya sementara nunggu refund
# Status -2 ini harus dicari solusi mencari vendor lain # Status -2 ini harus dicari solusi mencari vendor lain
else: else:
self.status = 1 self.status = 1
...@@ -200,39 +214,25 @@ class Vendor(VendorClass): ...@@ -200,39 +214,25 @@ class Vendor(VendorClass):
or self.serial_number or self.serial_number
self.vend_inv_no = "order_id" in data and data["order_id"] or None self.vend_inv_no = "order_id" in data and data["order_id"] or None
self.amt_buy = "price" in data and data["price"] or 0
if not inq: if not inq:
if parsd["code"] == 0 or parsd["code"] == 68: if parsd["code"] == 0 or parsd["code"] == 68:
self.amt_buy = "price" in data and data["price"] or 0 parsd = self.get_price(inq)
product_id = self.invoice_det.produk.id
partner_id = self.invoice_det.h2h_ar_invoice.customer_id
discount = PartnerProduk.get_discount(partner_id, product_id)
harga = self.vendor_produk.produk.harga
self.amt_sell = int(harga - discount)
parsd["total"] = self.amt_sell
parsd["discount"] = int(discount)
parsd["subtotal"] = int(harga)
else: else:
self.amt_buy = "price" in data and data["price"] or 0
inq.update(parsd) inq.update(parsd)
parsd = inq parsd = inq
self.result = parsd
log.info("Payment Result: %s" % self.result)
self.save_log('payment')
# if self.status == -1:
# sleep(2)
# row = H2hArInvoiceDet.query_id(self.invoice_det.id).first()
# if row.notify:
# post = "post" in row.notify and row.notify["post"] or ""
# if post:
# #
# self.result = parsd
return parsd # log.info("Payment Result: %s" % self.result)
return self.set_response(parsd, 'payment')
else: # BAD REQUEST else: # BAD REQUEST
self.status = -3
return self.gagal_transaksi(resp.status_code) return dict(code=13,
message="FAILED")
def advice(self): def advice(self):
...@@ -242,7 +242,7 @@ class Vendor(VendorClass): ...@@ -242,7 +242,7 @@ class Vendor(VendorClass):
if self.kategori == 'e-payment': if self.kategori == 'e-payment':
order_id = self.invoice_det.vend_inv_no order_id = self.invoice_det.vend_inv_no
url = '/order/{order_id}'.format(order_id=order_id) url = self.get_url('/order/{order_id}'.format(order_id=order_id))
params = None params = None
self.request = url self.request = url
else: else:
...@@ -253,16 +253,21 @@ class Vendor(VendorClass): ...@@ -253,16 +253,21 @@ class Vendor(VendorClass):
) )
) )
self.request = params self.request = params
self.save_log("advice") url = self.get_url('/prepaid/purchase-get')
url = '/prepaid/purchase-get'
self.save_log("advice") self.save_log("advice")
resp = self.request_get(params, url) try:
resp = requests.get(url,params=params, verify=False,
headers=self.get_headers(), timeout=15)
except:
return self.set_response()
try: try:
result = json.loads(resp.text) result = json.loads(resp.text)
except: except:
result = resp.text result = resp.text
self.response = result
if resp.ok: if resp.ok:
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
...@@ -277,7 +282,6 @@ class Vendor(VendorClass): ...@@ -277,7 +282,6 @@ class Vendor(VendorClass):
parsd = dict(code=500, parsd = dict(code=500,
message="Other Error") message="Other Error")
self.response = result
self.save_log('advice') self.save_log('advice')
return parsd return parsd
...@@ -431,6 +435,7 @@ class Vendor(VendorClass): ...@@ -431,6 +435,7 @@ class Vendor(VendorClass):
admin = int(self.vendor_produk.produk.harga*i) admin = int(self.vendor_produk.produk.harga*i)
rincian["admin"] = admin rincian["admin"] = admin
result["subtotal"] = int(harga_pokok) + admin result["subtotal"] = int(harga_pokok) + admin
product_id = self.invoice_det.produk.id product_id = self.invoice_det.produk.id
if hasattr(self.invoice_det, "customer_id"): if hasattr(self.invoice_det, "customer_id"):
partner_id = self.invoice_det.customer_id partner_id = self.invoice_det.customer_id
......
...@@ -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!