summaryrefslogtreecommitdiff
path: root/talerdonations/donations/donations.py
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-08-29 19:09:02 +0200
committerFlorian Dold <florian.dold@gmail.com>2019-08-29 19:09:30 +0200
commite7c20a11fac21ab485b17feec81d0887be4cf5eb (patch)
treed4d93e383050d895dca8554347bb1d7da12c744a /talerdonations/donations/donations.py
parent9c282aa69a4d25f186e591a075b0f2830b5ec45a (diff)
downloaddonations-e7c20a11fac21ab485b17feec81d0887be4cf5eb.tar.gz
donations-e7c20a11fac21ab485b17feec81d0887be4cf5eb.tar.bz2
donations-e7c20a11fac21ab485b17feec81d0887be4cf5eb.zip
url-based payments
Diffstat (limited to 'talerdonations/donations/donations.py')
-rw-r--r--talerdonations/donations/donations.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/talerdonations/donations/donations.py b/talerdonations/donations/donations.py
index 220fbb7..06c6617 100644
--- a/talerdonations/donations/donations.py
+++ b/talerdonations/donations/donations.py
@@ -246,6 +246,16 @@ def donate():
##
+# This endpoint is used by the payment request page
+# to check if the payment has been completed via the QR code.
+@app.route("/check-status/<order_id>")
+def check_status(order_id, session_id):
+ pay_params = dict( instance=INSTANCE, order_id=order_id)
+ pay_status = backend_get("check-payment", pay_params)
+ return flask.jsonify(paid=pay_status["paid"])
+
+
+##
# Serve the fulfillment page.
#
# @param receiver the donation receiver name, that should
@@ -260,7 +270,21 @@ def fulfillment(receiver):
pay_status = backend_get("check-payment", pay_params)
if pay_status.get("payment_redirect_url"):
- return flask.redirect(pay_status["payment_redirect_url"])
+ taler_pay_uri = pay_status["taler_pay_uri"]
+ qrcode_svg = get_qrcode_svg(taler_pay_uri)
+ check_status_url_enc = urllib.parse.quote(
+ flask.url_for("check_status", order_id=order_id)
+ )
+ content = flask.render_template(
+ "templates/request_payment.html",
+ article_name=article_name,
+ taler_pay_uri=taler_pay_uri,
+ qrcode_svg=qrcode_svg,
+ check_status_url_enc=check_status_url_enc
+ )
+ headers = {"Taler": taler_pay_uri}
+ resp = flask.Response(content, status=402, headers=headers)
+ return resp
if pay_status.get("paid"):
extra = pay_status["contract_terms"]["extra"]