Commit fbe02509 by Solo Group

add notify test

1 parent 402b6945
...@@ -12,6 +12,22 @@ from ..tools import JsonRpcInvoiceFoundError, JsonRpcError ...@@ -12,6 +12,22 @@ from ..tools import JsonRpcInvoiceFoundError, JsonRpcError
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
def save_partner_log(values, vendor_produk):
partner_log = PartnerLog()
partner_log.vendor_id = vendor_produk.partner_id
partner_log.produk_id = vendor_produk.produk.id
partner_log.customer_id = values["customer_id"]
partner_log.id_pel = values["id_pel"]
flush_row(partner_log)
return partner_log
def qry_vendor_produk():
return PartnerProduk.query() \
.join(Partner, Partner.id == PartnerProduk.partner_id) \
.join(Produk, Produk.id == PartnerProduk.produk_id)
def build_request(typ, vendor_produk, partner_log=None, **kwargs): def build_request(typ, vendor_produk, partner_log=None, **kwargs):
# produk_id = values['produk_id'] # produk_id = values['produk_id']
# vendor_id = values['vendor_id'] # vendor_id = values['vendor_id']
...@@ -50,22 +66,6 @@ def build_request(typ, vendor_produk, partner_log=None, **kwargs): ...@@ -50,22 +66,6 @@ def build_request(typ, vendor_produk, partner_log=None, **kwargs):
return result return result
def save_partner_log(values, vendor_produk):
partner_log = PartnerLog()
partner_log.vendor_id = vendor_produk.partner_id
partner_log.produk_id = vendor_produk.produk.id
partner_log.customer_id = values["customer_id"]
partner_log.id_pel = values["id_pel"]
flush_row(partner_log)
return partner_log
def qry_vendor_produk():
return PartnerProduk.query() \
.join(Partner, Partner.id == PartnerProduk.partner_id) \
.join(Produk, Produk.id == PartnerProduk.produk_id)
def get_vendor_produk(produk_kd, vendor_kd=None, harga=None): def get_vendor_produk(produk_kd, vendor_kd=None, harga=None):
""" """
Fungsi ini digunakan untuk mencari vendor yang paling murah Fungsi ini digunakan untuk mencari vendor yang paling murah
...@@ -96,7 +96,7 @@ def inquiry(request, data, **kwargs): ...@@ -96,7 +96,7 @@ def inquiry(request, data, **kwargs):
denom: string, denom: string,
id_pel:string id_pel:string
} }
:param token: :param token: (jika merchant wajib menggunakan token)
user_token user_token
:return: :return:
{ {
...@@ -168,30 +168,31 @@ def purchase(request, data, **kwargs): ...@@ -168,30 +168,31 @@ def purchase(request, data, **kwargs):
Digunakan untuk mendapatkan daftar produk Digunakan untuk mendapatkan daftar produk
:param request: :param request:
:param data: :param data:
{ [{
denom: string, denom: string,
id_pel:string id_pel:string
inv_no: string optional inv_no: string optional
} }]
:param token: :param token: (jika hanya menggunakan token)
user_token user_token
:return: :return:
{ [{
product_nm:string,
denom: string, denom: string,
id_pel:string id_pel:string
inv_no: string optional inv_no: string
denom:string, product_nm:string,
harga:integer, harga:integer,
admin:integer, admin:integer,
discount:integer, discount:integer,
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()
...@@ -238,15 +239,6 @@ def purchase(request, data, **kwargs): ...@@ -238,15 +239,6 @@ def purchase(request, data, **kwargs):
result = build_purchase(vendor_produk, ar_invoice_det) result = build_purchase(vendor_produk, ar_invoice_det)
total = "total" in result and result["total"] or 0 total = "total" in result and result["total"] or 0
prod.update(result["f_result"]) prod.update(result["f_result"])
# # Perhitungan Total
# # Jika harga jual lebih besar dari harga beli jual dipakai harga jual
# # jika harga lebih kecil dari harga beli maka harga beli ditambah admin_fee
# if total:
# if vendor_produk.produk.harga < total:
# total += vendor_produk.produk.harga
# elif vendor_produk.produk.harga > total:
# total = vendor_produk.produk.harga
# 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
...@@ -455,165 +447,3 @@ def cancel_rpc(request, data): ...@@ -455,165 +447,3 @@ def cancel_rpc(request, data):
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')
# def payment(request, token, data):
# """
# Digunakan untuk mendapatkan daftar produk
# :param request:
# :param data:
# {
# denom: string,
# id_pel:string
# inv_no: string optional
# }
# :param token:
# user_token
# :return:
# {
# product_nm:string,
#
# denom: string,
# id_pel:string
# inv_no: string optional
# denom:string,
# harga:integer,
# admin:integer,
# discount:integer,
# total:integer,
# status:success/pending/failed 00/01/02
# """
# user = auth_from_rpc(request, token)
# i = 0
# dat = data is list and data or [data]
# costumer = Partner.query_user(user)
# for dat in data:
# produk_kd = 'denom' in dat and dat['denom'] or None
# if not produk_kd :
# raise JsonRpcProdukNotFound(message="Produk harus diisi")
#
# produk = Produk.query_kode(produk_kd).first()
# if not produk:
# raise JsonRpcProdukNotFound(message="Produk %s tidak ditemukan" % produk_kd)
#
# # todo: search product lowest price
# vend_kd = 'ODEO'
#
# qry = PartnerProduk.query() \
# .filter(Partner.kode == vend_kd) \
# .filter(Produk.kode == produk_kd).first()
#
# r_data = dat
# r_data.update(dict(data=result))
# data[i] = r_data
# i += 1
# return data
#
#
# @jsonrpc_method(method='get_product', endpoint='api-merchant')
# def get_product(request, token, data ):
# """
# Digunakan untuk mendapatkan daftar produk
# :param request:
# :param data:
# {
# product_kd: string, //optional
# page:integer, //optional
# length:integer, //optional
# category:string, //optional
# search:string //optional
# }
# :return: [
# {
# product_kd:string,
# product_nm:string,
# harga:integer
# }
#
# ]
# """
# auth_from_rpc(request)
# i =0
# qry = DepartemenProduk.query() \
# .filter(Departemen.kode == '100000')
# for dat in data:
# page = 'page' in dat and dat['page'] or 1
# length = 'length' in dat and dat['length'] or 5
# product_kd = 'product_kd' in dat and dat['product_kd'] or None
# search = 'search' in dat and dat['search'] or None
# category = 'category' in dat and dat['category'] or None
# if product_kd :
# rst = qry.join(Produk).filter(Produk.kode == product_kd)
# elif search:
# rst = qry.join(Produk).filter(Produk.nama.ilike("".join(['%',search,'%' ])))
# elif category:
# rst = qry.join(Produk).join(ProdukKategori) \
# .filter(ProdukKategori.nama.ilike("".join(['%', category, '%'])))
# else:
# rst = qry
#
# rst = rst.limit(length).offset((page-1)*length)
# result = []
# for row in rst.all():
# result.append(dict(product_kd=row.produk.kode,
# produk_nm=row.produk.nama,
# harga=row.harga ))
# r_data = dat
# r_data.update(dict(data=result))
# data[i]=r_data
# i += 1
# return data
#
# @jsonrpc_method(method='get_biaya', endpoint='api-merchant')
# def get_biaya(request, data, token=None):
# """
# Digunakan untuk mencari methode pembayaran dan biaya layanan
# :param request:
# :param data:
# {
# biaya_kd: string,
# harga:integer,
# cname:string,
# cid:string,
# cvv:string, optional
# }
# :param token:
# user_token
# :return:
# {
# product_kd:string,
# product_nm:string,
# harga:integer
# }
# """
#
# user = auth_from_rpc(request, token)
# i =0
# qry = DepartemenProduk.query() \
# .filter(Departemen.kode == '100000')
# for dat in data:
# product_kd = 'biaya_kd' in dat and dat['biaya_kd'] or None
# cid = 'cid' in dat and dat['cid'] or None
# if not product_kd :
# raise JsonRpcParameterNotFound(message='Paramter product_kd wajib di isi')
#
# rst = qry.join(Produk).filter(Produk.kode == product_kd)
# result = []
# for row in rst.all():
# if row.is_cid and not cid:
# raise JsonRpcParameterNotFound(message="Parameter cid wajib di isi")
# if row.produk.fixed:
# harga = row.harga
# else:
# harga = dat['harga']*row.harga
#
# result.append(dict(biaya_kd=row.produk.kode,
# produk_nm=row.produk.nama,
# harga=harga))
#
# r_data = dat
# r_data.update(dict(data=result))
# data[i]=r_data
# i += 1
# return data
import json import json
import logging
import socket import socket
from datetime import datetime, timedelta from datetime import datetime, timedelta
import colander import colander
from colander import string_types
from deform import widget, Form, ValidationFailure, Button from deform import widget, Form, ValidationFailure, Button
from opensipkd.base import get_host from opensipkd.base.models import Partner
from opensipkd.base.models import Partner, flush_row
from opensipkd.base.views import BaseView from opensipkd.base.views import BaseView
from opensipkd.pasar.models import Produk, PartnerLog, PartnerProduk, H2hArInvoice, H2hArInvoiceDet from opensipkd.pasar.models import Produk, PartnerLog
from opensipkd.pasar.models.views import (deferred_produk, deferred_vendor, from opensipkd.pasar.models.views import (deferred_produk, deferred_vendor,
deferred_customer) deferred_customer)
from pyramid.encode import url_quote, urlencode
from pyramid.httpexceptions import HTTPFound from pyramid.httpexceptions import HTTPFound
from pyramid.url import QUERY_SAFE
from pyramid.view import view_config from pyramid.view import view_config
from requests import Response
from ..tools import get_settings, btn_purchase, ymd, hms, json_rpc_header, get_random_number, get_qs
from ..tools import btn_inquiry, btn_reset, btn_payment, btn_advice, btn_next, btn_register, btn_cancel
from .api_merchant import build_request, qry_vendor_produk, save_partner_log
import logging
from .api_payment import register from .api_payment import register
from ..tools import btn_payment, btn_cancel
from ..tools import json_rpc_header, get_random_number
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
......
...@@ -99,6 +99,7 @@ def payment_notify(order): ...@@ -99,6 +99,7 @@ def payment_notify(order):
# data.update(order.notify["result"]) # data.update(order.notify["result"])
# print('>>>', json.dumps(data, indent=4, sort_keys=True)) # print('>>>', json.dumps(data, indent=4, sort_keys=True))
js = get_jsonrpc(method="notify", params=dict(data=data)) js = get_jsonrpc(method="notify", params=dict(data=data))
log.info("Notify: %s %s" % (url, js)) log.info("Notify: %s %s" % (url, js))
try: try:
# pass # pass
...@@ -117,6 +118,10 @@ def api_vendor_notify(request): ...@@ -117,6 +118,10 @@ def api_vendor_notify(request):
except: except:
data = request.POST and dict(request.POST.items()) or dict(request.GET.items()) data = request.POST and dict(request.POST.items()) or dict(request.GET.items())
if vendor_nm=="test":
log.info("TEST NOTIFY {}".format(data))
return
modul = '.notify' modul = '.notify'
pckgs = 'agratek.api.merchant.views.{}'.format(vendor_nm) pckgs = 'agratek.api.merchant.views.{}'.format(vendor_nm)
moduls = import_module(modul, pckgs) moduls = import_module(modul, pckgs)
......
import json import logging
import colander import colander
from deform import widget, Form, ValidationFailure from deform import widget, Form, ValidationFailure
from opensipkd.base.models import Partner, flush_row from opensipkd.base.models import Partner, flush_row
from opensipkd.base.views import BaseView from opensipkd.base.views import BaseView
from opensipkd.pasar.models import Produk, PartnerLog, PartnerProduk, H2hArInvoice, H2hArInvoiceDet from opensipkd.pasar.models import Produk, PartnerLog, H2hArInvoice, H2hArInvoiceDet
from opensipkd.pasar.models.views import (deferred_produk, deferred_vendor, from opensipkd.pasar.models.views import (deferred_produk, deferred_vendor,
deferred_customer) deferred_customer)
from paste.httpexceptions import HTTPFound
from pyramid.view import view_config from pyramid.view import view_config
from ..tools import get_settings, btn_purchase
from ..tools import btn_inquiry, btn_reset, btn_payment, btn_advice, btn_next
from .api_merchant import build_request, qry_vendor_produk, save_partner_log from .api_merchant import build_request, qry_vendor_produk, save_partner_log
from ..tools import btn_inquiry, btn_payment, btn_advice, btn_next
import logging from ..tools import get_settings, btn_purchase
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!