Commit 6fad9750 by Solo Group

cancel

1 parent 2bdb8632
...@@ -400,7 +400,10 @@ def cancel_tx(dat): ...@@ -400,7 +400,10 @@ def cancel_tx(dat):
dat["message"] = "Data Tagihan {} tidak ditemukan".format(inv_no) dat["message"] = "Data Tagihan {} tidak ditemukan".format(inv_no)
return dat return dat
payment = inv.payment["response"] payment = inv.notify["request"]
if not payment:
payment = inv.payment["response"]
if not payment: if not payment:
dat["status"] = "FAILED" dat["status"] = "FAILED"
dat["message"] = "Data Pembayaran {} tidak ditemukan".format(inv_no) dat["message"] = "Data Pembayaran {} tidak ditemukan".format(inv_no)
......
...@@ -21,8 +21,6 @@ class Vendor(VendorClass): # VendorClass ...@@ -21,8 +21,6 @@ class Vendor(VendorClass): # VendorClass
self.bank_cd, self.pay_method = self.v_produk_kd.split('-') self.bank_cd, self.pay_method = self.v_produk_kd.split('-')
self.mid = 'np_mid' in settings and settings['np_mid'] or None self.mid = 'np_mid' in settings and settings['np_mid'] or None
# khusus payloan, imidnya tersendiri. jika tdk diset, maka disamakan dgn yg lain
# tambahkan setting np_loan_mid di ini file
if self.pay_method == '06' and 'np_loan_mid' in settings and settings['np_loan_mid']: if self.pay_method == '06' and 'np_loan_mid' in settings and settings['np_loan_mid']:
self.mid = settings['np_load_mid'] self.mid = settings['np_load_mid']
...@@ -45,36 +43,19 @@ class Vendor(VendorClass): # VendorClass ...@@ -45,36 +43,19 @@ class Vendor(VendorClass): # VendorClass
self.cust_kd = customer.kode self.cust_kd = customer.kode
self.cust_inv_no = self.invoice_det.cust_inv_no self.cust_inv_no = self.invoice_det.cust_inv_no
if self.pay_method == "02" and is_devel(): # if self.pay_method == "02" and is_devel():
# self.mid = "VACTFOPEND" # sama dgn yang lain # # self.mid = "VACTFOPEND" # sama dgn yang lain
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()
self.va_typ = None self.va_typ = None
self.reccuring = False self.reccuring = False
self.amt = str(self.invoice_det.amt_sell) self.amt = str(self.invoice_det.amt_sell)
# setMandatoryParameter
# def request_payment(self, response):
# Nicepay.requestData={}
# Nicepay.set('timeStamp', self.invoice_det.time_stamp)
# Nicepay.set('referenceNo', self.cust_inv_no)
# Nicepay.set('tXid', response["tXid"])
# Nicepay.set('cardNo', self.invoice_det.card_no)
# Nicepay.set('cardExpYymm', self.invoice_det.card_exp) # format Yymm '2012'
# Nicepay.set('cardCvv', self.invoice_det.card_cvv)
# Nicepay.set('recurringToken', '')
# Nicepay.set('preauthToken', '')
# Nicepay.set('clickPayNo', '')
# Nicepay.set('dataField3', '')
# Nicepay.set('clickPayToken', '')
# Nicepay.set('callBackUrl', self.callback_url)
# result = Nicepay.nicePayment()
# return result
def set_static_params(self): def set_static_params(self):
if not self.cust_inv_no: if not self.cust_inv_no:
return return
Nicepay.set('timeStamp', self.invoice_det.inv_time_stamp) # Nicepay.set('timeStamp', self.invoice_det.inv_time_stamp) #
Nicepay.set('iMid', self.mid) Nicepay.set('iMid', self.mid)
Nicepay.set('referenceNo', self.cust_inv_no) Nicepay.set('referenceNo', self.cust_inv_no)
...@@ -86,6 +67,7 @@ class Vendor(VendorClass): # VendorClass ...@@ -86,6 +67,7 @@ class Vendor(VendorClass): # VendorClass
def set_billing_param(self): def set_billing_param(self):
if not self.invoice_det: if not self.invoice_det:
return return
Nicepay.set('payMethod', self.pay_method) Nicepay.set('payMethod', self.pay_method)
Nicepay.set('currency', 'IDR') Nicepay.set('currency', 'IDR')
Nicepay.set('userIP', self.invoice_det.inv_cust_ip) Nicepay.set('userIP', self.invoice_det.inv_cust_ip)
...@@ -121,26 +103,9 @@ class Vendor(VendorClass): # VendorClass ...@@ -121,26 +103,9 @@ class Vendor(VendorClass): # VendorClass
Nicepay.set('deliveryState', self.invoice_det.delivery_state) Nicepay.set('deliveryState', self.invoice_det.delivery_state)
Nicepay.set('deliveryPostCd', self.invoice_det.delivery_pos) Nicepay.set('deliveryPostCd', self.invoice_det.delivery_pos)
Nicepay.set('deliveryCountry', self.invoice_det.delivery_country) Nicepay.set('deliveryCountry', self.invoice_det.delivery_country)
# Nicepay.set('deliveryEmail', self.invoice_det.delivery_email)
# print('>>> INVOICE DET:', self.invoice_det.vat, type(self.invoice_det.vat),
# self.invoice_det.fee, type(self.invoice_det.fee),
# self.invoice_det.notax_amt, type(self.invoice_det.notax_amt))
Nicepay.set('reqClientVer', '') Nicepay.set('reqClientVer', '')
Nicepay.set('reqDt', self.invoice_det.req_dt) # Format (YYYYMMDD) Nicepay.set('reqDt', self.invoice_det.req_dt) # Format (YYYYMMDD)
Nicepay.set('reqTm', self.invoice_det.req_tm) # Format (HHiiss) Nicepay.set('reqTm', self.invoice_det.req_tm) # Format (HHiiss)
# Nicepay.set('reqDt', '') # Format (YYYYMMDD)
# Nicepay.set('reqTm', '') # Format (HHiiss)
# Nicepay.set('instmntType', '')
# Nicepay.set('instmntMon', '')
# Nicepay.set('mRefNo', '')
# result dari nicepay
# Nicepay.set('tXid', '')
# Nicepay.set('transDt', '')
# Nicepay.set('transTm', '')
# Nicepay.set('payValidDt', '')
# Nicepay.set('payValidTm', '')
# Nicepay.set('recurrOpt', '')
def register(self): def register(self):
Nicepay.requestData = {} Nicepay.requestData = {}
...@@ -208,8 +173,8 @@ class Vendor(VendorClass): # VendorClass ...@@ -208,8 +173,8 @@ class Vendor(VendorClass): # VendorClass
# Process to nice pay register # Process to nice pay register
self.request = Nicepay.requestData self.request = Nicepay.requestData
np_request=self.request np_request = self.request
np_request["cartData"]=json.dumps(np_request["cartData"]) np_request["cartData"] = json.dumps(np_request["cartData"])
log.info("NP PRE REQUEST: {}".format(np_request)) log.info("NP PRE REQUEST: {}".format(np_request))
log.info("NP REQUEST: {}".format(json.dumps(np_request))) log.info("NP REQUEST: {}".format(json.dumps(np_request)))
...@@ -252,44 +217,6 @@ class Vendor(VendorClass): # VendorClass ...@@ -252,44 +217,6 @@ class Vendor(VendorClass): # VendorClass
self.invoice_det.trans_tm = response["transTm"] self.invoice_det.trans_tm = response["transTm"]
self.invoice_det.tx_id = tx_id self.invoice_det.tx_id = tx_id
self.vend_inv_no = response["tXid"] self.vend_inv_no = response["tXid"]
# if self.pay_method == "01":
# request_data = Nicepay.requestData
# settings = get_settings()
# call_back_url = settings['switcher_call_back_url']
# result.update(dict(
# time_stamp=request_data['timeStamp'],
# tx_id=self.invoice_det.tx_id,
# merchant_token=request_data['merchantToken'],
# call_back_url=call_back_url,
# ))
# todok result harus html
# settings = get_settings()
# form = """<!DOCTYPE html>
# <html lang="en-us">
# <head>
# <meta http-equiv="content-type" content="text/html; charset=utf-8">
# <title>Payment</title>
# </head>
# <body>
# <script>
# //document.write("Hello World!")
# </script>
# <noscript>Your browser does not support JavaScript!</noscript>
# </body>
# </html>
# """.format(
# url=settings["_host"],
# time_stamp=request_data['timeStamp'],
# tx_id=result['tx_id'],
# merchant_token=request_data['merchantToken'],
# card_no=self.invoice_det.card_no,
# card_exp=self.card_exp,
# card_cvv=self.card_cvv,
# card_holder_nm=self.card_name,
# call_back_url=call_back_url,
# )
# result['form'] = form
if self.pay_method == "02": if self.pay_method == "02":
result["va"] = dict( result["va"] = dict(
...@@ -308,16 +235,6 @@ class Vendor(VendorClass): # VendorClass ...@@ -308,16 +235,6 @@ class Vendor(VendorClass): # VendorClass
) )
self.invoice_det.card_no = response['payNo'] self.invoice_det.card_no = response['payNo']
# elif self.pay_method == "04":
# # clickpay
# result["receipt_code"]=response['receiptCode']
# elif self.pay_method == "05":
# # e-wallet
# result["receipt_code"]='receiptCode' in response and response['receiptCode'] or ''
# elif self.pay_method == "06":
# # akulaku
# pass
self.result = result self.result = result
self.save_log(typ="inquiry") self.save_log(typ="inquiry")
return dict(data=result) return dict(data=result)
...@@ -326,11 +243,6 @@ class Vendor(VendorClass): # VendorClass ...@@ -326,11 +243,6 @@ class Vendor(VendorClass): # VendorClass
Nicepay.requestData = {} Nicepay.requestData = {}
Nicepay.merchantKey = self.key Nicepay.merchantKey = self.key
self.set_static_params() self.set_static_params()
# Nicepay.set('referenceNo', self.invoice_det.cust_inv_no)
# Nicepay.set('amt', self.invoice_det.amt_sell)
# Nicepay.set('merchantToken', Nicepay.merchantToken())
# Nicepay.set('callBackUrl', self.callback_url)
# Nicepay.set('tXid', str(self.invoice_det.vend_inv_no) or '')
url = "{}/payment".format(self.url) url = "{}/payment".format(self.url)
if self.pay_method == '01': if self.pay_method == '01':
if not req_fields(data, ["card_no", "callback_url", "card_exp", if not req_fields(data, ["card_no", "callback_url", "card_exp",
...@@ -339,11 +251,6 @@ class Vendor(VendorClass): # VendorClass ...@@ -339,11 +251,6 @@ class Vendor(VendorClass): # VendorClass
self.invoice_det.card_no = data["card_no"] self.invoice_det.card_no = data["card_no"]
self.invoice_det.callback_url = data["callback_url"] self.invoice_det.callback_url = data["callback_url"]
flush_row(self.invoice_det) flush_row(self.invoice_det)
#
# Nicepay.set('cardNo', str(self.invoice_det.card_no) or '')
# Nicepay.set('cardExpYymm', str(data["card_exp"]) or '')
# Nicepay.set('cardCvv', str(data["card_cvv"]) or '')
# Nicepay.set('cardHolderNm', str(data["card_name"]) or '')
request_data = Nicepay.requestData request_data = Nicepay.requestData
script = """ script = """
function submit_form(){ function submit_form(){
...@@ -353,7 +260,7 @@ class Vendor(VendorClass): # VendorClass ...@@ -353,7 +260,7 @@ class Vendor(VendorClass): # VendorClass
submit_form(); submit_form();
}); });
""" """
#/api/merchant/payment # /api/merchant/payment
form = """ form = """
<form action="{url}" method="post" name="payment"> <form action="{url}" method="post" name="payment">
<input type="hidden" name="timeStamp" value="{time_stamp}"> <input type="hidden" name="timeStamp" value="{time_stamp}">
...@@ -457,14 +364,19 @@ class Vendor(VendorClass): # VendorClass ...@@ -457,14 +364,19 @@ class Vendor(VendorClass): # VendorClass
</script> </script>
<noscript>Your browser does not support JavaScript!</noscript> <noscript>Your browser does not support JavaScript!</noscript>
""".format( """ \
url=url, .format(url=url,
time_stamp=self.invoice_det.inv_time_stamp, time_stamp=self.invoice_det.inv_time_stamp,
tx_id=self.invoice_det.vend_inv_no, tx_id=self.invoice_det.vend_inv_no,
merchant_token=request_data['merchantToken'], merchant_token=request_data['merchantToken'],
call_back_url=self.callback_url, call_back_url=self.callback_url,
script=script script=script
) )
else:
form = """
Payment Not Supported
"""
self.request = data self.request = data
self.save_log("payment") self.save_log("payment")
return dict(form=form) return dict(form=form)
...@@ -491,7 +403,7 @@ class Vendor(VendorClass): # VendorClass ...@@ -491,7 +403,7 @@ class Vendor(VendorClass): # VendorClass
self.save_log("payment") self.save_log("payment")
for r in result: for r in result:
if r and type(result[r])==dict: if r and type(result[r]) == dict:
rs = result[r] rs = result[r]
for s in rs: for s in rs:
f += '<input type="hidden" name="{k}" value="{v}">'.format(k=s, v=rs[s]) f += '<input type="hidden" name="{k}" value="{v}">'.format(k=s, v=rs[s])
...@@ -508,10 +420,10 @@ class Vendor(VendorClass): # VendorClass ...@@ -508,10 +420,10 @@ class Vendor(VendorClass): # VendorClass
</script> </script>
<noscript>Your browser does not support JavaScript!</noscript> <noscript>Your browser does not support JavaScript!</noscript>
""".format( """.format(
url=self.invoice_det.callback_url, url=self.invoice_det.callback_url,
script=script, script=script,
f=f f=f
) )
return dict(form=form) return dict(form=form)
def advice(self): def advice(self):
...@@ -527,70 +439,39 @@ class Vendor(VendorClass): # VendorClass ...@@ -527,70 +439,39 @@ class Vendor(VendorClass): # VendorClass
self.response = response self.response = response
log.info("NP RESPONSE: {}".format(json.dumps(self.response))) log.info("NP RESPONSE: {}".format(json.dumps(self.response)))
self.save_log("advice") self.save_log("advice")
# if 'resultCd' not in response:
# self.result = dict(
# error="Connection Timeout. Please Try Again!"
# )
# self.save_log(typ="inquiry")
# return
# result = dict()
# try:
# result_code = int(response['resultCd'])
# except:
# result_code = 999
#
# result["code"] = result_code
# result["message"] = response['resultMsg']
# if result_code == 0: # or self.pay_method == '01':
# result["code"] = 0
# result["message"] = 'SUCCESS'
# time_stamp = datetime.now().strftime('%Y%m%d%H%M%S')
# key = sha256("{}{}".format(self.cust_inv_no, time_stamp))
# tx_id = "{}{}".format(self.invoice_det.customer.users.user_name, key)
# result["tx_id"] = tx_id
# result["invoice_no"] = response['referenceNo']
# result["amount"] = response['amt']
# result["trans_date"] = response['transDt']
# result["trans_time"] = response['transTm']
# result["description"] = response['description']
# self.invoice_det.trans_dt = response["transDt"]
# self.invoice_det.trans_tm = response["transTm"]
# self.invoice_det.tx_id = tx_id
# self.vend_inv_no = response["tXid"]
# if self.pay_method == "02":
# result["va"] = dict(
# vacct_no=response['vacctNo'],
# valid_date=response['vacctValidDt'],
# valid_time=response['vacctValidTm'],
# )
# self.invoice_det.card_no = response['vacctNo']
#
# elif self.pay_method == "03":
# result["cvs"] = dict(
# pay_no=response['payNo'],
# valid_date=response['payValidDt'],
# valid_time=response['payValidTm'],
# )
# self.invoice_det.card_no = response['payNo']
# elif self.pay_method == "04":
# # clickpay
# result["receipt_code"]=response['receiptCode']
# elif self.pay_method == "05":
# # e-wallet
# result["receipt_code"]='receiptCode' in response and response['receiptCode'] or ''
# elif self.pay_method == "06":
# # akulaku
# pass
# self.result = result # self.result = result
self.save_log("advice")
self.result = get_result(self.response, self.pay_method) self.result = get_result(self.response, self.pay_method)
self.result["tx_id"] = self.invoice_det.tx_id self.result["tx_id"] = self.invoice_det.tx_id
self.save_log("advice") self.save_log("advice")
def cancel(self, data):
Nicepay.requestData = {}
self.set_static_params()
payment = self.invoice_det.notify["request"]
if not payment:
payment = self.invoice_det.payment["response"]
Nicepay.set("payMethod", payment["payMethod"])
Nicepay.set("cancelType", data["cancel_type"])
Nicepay.set("preAuthToken", payment["preAuthToken"])
Nicepay.set("tXid", self.invoice_det.vend_inv_no)
self.request = Nicepay.requestData
log.info("CANCEL REUQEST: {}".format(self.request))
self.save_log("cancel")
result_data = Nicepay.niceCancel()
response = json.loads(result_data)
self.response = response
log.info("CANCEL RESPONSE: {}".format(json.dumps(self.response)))
self.save_log("cancel")
# self.result = result
self.result = get_result(self.response, self.pay_method)
self.result["tx_id"] = self.invoice_det.tx_id
self.save_log("cancel")
def notify(self, data): def notify(self, data):
amount = self.invoice_det.amt_sell amount = self.invoice_det.amt_sell
vend_inv_no = self.invoice_det.vend_inv_no vend_inv_no = self.invoice_det.vend_inv_no
...@@ -722,7 +603,7 @@ def get_result(response, pay_method): ...@@ -722,7 +603,7 @@ def get_result(response, pay_method):
receiptCode ANS 18 Authorization code (CVS) receiptCode ANS 18 Authorization code (CVS)
""" """
other = dict( other = dict(
pay_no="payNo" in response and response["payNo"] or "", pay_no="payNo" in response and response["payNo"] or "",
valid_date="payValidDt" in response and response["payValidDt"] or "", valid_date="payValidDt" in response and response["payValidDt"] or "",
valid_time="payValidTm" in response and response["payValidTm"] or "", valid_time="payValidTm" in response and response["payValidTm"] or "",
m_ref_no="mRefNo" in response and response["mRefNo"] or "", m_ref_no="mRefNo" in response and response["mRefNo"] or "",
......
import logging
from agratek.api.merchant.views.notify_vendor import payment_notify
from opensipkd.pasar.models.produk import PartnerPay, PartnerProduk
log = logging.getLogger(__name__)
from . import Vendor
def proses(invoice_det, vendor_produk):
vendor = Vendor(vendor_produk, invoice_det)
vendor.cancel()
return invoice_det.cancel["result"]
...@@ -174,6 +174,10 @@ class VendorClass(object): ...@@ -174,6 +174,10 @@ class VendorClass(object):
self.invoice_det.notify = dict(request=self.request, self.invoice_det.notify = dict(request=self.request,
response=self.response, response=self.response,
result=self.result) result=self.result)
elif typ == 'cancel':
self.invoice_det.cancel = dict(request=self.request,
response=self.response,
result=self.result)
flush_row(self.invoice_det) flush_row(self.invoice_det)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!