def onRequestCharge(ordersID, entityDBID, datas): """ KBEngine method. 请求计费回调 @param ordersID: 订单的ID @type ordersID: uint64 @param entityDBID: 提交订单的实体DBID @type entityDBID: uint64 @param datas: 客户端请求时所附带的数据,可将数据转发第三方平台 @type datas: bytes """ INFO_MSG('onRequestCharge: entityDBID=%s, entityDBID=%s' % (ordersID, entityDBID)) INFO_MSG( "======================= interface .onRequestCharge =======================" ) # 此处可通过http等手段将请求提交至第三方平台,平台返回的数据也可放入datas # datas将会回调至baseapp的订单回调中,具体参考API手册charge # 如果使用http访问,因为interfaces是单线程的,同步http访问容易卡住主线程,建议使用 # KBEngine.registerReadFileDescriptor()和KBEngine.registerWriteFileDescriptor()结合 # tornado异步访问。也可以结合socket模拟http的方式与平台交互。 KBEngine.chargeResponse(ordersID, datas, KBEngine.SERVER_SUCCESS)
def processData(self, sock, addr, datas): """ 处理接收数据 """ DEBUG_MSG( "====================processOrders line==========================") _recv_data = datas.decode() DEBUG_MSG("Recv datas = %r" % (_recv_data)) if _recv_data.find("IIII") != -1: cutData = Helper.cutInHttp(_recv_data, 'IIII', 'IIII') json_data = Helper.convertDict(cutData, ',', ':') payid = json_data["timestamp"] elif _recv_data.find("out_trade_no") != -1: cutData = Helper.cutInHttp(_recv_data, '?', '&') DEBUG_MSG("CutHttp = %r" % (cutData)) orderDict = Helper.convertDict(cutData, '&', '=') payid = orderDict["out_trade_no"] else: self.send(sock) return if not self.checkOrders(payid): DEBUG_MSG("orders is no problem!!!") KBEngine.chargeResponse(payid, datas, KBEngine.SERVER_SUCCESS) self.send(sock)
def onTick(timerID): """ """ INFO_MSG('onTick()') ordersID = "1234567890" datas = b"test" KBEngine.chargeResponse(ordersID, datas, KBEngine.SERVER_SUCCESS)
def callback(ordersID, response): datas = b'' if response.code in (200, 400): data = AsyncHttp.parse_json(response.body) datas = Bytes(**data).dumps() KBEngine.chargeResponse( ordersID, datas, KBEngine.SERVER_SUCCESS if response.code == 200 else KBEngine.SERVER_ERR_OP_FAILED)
def requestCharge(ordersID, entityDBID, datas): """ KBEngine method. 请求计费 @param ordersID: 订单的ID @type ordersID: uint64 @param entityDBID: 提交订单的实体DBID @type entityDBID: uint64 @param datas: 客户端请求时所附带的数据,可将数据转发第三方平台 @type datas: bytes """ INFO_MSG('requestCharge: entityDBID=%s, entityDBID=%s' % (ordersID, entityDBID)) # 此处可通过http等手段将请求提交至第三方平台,平台返回的数据也可放入datas # datas将会回调至baseapp的订单回调中,具体参考API手册charge KBEngine.chargeResponse(ordersID, datas, KBEngine.SERVER_SUCCESS)
def onRequestCharge(ordersID, entityDBID, datas): """ KBEngine method. 请求计费回调 @param ordersID: 订单的ID @type ordersID: uint64 @param entityDBID: 提交订单的实体DBID @type entityDBID: uint64 @param datas: 客户端请求时所附带的数据,可将数据转发第三方平台 @type datas: bytes """ INFO_MSG('onRequestCharge: entityDBID=%s, entityDBID=%s' % (ordersID, entityDBID)) # 此处可通过http等手段将请求提交至第三方平台,平台返回的数据也可放入datas # datas将会回调至baseapp的订单回调中,具体参考API手册charge # 如果使用http访问,因为interfaces是单线程的,同步http访问容易卡住主线程,建议使用 # KBEngine.urlopen("https://www.baidu.com",onHttpCallback)异步访问。也可以结合异步socket的方式与平台交互(参考Poller.py)。 KBEngine.chargeResponse(ordersID, datas, KBEngine.SERVER_SUCCESS)
def onRequestCharge(ordersID, entityDBID, datas): """ KBEngine method. 请求计费回调 @param ordersID: 订单的ID @type ordersID: uint64 @param entityDBID: 提交订单的实体DBID @type entityDBID: uint64 @param datas: 客户端请求时所附带的数据,可将数据转发第三方平台 @type datas: bytes """ INFO_MSG("onRequestCharge: entityDBID=%s, entityDBID=%s" % (ordersID, entityDBID)) # 此处可通过http等手段将请求提交至第三方平台,平台返回的数据也可放入datas # datas将会回调至baseapp的订单回调中,具体参考API手册charge # 如果使用http访问,因为interfaces是单线程的,同步http访问容易卡住主线程,建议使用 # KBEngine.registerReadFileDescriptor()和KBEngine.registerWriteFileDescriptor()结合 # tornado异步访问。也可以结合socket模拟http的方式与平台交互。 KBEngine.chargeResponse(ordersID, datas, KBEngine.SERVER_SUCCESS)
def processData(self, sock, addr, datas): """ 处理接收数据 """ _recv_data = datas.decode() DEBUG_MSG("_recvBuf = %r" % _recv_data) order = {} payid = "" cutData = "" if _recv_data.find("IIII") != -1: cutData = Helper.cutInHttp(_recv_data, 'IIII', 'IIII') json_data = Helper.convertDict(cutData, ',', ':') payid = json_data["timestamp"] order["money"] = float(json_data["number"]) order["account"] = json_data["account"] elif _recv_data.find("{") != -1: cutData = Helper.cutHttp(_recv_data, '{', '}') json_data = json.loads(cutData) payid = json_data["payid"] payerName = json_data["payerName"] index = payerName.find('|') order["money"] = float(json_data["amount"]) order["account"] = payerName[index + 1:] DEBUG_MSG("cutData = %r" % (cutData)) if not self.checkOrders(payid): DEBUG_MSG("orders is no problem!!!") orderStr = json.dumps(order) KBEngine.chargeResponse(payid, orderStr.encode(), KBEngine.SERVER_SUCCESS) self.send(sock, "success") self.send(sock, "no this order")