class BasePaymentCallback(JsonAPIHandler): def handle(self): test = self.request.get("test") == "true" try: tx_hash = self.request.get("transaction_hash") address = self.request.get("address") satoshis = int(self.request.get("value")) payment_address = self.request.get("input_address") except ValueError, e: return "error: value error" if not tx_hash: return "error: no transaction_hash" if not address: return "error: no address" if satoshis <= 0: # outgoing payment return "*ok*" if satoshis < MIN_SATOSHIS_PAYMENT: # not enough return "*ok*" if not test: doc = Document.get_by_address(payment_address) if not doc: return "error: couldn't find document" return self.process_payment(satoshis, doc) return "*ok*"