Browse Source

Merge pull request #3374

bd70562 [Qt] add messages when handling local payment request files (Philip Kaufmann)
0.10
Wladimir J. van der Laan 11 years ago
parent
commit
f126973fd0
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 52
      src/qt/paymentserver.cpp
  2. 2
      src/qt/paymentserver.h

52
src/qt/paymentserver.cpp

@ -382,40 +382,52 @@ void PaymentServer::handleURIOrFile(const QString& s) @@ -382,40 +382,52 @@ void PaymentServer::handleURIOrFile(const QString& s)
#else
QUrlQuery uri((QUrl(s)));
#endif
if (uri.hasQueryItem("r"))
if (uri.hasQueryItem("r")) // payment request URI
{
QByteArray temp;
temp.append(uri.queryItemValue("r"));
QString decoded = QUrl::fromPercentEncoding(temp);
QUrl fetchUrl(decoded, QUrl::StrictMode);
qDebug() << "PaymentServer::handleURIOrFile : fetchRequest(" << fetchUrl << ")";
if (fetchUrl.isValid())
{
qDebug() << "PaymentServer::handleURIOrFile : fetchRequest(" << fetchUrl << ")";
fetchRequest(fetchUrl);
}
else
{
qDebug() << "PaymentServer::handleURIOrFile : Invalid URL: " << fetchUrl;
emit message(tr("URI handling"),
tr("Payment request fetch URL is invalid: %1").arg(fetchUrl.toString()),
CClientUIInterface::ICON_WARNING);
}
return;
}
else // normal URI
{
SendCoinsRecipient recipient;
if (GUIUtil::parseBitcoinURI(s, &recipient))
emit receivedPaymentRequest(recipient);
else
emit message(tr("URI handling"),
tr("URI can not be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters."),
CClientUIInterface::ICON_WARNING);
SendCoinsRecipient recipient;
if (GUIUtil::parseBitcoinURI(s, &recipient))
emit receivedPaymentRequest(recipient);
else
emit message(tr("URI handling"),
tr("URI can not be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters."),
CClientUIInterface::ICON_WARNING);
return;
return;
}
}
if (QFile::exists(s))
if (QFile::exists(s)) // payment request file
{
PaymentRequestPlus request;
SendCoinsRecipient recipient;
if (readPaymentRequest(s, request) && processPaymentRequest(request, recipient))
emit receivedPaymentRequest(recipient);
else
emit message(tr("Payment request file handling"),
tr("Payment request file can not be read or processed! This can be caused by an invalid payment request file."),
CClientUIInterface::ICON_WARNING);
return;
}
@ -594,7 +606,7 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) @@ -594,7 +606,7 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply)
.arg(reply->errorString());
qDebug() << "PaymentServer::netRequestFinished : " << msg;
emit message(tr("Network request error"), msg, CClientUIInterface::MSG_ERROR);
emit message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR);
return;
}
@ -606,9 +618,16 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) @@ -606,9 +618,16 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply)
PaymentRequestPlus request;
SendCoinsRecipient recipient;
if (request.parse(data) && processPaymentRequest(request, recipient))
{
emit receivedPaymentRequest(recipient);
}
else
{
qDebug() << "PaymentServer::netRequestFinished : Error processing payment request";
emit message(tr("Payment request error"),
tr("Payment request can not be parsed or processed!"),
CClientUIInterface::MSG_ERROR);
}
return;
}
@ -621,9 +640,10 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) @@ -621,9 +640,10 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply)
.arg(reply->request().url().toString());
qDebug() << "PaymentServer::netRequestFinished : " << msg;
emit message(tr("Network request error"), msg, CClientUIInterface::MSG_ERROR);
emit message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR);
}
else {
else
{
emit receivedPaymentACK(GUIUtil::HtmlEscape(paymentACK.memo()));
}
}

2
src/qt/paymentserver.h

@ -102,7 +102,7 @@ public slots: @@ -102,7 +102,7 @@ public slots:
// Submit Payment message to a merchant, get back PaymentACK:
void fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction);
// Handle an incoming URI or file
// Handle an incoming URI, URI with local file scheme or file
void handleURIOrFile(const QString& s);
private slots:

Loading…
Cancel
Save