Commit 457ffbc1 by Solo Group
2 parents 6d464ccb 31d093b9
...@@ -18,16 +18,13 @@ def build_request(typ, vendor_produk, partner_log=None): ...@@ -18,16 +18,13 @@ def build_request(typ, vendor_produk, partner_log=None):
# bill_no = values['destination'] # bill_no = values['destination']
# customer_id = 'customer_id' in values and values['customer_id'] or None # customer_id = 'customer_id' in values and values['customer_id'] or None
# cust_trx_id = 'cust_trx_id' in values and values['cust_trx_id'] or None # cust_trx_id = 'cust_trx_id' in values and values['cust_trx_id'] or None
pckgs = 'agratek.api.merchant.views' pckgs = 'agratek.api.merchant.views'
moduls = vendor_produk.modules.split('.') moduls = vendor_produk.modules.split('.')
if len(moduls) > 1: if len(moduls) > 1:
pckg = ".".join(moduls[:-1]) pckg = ".".join(moduls[:-1])
pckgs = ".".join([pckgs, pckg]) pckgs = ".".join([pckgs, pckg])
moduls = moduls[-1:] moduls = moduls[-1:]
modul = moduls[0] modul = moduls[0]
log.info("Module: %s Pckgs: %s" % (modul, pckgs)) log.info("Module: %s Pckgs: %s" % (modul, pckgs))
modul = '.' + modul modul = '.' + modul
modules = import_module(modul, pckgs) modules = import_module(modul, pckgs)
...@@ -43,8 +40,6 @@ def build_request(typ, vendor_produk, partner_log=None): ...@@ -43,8 +40,6 @@ def build_request(typ, vendor_produk, partner_log=None):
result["f_response"] = cls_module.response result["f_response"] = cls_module.response
result["f_result"] = cls_module.result result["f_result"] = cls_module.result
result["f_request"] = cls_module.request result["f_request"] = cls_module.request
else: else:
log.info("Module %s Not Found" % vendor_produk.modules) log.info("Module %s Not Found" % vendor_produk.modules)
data = dict(message='Fungsi %s tidak ada' % typ, data = dict(message='Fungsi %s tidak ada' % typ,
...@@ -82,10 +77,8 @@ def get_vendor_produk(produk_kd, vendor_kd=None, harga=None): ...@@ -82,10 +77,8 @@ def get_vendor_produk(produk_kd, vendor_kd=None, harga=None):
# data vendor parameter secara default mengambil dari yang statusnya=1 # data vendor parameter secara default mengambil dari yang statusnya=1
if vendor_kd: if vendor_kd:
qry = qry.filter(Partner.kode == vendor_kd) qry = qry.filter(Partner.kode == vendor_kd)
else: else:
qry = qry.filter(PartnerProduk.status == 1) qry = qry.filter(PartnerProduk.status == 1)
row = qry.first() row = qry.first()
return row return row
...@@ -102,7 +95,6 @@ def inquiry(request, data, **kwargs): ...@@ -102,7 +95,6 @@ def inquiry(request, data, **kwargs):
} }
:param token: :param token:
user_token user_token
:return: :return:
{ {
"data": [{ "data": [{
...@@ -130,7 +122,6 @@ def inquiry(request, data, **kwargs): ...@@ -130,7 +122,6 @@ def inquiry(request, data, **kwargs):
customer = Partner.query_user(user).filter(Partner.is_customer == 1).first() customer = Partner.query_user(user).filter(Partner.is_customer == 1).first()
if not customer: if not customer:
raise JsonRpcCustomerNotFoundError() raise JsonRpcCustomerNotFoundError()
r_data = [] r_data = []
for prod in data: for prod in data:
# prods = "produk" in dat and dat["produk"] or None # prods = "produk" in dat and dat["produk"] or None
...@@ -144,7 +135,6 @@ def inquiry(request, data, **kwargs): ...@@ -144,7 +135,6 @@ def inquiry(request, data, **kwargs):
if not vendor_produk: if not vendor_produk:
raise JsonRpcProdukNotFoundError( raise JsonRpcProdukNotFoundError(
message="Produk %s tidak ditemukan" % produk_kd) message="Produk %s tidak ditemukan" % produk_kd)
log.info("Vendor %s Produk %s Module %s" % (vendor_produk.partner.kode, log.info("Vendor %s Produk %s Module %s" % (vendor_produk.partner.kode,
vendor_produk.produk.kode, vendor_produk.produk.kode,
vendor_produk.modules)) vendor_produk.modules))
...@@ -155,14 +145,12 @@ def inquiry(request, data, **kwargs): ...@@ -155,14 +145,12 @@ def inquiry(request, data, **kwargs):
result_code = "code" in result["f_result"] and result["f_result"]["code"] or None result_code = "code" in result["f_result"] and result["f_result"]["code"] or None
if result_code: if result_code:
raise JsonRpcError(message=result["f_result"]["message"]) raise JsonRpcError(message=result["f_result"]["message"])
if result["f_result"]["code"] == 0: if result["f_result"]["code"] == 0:
prod.update(result["f_result"]) prod.update(result["f_result"])
else: else:
prod.update(dict(status="FAILED", prod.update(dict(status="FAILED",
message=result["message"])) message=result["message"]))
r_data.append(prod) r_data.append(prod)
data = is_list and r_data or r_data[0] data = is_list and r_data or r_data[0]
return data return data
...@@ -187,7 +175,6 @@ def purchase(request, data, **kwargs): ...@@ -187,7 +175,6 @@ def purchase(request, data, **kwargs):
:return: :return:
{ {
product_nm:string, product_nm:string,
denom: string, denom: string,
id_pel:string id_pel:string
inv_no: string optional inv_no: string optional
...@@ -198,18 +185,15 @@ def purchase(request, data, **kwargs): ...@@ -198,18 +185,15 @@ def purchase(request, data, **kwargs):
total:integer, total:integer,
status:success/pending/failed status:success/pending/failed
""" """
user = auth_from_rpc(request) user = auth_from_rpc(request)
i = 0 i = 0
if not data: if not data:
raise JsonRpcParameterNotFound raise JsonRpcParameterNotFound
is_list = type(data) == list is_list = type(data) == list
data = is_list and data or [data] data = is_list and data or [data]
customer = Partner.query_user(user).first() customer = Partner.query_user(user).first()
if not customer: if not customer:
raise JsonRpcCustomerNotFoundError raise JsonRpcCustomerNotFoundError
r_data = [] r_data = []
log.info("%s Payment Request: %s" % (customer.kode, data)) log.info("%s Payment Request: %s" % (customer.kode, data))
for dat in data: for dat in data:
...@@ -259,14 +243,11 @@ def purchase(request, data, **kwargs): ...@@ -259,14 +243,11 @@ def purchase(request, data, **kwargs):
# total += vendor_produk.produk.harga # total += vendor_produk.produk.harga
# elif vendor_produk.produk.harga > total: # elif vendor_produk.produk.harga > total:
# total = vendor_produk.produk.harga # total = vendor_produk.produk.harga
# prod.update(dict(total=total)) # prod.update(dict(total=total))
r_prod.append(prod) r_prod.append(prod)
ar_invoice.payment["response"] = r_prod ar_invoice.payment["response"] = r_prod
dat["produk"] = r_prod dat["produk"] = r_prod
r_data.append(dat) r_data.append(dat)
data = is_list and r_data or r_data[0] data = is_list and r_data or r_data[0]
log.info("%s Payment Response: %s " % (customer.kode, data)) log.info("%s Payment Response: %s " % (customer.kode, data))
return data return data
...@@ -288,7 +269,6 @@ def advice(request, data): ...@@ -288,7 +269,6 @@ def advice(request, data):
:return: :return:
{ {
product_nm:string, product_nm:string,
denom: string, denom: string,
id_pel:string id_pel:string
inv_no: string optional inv_no: string optional
...@@ -299,7 +279,6 @@ def advice(request, data): ...@@ -299,7 +279,6 @@ def advice(request, data):
total:integer, total:integer,
status:success/pending/failed status:success/pending/failed
""" """
user = auth_from_rpc(request) user = auth_from_rpc(request)
i = 0 i = 0
is_list = type(data) == list is_list = type(data) == list
...@@ -307,7 +286,6 @@ def advice(request, data): ...@@ -307,7 +286,6 @@ def advice(request, data):
customer = Partner.query_user(user).first() customer = Partner.query_user(user).first()
if not customer: if not customer:
raise JsonRpcCustomerNotFoundError raise JsonRpcCustomerNotFoundError
r_data = [] r_data = []
for dat in data: for dat in data:
if "invoice_no" not in dat: if "invoice_no" not in dat:
...@@ -350,10 +328,8 @@ def advice(request, data): ...@@ -350,10 +328,8 @@ def advice(request, data):
for p in qry.all(): for p in qry.all():
produk = Produk.query(). \ produk = Produk.query(). \
filter(Produk.id == p.produk_id).first() filter(Produk.id == p.produk_id).first()
status = p.status == -1 and 'PENDING' or p.status == 1 and 'SUCCESS' \ status = p.status == -1 and 'PENDING' or p.status == 1 and 'SUCCESS' \
or p.status == -2 and 'PENDING' or "FAILED" or p.status == -2 and 'PENDING' or "FAILED"
r_prod.append(dict(denom=produk.kode, r_prod.append(dict(denom=produk.kode,
id_pel=p.id_pel, id_pel=p.id_pel,
subtotal=(p.amt_sell or 0) + (p.discount or 0), subtotal=(p.amt_sell or 0) + (p.discount or 0),
...@@ -362,14 +338,11 @@ def advice(request, data): ...@@ -362,14 +338,11 @@ def advice(request, data):
status=status, status=status,
serial_number=p.serial_number or "", ) serial_number=p.serial_number or "", )
) )
dat["produk"] = r_prod dat["produk"] = r_prod
r_data.append(dat) r_data.append(dat)
i += 1 i += 1
data = is_list and r_data or r_data[0] data = is_list and r_data or r_data[0]
return data return data
# #
# @jsonrpc_method(method='payment', endpoint='api-merchant') # @jsonrpc_method(method='payment', endpoint='api-merchant')
# def payment(request, token, data): # def payment(request, token, data):
......
import socket
import hashlib
import sys
import requests
py3 = sys.version >= '3'
from urllib.parse import urlparse, urlencode
import http.client
if py3:
pass
else:
import urlparse
import httplib
# import urllib
import json
# global iMid
global merchantKey
# iMid = 'IONPAYTEST'
# merchantKey = '33F49GnCMS1mFYlGXisbUDzVf2ATWCl9k3R++d5hDd3Frmuos/XLx8XhXpe+LDYAbpGKZYSwtlyyLOtS/8aD7A=='
timeout_connect = 30
timeout_read = 25
requestData = {}
requestDataJson = {}
resultData = {}
def set(name, value):
requestData[name] = value
return requestData
def merchantToken():
if not requestData['timeStamp']:
sys.exit("Cannot set Merchant Token, please setting timeStamp")
elif not requestData['referenceNo']:
sys.exit("Cannot set Merchant Token, please setting referenceNo")
elif not requestData['amt']:
sys.exit("Cannot set Merchant Token, please setting amt")
else:
mercToken = requestData['timeStamp'] + requestData["iMid"] + \
requestData['referenceNo'] + requestData['amt'] + \
merchantKey
token = hashlib.sha256(mercToken.encode('ascii')).hexdigest()
return token
def merchantTokenCancel():
if not requestData['timeStamp']:
sys.exit("Cannot set Merchant Token, please setting timeStamp")
elif not requestData['tXid']:
sys.exit("Cannot set Merchant Token, please setting tXid")
elif not requestData['amt']:
sys.exit("Cannot set Merchant Token, please setting amt")
else:
mercToken = requestData['timeStamp'] + requestData["iMid"] + requestData['tXid'] + requestData['amt'] + merchantKey
token = hashlib.sha256(mercToken.encode('ascii')).hexdigest()
return token
def merchantTokenVacctInquiry():
if not requestData['vacctNo']:
sys.exit("Cannot set Merchant Token, please setting vacctNo")
elif not requestData['startDt']:
sys.exit("Cannot set Merchant Token, please setting startDt")
else:
mercToken = requestData["iMid"] + requestData['vacctNo'] + requestData['startDt'] + merchantKey
token = hashlib.sha256(mercToken.encode('ascii')).hexdigest()
return token
def merchantTokenCustomerIdInquiry():
if not requestData['customerId']:
sys.exit("Cannot set Merchant Token, please setting customerId")
elif not requestData['startDt']:
sys.exit("Cannot set Merchant Token, please setting startDt")
else:
mercToken = requestData["iMid"] + requestData['customerId'] + requestData['startDt'] + merchantKey
token = hashlib.sha256(mercToken.encode('ascii')).hexdigest()
return token
def userIp():
return socket.gethostbyname(socket.gethostname())
def niceRegister():
requestDataJson = json.dumps(requestData)
apiUrl = "https://api.nicepay.co.id/nicepay/direct/v2/registration"
resultData = sendDataJson(requestDataJson, apiUrl)
return resultData
def niceInquiry():
requestDataJson = json.dumps(requestData)
apiUrl = "https://api.nicepay.co.id/nicepay/direct/v2/inquiry"
resultData = sendDataJson(requestDataJson, apiUrl)
return resultData
def niceCancel():
requestDataJson = json.dumps(requestData)
apiUrl = "https://api.nicepay.co.id/nicepay/direct/v2/cancel"
resultData = sendDataJson(requestDataJson, apiUrl)
return resultData
def nicePayment():
apiUrl = "https://api.nicepay.co.id/nicepay/direct/v2/payment"
resultData = sendData(requestData, apiUrl)
return resultData
def niceVacctInquiry():
apiUrl = "https://api.nicepay.co.id/nicepay/api/vacctInquiry.do"
resultData = sendData(requestData, apiUrl)
return resultData
def niceCustomerIdInquiry():
apiUrl = "https://api.nicepay.co.id/nicepay/api/vacctCustomerIdInquiry.do"
resultData = sendData(requestData, apiUrl)
return resultData
def niceInstallmentInfo():
requestDataJson = json.dumps(requestData)
apiUrl = "https://api.nicepay.co.id/nicepay/direct/v2/instInfoInquiry"
resp = sendDataJson(requestDataJson, apiUrl)
resultData = sendDataJson(requestDataJson, apiUrl)
return resultData
def sendDataJson(data, apiUrl):
requestData = data
host = urlparse(apiUrl)
hostUrl = host.netloc
hostPath = host.path
headers = {"Content-type": "application/json"}
# if py3:
# conn = http.client.HTTPSConnection(hostUrl,timeout=timeout_connect)
# else:
# conn = httplib.HTTPSConnection(hostUrl, 443, 0, 0, 0, timeout_connect)
# conn.request("POST", hostPath, requestData, headers)
# readData = conn.getresponse(timeout_read)
# resultData = readData.read()
resp = requests.post(apiUrl, headers=headers, data=data)
return resp.text
def sendData(data, apiUrl):
host = urlparse(apiUrl)
hostUrl = host.netloc
hostPath = host.path
params = urlencode(data)
headers = {"Content-type": "application/x-www-form-urlencoded"}
# if py3:
# conn = http.client.HTTPSConnection(hostUrl,timeout=timeout_connect)
# else:
# conn = httplib.HTTPSConnection(hostUrl, 443, 0, 0, 0, timeout_connect)
#
# conn.request("POST", hostPath, params, headers)
# readData = conn.getresponse(timeout_read)
# resultData = readData.read()
resp = requests.post(apiUrl, headers=headers, data=data)
return resp.text
...@@ -37,6 +37,7 @@ class VendorClass(object): ...@@ -37,6 +37,7 @@ class VendorClass(object):
:param cust_trx: :param cust_trx:
:param row: :param row:
""" """
self.settings = get_settings()
self.vendor_produk = vendor_produk self.vendor_produk = vendor_produk
self.invoice_det = invoice_det self.invoice_det = invoice_det
self.v_produk_kd = vendor_produk.kode self.v_produk_kd = vendor_produk.kode
...@@ -53,7 +54,7 @@ class VendorClass(object): ...@@ -53,7 +54,7 @@ class VendorClass(object):
self.amt_buy = 0 self.amt_buy = 0
self.amt_sell = 0 self.amt_sell = 0
self.discount = 0 self.discount = 0
def set_response(self, data=None, message=None, code=999, typ="inquiry"): def set_response(self, data=None, message=None, code=999, typ="inquiry"):
if not data and message: if not data and message:
message = message and message or "No Response From Biller" message = message and message or "No Response From Biller"
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!