fix payment ack
This commit is contained in:
parent
a03b85a513
commit
370bdbe855
|
@ -71,6 +71,7 @@ class ElectrumGui:
|
|||
self.app = QApplication(sys.argv)
|
||||
self.app.installEventFilter(self.efilter)
|
||||
init_plugins(self)
|
||||
self.payment_request = None
|
||||
|
||||
|
||||
def build_tray_menu(self):
|
||||
|
|
|
@ -121,7 +121,6 @@ class ElectrumWindow(QMainWindow):
|
|||
set_language(config.get('language'))
|
||||
|
||||
self.funds_error = False
|
||||
self.payment_request = None
|
||||
self.completions = QStringListModel()
|
||||
|
||||
self.tabs = tabs = QTabWidget(self)
|
||||
|
@ -874,10 +873,11 @@ class ElectrumWindow(QMainWindow):
|
|||
return
|
||||
|
||||
def broadcast_thread():
|
||||
if self.payment_request:
|
||||
if self.gui_object.payment_request:
|
||||
print "sending ack"
|
||||
refund_address = self.wallet.addresses()[0]
|
||||
self.payment_request.send_ack(str(tx), refund_address)
|
||||
self.payment_request = None
|
||||
self.gui_object.payment_request.send_ack(str(tx), refund_address)
|
||||
self.gui_object.payment_request = None
|
||||
# note: BIP 70 recommends not broadcasting the tx to the network and letting the merchant do that
|
||||
self.tx_broadcast_result = self.wallet.sendtx(tx)
|
||||
self.emit(SIGNAL('send_tx3'))
|
||||
|
|
|
@ -184,6 +184,7 @@ class PaymentRequest:
|
|||
if CA_match:
|
||||
print 'Signed By Trusted CA: ', CA_OU
|
||||
|
||||
print "payment url", pay_det.payment_url
|
||||
return True
|
||||
|
||||
|
||||
|
@ -191,34 +192,38 @@ class PaymentRequest:
|
|||
def send_ack(self, raw_tx, refund_addr):
|
||||
|
||||
pay_det = self.payment_details
|
||||
if pay_det.payment_url:
|
||||
paymnt = paymentrequest_pb2.Payment()
|
||||
if not pay_det.payment_url:
|
||||
return
|
||||
|
||||
paymnt.merchant_data = pay_det.merchant_data
|
||||
paymnt.transactions.append(raw_tx)
|
||||
paymnt = paymentrequest_pb2.Payment()
|
||||
paymnt.merchant_data = pay_det.merchant_data
|
||||
paymnt.transactions.append(raw_tx)
|
||||
|
||||
ref_out = paymnt.refund_to.add()
|
||||
ref_out.script = transaction.Transaction.pay_script(refund_addr)
|
||||
paymnt.memo = "Paid using Electrum"
|
||||
pm = paymnt.SerializeToString()
|
||||
ref_out = paymnt.refund_to.add()
|
||||
ref_out.script = transaction.Transaction.pay_script(refund_addr)
|
||||
paymnt.memo = "Paid using Electrum"
|
||||
pm = paymnt.SerializeToString()
|
||||
|
||||
payurl = urlparse.urlparse(pay_det.payment_url)
|
||||
payurl = urlparse.urlparse(pay_det.payment_url)
|
||||
try:
|
||||
r = requests.post(payurl.geturl(), data=pm, headers=ACK_HEADERS, verify=ca_path)
|
||||
except requests.exceptions.SSLError:
|
||||
print "Payment Message/PaymentACK verify Failed"
|
||||
try:
|
||||
r = requests.post(payurl.geturl(), data=pm, headers=ACK_HEADERS, verify=ca_path)
|
||||
except requests.exceptions.SSLError:
|
||||
print "Payment Message/PaymentACK verify Failed"
|
||||
try:
|
||||
r = requests.post(payurl.geturl(), data=pm, headers=ACK_HEADERS, verify=False)
|
||||
except Exception as e:
|
||||
print "Payment Message/PaymentACK Failed"
|
||||
print e
|
||||
return
|
||||
try:
|
||||
paymntack = paymentrequest_pb2.PaymentACK()
|
||||
paymntack.ParseFromString(r.content)
|
||||
print "PaymentACK message received: %s" % paymntack.memo
|
||||
except Exception:
|
||||
print "PaymentACK could not be processed. Payment was sent; please manually verify that payment was received."
|
||||
r = requests.post(payurl.geturl(), data=pm, headers=ACK_HEADERS, verify=False)
|
||||
except Exception as e:
|
||||
print "Payment Message/PaymentACK Failed"
|
||||
print e
|
||||
return
|
||||
try:
|
||||
paymntack = paymentrequest_pb2.PaymentACK()
|
||||
paymntack.ParseFromString(r.content)
|
||||
except Exception:
|
||||
print "PaymentACK could not be processed. Payment was sent; please manually verify that payment was received."
|
||||
return
|
||||
|
||||
print "PaymentACK message received: %s" % paymntack.memo
|
||||
return paymntack.memo
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue