Commit 219c39ba by Tatang

notify

1 parent 2423a245
......@@ -429,7 +429,7 @@ class CCardPayment(colander.Schema):
callback_url = colander.SchemaNode(
colander.String(),
default="{}/api/merchant/register/callback".format("https://server"),
# default="{}/api/merchant/register/callback".format("https://server"),
widget=widget.TextInputWidget(max_len=255)
)
......
......@@ -104,7 +104,12 @@ def proses_np(data):
@view_config(route_name='api-vendor-notify', renderer='json')
def api_vendor_notify(request):
vendor_nm = request.matchdict['name']
try:
data = json.loads(request.text)
except:
data = request.POST and dict(request.POST.items()) or dict(request.GET.items())
modul = '.notify'
pckgs = 'agratek.api.merchant.views.{}'.format(vendor_nm)
moduls = import_module(modul, pckgs)
......
......@@ -461,7 +461,7 @@ class Vendor(VendorClass): # VendorClass
self.response = data
log.info("Payment Result: {}".format(data))
self.result = get_result(self.response, self.pay_method)
self.save_log("payment")
script = """
function submit_form(){
$("form[name='callback']").submit();
......@@ -473,6 +473,11 @@ class Vendor(VendorClass): # VendorClass
# /api/merchant/payment
f = ""
result = self.result
self.request = 'request' in self.invoice_det.payment and \
self.invoice_det.payment['request'] or ""
self.save_log("payment")
for r in result:
if r and type(result[r])==dict:
rs = result[r]
......@@ -518,6 +523,16 @@ class Vendor(VendorClass): # VendorClass
if merchant_token != signature:
return
status = int(data['status'])
if status == 0:
# pembayaran sukses
self.invoice_det.status = 1
flush_row(self.invoice_det)
elif status == 1:
# pembayaran gagal / reversal
self.invoice_det.status = 2
flush_row(self.invoice_det)
self.response = data
self.result = get_result(self.response, self.pay_method)
self.save_log("notify")
......
......@@ -10,10 +10,19 @@ def proses(data):
vend_inv_no = data["tXid"]
cus_inv_no = data["referenceNo"]
invoice_det = PartnerPay.query_vend_inv_no(vend_inv_no)\
.filter(cust_inv_no=cus_inv_no)
.filter_by(cust_inv_no=cus_inv_no)\
.first()
# by tatang
if not invoice_det:
return
vendor_produk = PartnerProduk.query()\
.filter_by(partner_id=invoice_det.vendor_id,
produk_id=invoice_det.produk_id)
produk_id=invoice_det.produk_id)\
.first()
# by tatang
if not vendor_produk:
return
vendor = Vendor(vendor_produk, invoice_det)
vendor.notify(data)
......
......@@ -167,6 +167,11 @@ class VendorClass(object):
self.invoice_det.info = dict(request=self.request,
response=self.response,
result=self.result)
elif typ == 'notify':
# by tatang
self.invoice_det.notify = dict(request=self.request,
response=self.response,
result=self.result)
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!