broadcast tx of payment request
This commit is contained in:
@@ -895,18 +895,27 @@ class ElectrumWindow(QMainWindow):
|
|||||||
def broadcast_transaction(self, tx):
|
def broadcast_transaction(self, tx):
|
||||||
|
|
||||||
def broadcast_thread():
|
def broadcast_thread():
|
||||||
if self.gui_object.payment_request:
|
pr = self.gui_object.payment_request
|
||||||
refund_address = self.wallet.addresses()[0]
|
if pr is None:
|
||||||
status, msg = self.gui_object.payment_request.send_ack(str(tx), refund_address)
|
return self.wallet.sendtx(tx)
|
||||||
if status:
|
|
||||||
pr = self.gui_object.payment_request
|
if pr.has_expired():
|
||||||
pr_id = pr.get_id()
|
|
||||||
self.invoices[pr_id] = (pr.get_domain(), pr.get_memo(), pr.get_amount(), PR_PAID)
|
|
||||||
self.wallet.storage.put('invoices', self.invoices)
|
|
||||||
self.update_invoices_tab()
|
|
||||||
self.gui_object.payment_request = None
|
self.gui_object.payment_request = None
|
||||||
else:
|
return False, _("Payment request has expired")
|
||||||
status, msg = self.wallet.sendtx(tx)
|
|
||||||
|
status, msg = self.wallet.sendtx(tx)
|
||||||
|
if not status:
|
||||||
|
return False, msg
|
||||||
|
|
||||||
|
self.invoices[pr.get_id()] = (pr.get_domain(), pr.get_memo(), pr.get_amount(), PR_PAID, tx.hash())
|
||||||
|
self.wallet.storage.put('invoices', self.invoices)
|
||||||
|
self.update_invoices_tab()
|
||||||
|
self.gui_object.payment_request = None
|
||||||
|
refund_address = self.wallet.addresses()[0]
|
||||||
|
ack_status, ack_msg = pr.send_ack(str(tx), refund_address)
|
||||||
|
if ack_status:
|
||||||
|
msg = ack_msg
|
||||||
|
|
||||||
return status, msg
|
return status, msg
|
||||||
|
|
||||||
def broadcast_done(status, msg):
|
def broadcast_done(status, msg):
|
||||||
@@ -936,7 +945,7 @@ class ElectrumWindow(QMainWindow):
|
|||||||
pr = self.gui_object.payment_request
|
pr = self.gui_object.payment_request
|
||||||
pr_id = pr.get_id()
|
pr_id = pr.get_id()
|
||||||
if pr_id not in self.invoices:
|
if pr_id not in self.invoices:
|
||||||
self.invoices[pr_id] = (pr.get_domain(), pr.get_memo(), pr.get_amount(), PR_UNPAID)
|
self.invoices[pr_id] = (pr.get_domain(), pr.get_memo(), pr.get_amount(), PR_UNPAID, None)
|
||||||
self.wallet.storage.put('invoices', self.invoices)
|
self.wallet.storage.put('invoices', self.invoices)
|
||||||
self.update_invoices_tab()
|
self.update_invoices_tab()
|
||||||
else:
|
else:
|
||||||
@@ -1085,7 +1094,7 @@ class ElectrumWindow(QMainWindow):
|
|||||||
l.clear()
|
l.clear()
|
||||||
for key, value in invoices.items():
|
for key, value in invoices.items():
|
||||||
try:
|
try:
|
||||||
domain, memo, amount, status = value
|
domain, memo, amount, status, tx_hash = value
|
||||||
except:
|
except:
|
||||||
invoices.pop(key)
|
invoices.pop(key)
|
||||||
continue
|
continue
|
||||||
@@ -1240,7 +1249,7 @@ class ElectrumWindow(QMainWindow):
|
|||||||
|
|
||||||
def show_invoice(self, key):
|
def show_invoice(self, key):
|
||||||
from electrum.paymentrequest import PaymentRequest
|
from electrum.paymentrequest import PaymentRequest
|
||||||
domain, memo, value, status = self.invoices[key]
|
domain, memo, value, status, tx_hash = self.invoices[key]
|
||||||
pr = PaymentRequest(self.config)
|
pr = PaymentRequest(self.config)
|
||||||
pr.read_file(key)
|
pr.read_file(key)
|
||||||
pr.domain = domain
|
pr.domain = domain
|
||||||
|
|||||||
@@ -283,9 +283,6 @@ class PaymentRequest:
|
|||||||
|
|
||||||
def send_ack(self, raw_tx, refund_addr):
|
def send_ack(self, raw_tx, refund_addr):
|
||||||
|
|
||||||
if self.has_expired():
|
|
||||||
return False, "has expired"
|
|
||||||
|
|
||||||
pay_det = self.details
|
pay_det = self.details
|
||||||
if not self.details.payment_url:
|
if not self.details.payment_url:
|
||||||
return False, "no url"
|
return False, "no url"
|
||||||
|
|||||||
Reference in New Issue
Block a user