Commit c1ebab42 by Solo Group

penambahan cek sukses dan Noref+1

1 parent 78053f22
import base64 import logging
import json
import re import re
from time import sleep
from datetime import datetime from datetime import datetime
import requests
from opensipkd.base import get_settings
from opensipkd.base.tools import get_random_string, get_random_number
from opensipkd.base.tools.api import JsonRpcBillAllreadyPaidError, JsonRpcBillNotFoundError
from opensipkd.pasar.models import PartnerProduk, H2hArInvoiceDet
from pyramid_rpc.jsonrpc import JsonRpcError
from ..vendor import VendorClass
import logging
log = logging.getLogger(__name__)
import urllib3 import urllib3
from opensipkd.base.tools import get_random_number
from .pajak import Vendor as VendorClass
log = logging.getLogger(__name__)
urllib3.disable_warnings() urllib3.disable_warnings()
""" """
PJDL
http://103.66.86.115:8989/interface-tangerang-1.0.0/pjdlJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/pjdlJson/pay
PBB
http://103.66.86.115:8989/interface-tangerang-1.0.0/pbbJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/pbbJson/pay
BPHTB BPHTB
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/inq http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
""" """
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
settings = get_settings()
self.mid = 'tangselpjk_mid' in settings and settings['tangselpjk_mid'] or None
self.key = 'tangselpjk_key' in settings and settings['tangselpjk_key'] or None
self.url = 'tangselpjk_url' in settings and settings['tangselpjk_url'] or None
key = ":".join([self.mid, self.key]).encode()
self.auth = base64.b64encode(key).decode()
self.inq_url = '{0}/bphtbJson/inq'.format(self.url) self.inq_url = '{0}/bphtbJson/inq'.format(self.url)
self.pay_url = '{0}/bphtbJson/pay'.format(self.url) self.pay_url = '{0}/bphtbJson/pay'.format(self.url)
def get_headers(self):
return {'Content-Type': 'application/json'}
def get_url(self, url=None):
return url and self.url + url or self.url
def inquiry_field(self): def inquiry_field(self):
kini = datetime.now() kini = datetime.now()
date_settlement = kini.strftime("%m%d") date_settlement = kini.strftime("%m%d")
...@@ -75,11 +39,6 @@ class Vendor(VendorClass): ...@@ -75,11 +39,6 @@ class Vendor(VendorClass):
} }
def inquiry_error(self, resp):
code = int(resp["responseCode"])
message = resp["responseDesc"]
return dict(code=code, message=message)
def response_field(self): def response_field(self):
resp = self.response resp = self.response
if resp["responseCode"] == "00": if resp["responseCode"] == "00":
...@@ -90,52 +49,6 @@ class Vendor(VendorClass): ...@@ -90,52 +49,6 @@ class Vendor(VendorClass):
result = self.get_price(sub_total) result = self.get_price(sub_total)
admin = int(self.vendor_produk.produk.harga) admin = int(self.vendor_produk.produk.harga)
# todo: cek kembali harga apakah wajar atau tidak
# adm_biller = int(resp["diskon"] or '0')
# jika harga admin biller > dari admin
# if self.amt_buy < sub_total+adm_biller:
# raise
# if admin < adm_biller:
# admin = adm_biller
""""
"nilaiPasarObjekPajak": "000000002780000",
"jumlahBPHTBYangDibayar": "000000000650000",
"luasTanah": "000000139",
"terminalLoc": "Tangerang Selatan",
"nPWP": "0_.___.___._-__",
"rTWajibPajak": "009",
"accountCurrency": "360",
"namaNotaris": "CAMAT CITANGKIL",
"kelurahanObjekPajak": "TAMAN BARU",
"terminalId": "02W001",
"namaOperatorBank": "",
"alamatWajibPajak": "JL. PRAMUKA ASRI IV BLOK CII",
"dateSettlement": "0825",
"nop": "367503000700702270",
"responseCode": "00",
"jenisSetoran": "",
"terminalName": "Mobile POS Tangsel",
"kodePosWajibPajak": "0____",
"noRef": "859308",
"iDOperatorBank": "",
"namaBank": "",
"merchantType": "6014",
"tahunPajak": "2019",
"alamatObjekPajak": "KP SONDOL",
"kecamatanObjekPajak": "CITANGKIL",
"kelurahanWajibPajak": "RAWAASRI",
"namaWajibPajak": "INA NURJANAH",
"nomerPermohonan": "0000001",
"namaKCPBank": "",
"nomorTransaksi": "",
"luasBangunan": "000000000",
"kotaWajibPajak": "KOTA CILEGON",
"responseDesc": "SUCCESS",
"jenisPerolehanHak": "01",
"denda": "000000000000000",
"kecamatanWajibPajak": "CEMPAKA PUTIH",
"rWWajibPajak": "005"
"""
rincian = dict( rincian = dict(
pokok=pokok, pokok=pokok,
denda=denda, denda=denda,
...@@ -165,108 +78,9 @@ class Vendor(VendorClass): ...@@ -165,108 +78,9 @@ class Vendor(VendorClass):
# = resp["namaKCPBank": "", # = resp["namaKCPBank": "",
# = resp["nomorTransaksi": "", # = resp["nomorTransaksi": "",
# = resp["responseDesc": "SUCCESS", # = resp["responseDesc": "SUCCESS",
) )
result.update(dict(rincian=rincian)) result.update(dict(rincian=rincian))
return result return result
else: else:
return self.inquiry_error(resp) return self.inquiry_error(resp)
\ No newline at end of file \ No newline at end of file
def _inquiry(self):
if not self.v_produk_kd or not self.id_pel:
return
self.request = self.inquiry_field()
log.info("Inquiry Request: url: {} params {}".format(self.inq_url, self.request))
self.save_log("inquiry")
params = json.dumps(self.request)
log.info(params)
try:
resp = requests.post(self.inq_url, data=params,
verify=False,
headers=self.get_headers(),
timeout=20)
except:
log.info("Biller Error")
return
if not resp:
log.info("No Response From Biller")
return
try:
result = json.loads(resp.text)
except:
result = resp.text
self.response = result
self.save_log("inquiry")
log.info("Inquiry Response: %s" % self.response)
return resp
def inquiry(self):
resp = self._inquiry()
if resp is None:
return self.set_failed(typ="inquiry")
if resp.status_code != 200:
return self.set_failed(typ="inquiry")
if "responseCode" not in self.response:
return self.set_failed(typ="inquiry")
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
parsd = self.response_field()
return self.set_success(parsd, typ="inquiry")
def payment(self):
resp = self._inquiry()
if not resp:
return self.set_failed()
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
self.response["noRef"] = str(int(self.response["noRef"]) + 1)
params = json.dumps(self.response)
log.info("Payment url: {} params: {}".format(self.pay_url, params))
try:
resp = requests.post(self.pay_url, data=params, verify=False,
headers=self.get_headers(), timeout=15)
except Exception as e:
self.response = e
resp = None
if resp is None:
self.status = 0
return self.set_pending()
if resp.status_code != 200:
result = resp.text
self.response = result
log.info("Payment Response: %s" % self.response)
return self.set_pending()
try:
result = json.loads(resp.text)
self.response = result
log.info("Payment Response: %s" % self.response)
except:
self.response = resp.text
log.info("Payment Response: %s" % self.response)
return self.set_pending()
parsd = self.response_field()
self.serial_number = 'ntb' in result and result["ntb"].strip() \
or self.serial_number
parsd["rincian"].update(dict(
ntb=self.serial_number,
ntp='ntp' in result and result["ntp"].strip() or ''))
return self.set_success(parsd)
def advice(self):
raise JsonRpcError(message="Not Implemented")
import base64
import json
import logging
import requests
from opensipkd.base import get_settings
from pyramid_rpc.jsonrpc import JsonRpcError
from ..vendor import VendorClass
import urllib3
log = logging.getLogger(__name__)
urllib3.disable_warnings()
"""
PJDL
http://103.66.86.115:8989/interface-tangerang-1.0.0/pjdlJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/pjdlJson/pay
PBB
http://103.66.86.115:8989/interface-tangerang-1.0.0/pbbJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/pbbJson/pay
BPHTB
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
"""
class Vendor(VendorClass):
def __init__(self, vendor_produk, invoice_det):
VendorClass.__init__(self, vendor_produk, invoice_det=invoice_det)
settings = get_settings()
self.mid = 'tangselpjk_mid' in settings and settings['tangselpjk_mid'] or None
self.key = 'tangselpjk_key' in settings and settings['tangselpjk_key'] or None
self.url = 'tangselpjk_url' in settings and settings['tangselpjk_url'] or None
key = ":".join([self.mid, self.key]).encode()
self.auth = base64.b64encode(key).decode()
self.inq_url = None
self.pay_url = None
def get_headers(self):
return {'Content-Type': 'application/json'}
def get_url(self, url=None):
return url and self.url + url or self.url
def inquiry_field(self):
#Overide Please
pass
def inquiry_error(self, resp):
code = int(resp["responseCode"])
message = resp["responseDesc"]
return self.set_response(message=message, code=code)
def response_field(self):
#Overide PLease
pass
def _inquiry(self):
if not self.v_produk_kd or not self.id_pel:
return
self.request = self.inquiry_field()
log.info("Inquiry Request: url: {} params {}".format(self.inq_url, self.request))
self.save_log("inquiry")
params = json.dumps(self.request)
try:
resp = requests.post(self.inq_url, data=params,
verify=False,
headers=self.get_headers(),
timeout=20)
except:
log.info("Biller Error")
return
if not resp:
log.info("No Response From Biller")
return
try:
result = json.loads(resp.text)
except:
result = resp.text
self.response = result
self.save_log("inquiry")
log.info("Inquiry Response: %s" % self.response)
return resp
def inquiry(self):
resp = self._inquiry()
if resp is None:
return self.set_failed(typ="inquiry")
if resp.status_code != 200:
return self.set_failed(typ="inquiry")
if "responseCode" not in self.response:
return self.set_failed(typ="inquiry")
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
parsd = self.response_field()
return self.set_success(parsd, typ="inquiry")
def payment(self):
resp = self._inquiry()
if not resp:
return self.set_failed()
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
self.response["noRef"] = str(int(self.response["noRef"]) + 1)
params = json.dumps(self.response)
log.info("Payment url: {} params: {}".format(self.pay_url, params))
try:
resp = requests.post(self.pay_url, data=params, verify=False,
headers=self.get_headers(), timeout=15)
except Exception as e:
self.response = e
resp = None
if resp is None:
self.status = 0
return self.set_pending()
if resp.status_code != 200:
result = resp.text
self.response = result
log.info("Payment Response: %s" % self.response)
return self.set_pending()
try:
result = json.loads(resp.text)
self.response = result
log.info("Payment Response: %s" % self.response)
except:
self.response = resp.text
log.info("Payment Response: %s" % self.response)
return self.set_pending()
parsd = self.response_field()
self.serial_number = 'ntb' in result and result["ntb"].strip() \
or self.serial_number
parsd["rincian"].update(dict(
ntb=self.serial_number,
ntp='ntp' in result and result["ntp"].strip() or ''))
return self.set_success(parsd)
def advice(self):
raise JsonRpcError(message="Not Implemented")
import base64
import json
import logging import logging
from datetime import datetime from datetime import datetime
import requests
import urllib3 import urllib3
from opensipkd.base import get_settings
from opensipkd.base.tools import get_random_number from opensipkd.base.tools import get_random_number
from opensipkd.base.tools.api import JsonRpcBillAllreadyPaidError, JsonRpcBillNotFoundError from .pajak import Vendor as VendorClass
from pyramid_rpc.jsonrpc import JsonRpcError
from ..vendor import VendorClass
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
urllib3.disable_warnings() urllib3.disable_warnings()
...@@ -17,22 +10,9 @@ urllib3.disable_warnings() ...@@ -17,22 +10,9 @@ urllib3.disable_warnings()
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
settings = get_settings()
self.mid = 'tangselpjk_mid' in settings and settings['tangselpjk_mid'] or ""
self.key = 'tangselpjk_key' in settings and settings['tangselpjk_key'] or ""
self.url = 'tangselpjk_url' in settings and settings['tangselpjk_url'] or ""
key = ":".join([self.mid, self.key]).encode()
self.auth = base64.b64encode(key).decode()
self.inq_url = '{0}/pbbJson/inq'.format(self.url) self.inq_url = '{0}/pbbJson/inq'.format(self.url)
self.pay_url = '{0}/pbbJson/pay'.format(self.url) self.pay_url = '{0}/pbbJson/pay'.format(self.url)
def get_headers(self):
return {'Content-Type': 'application/json'}
def get_url(self, url=None):
return url and self.url + url or self.url
def inquiry_field(self): def inquiry_field(self):
kini = datetime.now() kini = datetime.now()
date_settlement = kini.strftime("%m%d") date_settlement = kini.strftime("%m%d")
...@@ -53,11 +33,6 @@ class Vendor(VendorClass): ...@@ -53,11 +33,6 @@ class Vendor(VendorClass):
} }
def inquiry_error(self, resp):
code = int(resp["responseCode"])
message = resp["responseDesc"]
return dict(code=code, message=message)
def response_field(self): def response_field(self):
resp = self.response resp = self.response
if resp["responseCode"] == "00": if resp["responseCode"] == "00":
...@@ -99,116 +74,3 @@ class Vendor(VendorClass): ...@@ -99,116 +74,3 @@ class Vendor(VendorClass):
else: else:
return self.inquiry_error(resp) return self.inquiry_error(resp)
def _inquiry(self):
if not self.v_produk_kd or not self.id_pel:
return
# self.set_response(message='Parameter tidak lengkap')
self.request = self.inquiry_field()
log.info("Inquiry Request: url: {} params {}".format(self.inq_url, self.request))
self.save_log("inquiry")
params = json.dumps(self.request)
try:
resp = requests.post(self.inq_url, data=params,
verify=False,
headers=self.get_headers(),
timeout=20)
except Exception as e:
log.info("Error: {}".format(e))
self.response = e
return
if not resp:
msg = "No Response From Biller"
log.info(msg)
self.response = msg
return
try:
result = json.loads(resp.text)
except:
result = resp.text
self.response = result
self.save_log("inquiry")
log.info("Inquiry Response: %s" % self.response)
return resp
def inquiry(self):
resp = self._inquiry()
if resp is None:
return self.set_failed(typ="inquiry")
if resp.status_code != 200:
return self.set_failed(typ="inquiry")
if "responseCode" not in self.response:
return self.set_failed(typ="inquiry")
if self.response["responseCode"] != "00":
self.inquiry_error(self.response)
return self.set_failed(typ="inquiry")
parsd = self.response_field()
return self.set_success(parsd, typ="inquiry")
def payment(self):
resp = self._inquiry()
if resp is None or resp and resp.status_code != 200:
return self.set_pending()
if "responseCode" not in self.response :
return self.set_pending()
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
# ditambahkan disini karena minta noRefnya Berbeda
self.response["noRef"] = str(int(self.response["noRef"]) + 1)
params = json.dumps(self.response)
log.info("Payment Request url: {} params: {}".format(self.pay_url, params))
try:
resp = requests.post(self.pay_url, data=params, verify=False,
headers=self.get_headers(), timeout=15)
except Exception as e:
self.response = e
resp = None
if resp is None:
self.status = 0
return self.set_pending()
if resp.status_code != 200:
result = resp.text
self.response = result
log.info("Payment Response: %s" % self.response)
return self.set_pending()
try:
result = json.loads(resp.text)
except:
result = resp.text
self.response = result
log.info("Payment Response: %s" % self.response)
self.status = 0
return self.set_pending()
self.response = result
log.info("Payment Response: %s" % self.response)
if "responseCode" not in self.response \
or self.response["responseCode"] != "00":
self.inquiry_error(self.response)
return self.set_failed()
parsd = self.response_field()
self.status = 1 # sukses
self.serial_number = 'ntb' in result and result["ntb"].strip() \
or self.serial_number
parsd["rincian"].update(dict(
ntb=self.serial_number,
ntp='ntp' in result and result["ntp"].strip() or ''))
return self.set_success(parsd)
def advice(self):
raise JsonRpcError(message="Not Implemented")
import base64
import json
import re
from time import sleep
from datetime import datetime
import requests
from opensipkd.base import get_settings
from opensipkd.base.tools import get_random_string, get_random_number
from opensipkd.base.tools.api import JsonRpcBillAllreadyPaidError, JsonRpcBillNotFoundError
from opensipkd.pasar.models import PartnerProduk, H2hArInvoiceDet
from pyramid_rpc.jsonrpc import JsonRpcError
from ..vendor import VendorClass
import logging import logging
from datetime import datetime
log = logging.getLogger(__name__) from opensipkd.base.tools import get_random_number
from .pajak import Vendor as VendorClass
import urllib3 import urllib3
log = logging.getLogger(__name__)
urllib3.disable_warnings() urllib3.disable_warnings()
""" """
...@@ -39,22 +27,9 @@ http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay ...@@ -39,22 +27,9 @@ http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
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
settings = get_settings()
self.mid = 'tangselpjk_mid' in settings and settings['tangselpjk_mid'] or None
self.key = 'tangselpjk_key' in settings and settings['tangselpjk_key'] or None
self.url = 'tangselpjk_url' in settings and settings['tangselpjk_url'] or None
key = ":".join([self.mid, self.key]).encode()
self.auth = base64.b64encode(key).decode()
self.inq_url = '{0}/pjdlJson/inq'.format(self.url) self.inq_url = '{0}/pjdlJson/inq'.format(self.url)
self.pay_url = '{0}/pjdlJson/pay'.format(self.url) self.pay_url = '{0}/pjdlJson/pay'.format(self.url)
def get_headers(self):
return {'Content-Type': 'application/json'}
def get_url(self, url=None):
return url and self.url + url or self.url
def inquiry_field(self): def inquiry_field(self):
kini = datetime.now() kini = datetime.now()
date_settlement = kini.strftime("%m%d") date_settlement = kini.strftime("%m%d")
...@@ -73,17 +48,6 @@ class Vendor(VendorClass): ...@@ -73,17 +48,6 @@ class Vendor(VendorClass):
} }
def inquiry_error(self, resp):
code = int(resp["responseCode"])
message = resp["responseDesc"]
return dict(code=code, message=message)
# if code == 54:
# raise JsonRpcBillAllreadyPaidError()
# elif code == 55:
# raise JsonRpcBillNotFoundError()
# else:
# raise JsonRpcError(code=code, message=message)
def response_field(self): def response_field(self):
resp = self.response resp = self.response
if resp["responseCode"] == "00": if resp["responseCode"] == "00":
...@@ -116,108 +80,3 @@ class Vendor(VendorClass): ...@@ -116,108 +80,3 @@ class Vendor(VendorClass):
else: else:
return self.inquiry_error(resp) return self.inquiry_error(resp)
def _inquiry(self):
if not self.v_produk_kd or not self.id_pel:
return
self.request = self.inquiry_field()
log.info("Inquiry Request: url: {} params {}".format(self.inq_url, self.request))
self.save_log("inquiry")
params = json.dumps(self.request)
log.info(params)
try:
resp = requests.post(self.inq_url, data=params,
verify=False,
headers=self.get_headers(),
timeout=20)
except Exception as e:
self.response = e
log.info("Biller Error: {}".format(e))
return
if not resp:
msg = "No Response From Biller"
log.info(msg)
self.response = msg
return
try:
result = json.loads(resp.text)
except:
result = resp.text
self.response = result
log.info("Inquiry Response: %s" % self.response)
return
self.response = result
self.save_log("inquiry")
log.info("Inquiry Response: %s" % self.response)
return resp
def inquiry(self):
resp = self._inquiry()
if resp is None:
return self.set_failed(typ="inquiry")
if resp.status_code != 200:
return self.set_failed(typ="inquiry")
if "responseCode" not in self.response:
return self.set_failed(typ="inquiry")
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
parsd = self.response_field()
return self.set_success(parsd, typ="inquiry")
def payment(self):
resp = self._inquiry()
if not resp:
return self.set_failed()
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
self.response["noRef"] = str(int(self.response["noRef"]) + 1)
params = json.dumps(self.response)
log.info("Payment url: {} params: {}".format(self.pay_url, params))
try:
resp = requests.post(self.pay_url, data=params, verify=False,
headers=self.get_headers(), timeout=15)
except Exception as e:
self.response = e
resp = None
if resp is None:
return self.set_pending()
if resp.status_code != 200:
self.response = resp.text
log.info("Payment Response: %s" % self.response)
return self.set_pending()
try:
result = json.loads(resp.text)
except:
result = resp.text
self.response = result
log.info("Payment Response: %s" % self.response)
return self.set_pending()
self.response = result
log.info("Payment Response: %s" % self.response)
if self.response["responseCode"] != "00":
return self.inquiry_error(self.response)
parsd = self.response_field()
self.serial_number = 'ntb' in result and result["ntb"].strip() \
or self.serial_number
parsd["rincian"].update(dict(
ntb=self.serial_number,
ntp='ntp' in result and result["ntp"].strip() or ''))
return self.set_success(parsd)
def advice(self):
raise JsonRpcError(message="Not Implemented")
\ No newline at end of file \ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!