diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-05-08 04:19:39 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-05-08 04:19:39 +0200 |
commit | 45fce74b80e8ab931df1b88f7f24cc9a7e084dc9 (patch) | |
tree | 47f9ca4c906ae1df27ccb2665bccc51d24d03178 /talerbank | |
parent | c1896922c36f4c46a8a7e03861e964b3fb69bcb9 (diff) | |
download | bank-45fce74b80e8ab931df1b88f7f24cc9a7e084dc9.tar.gz bank-45fce74b80e8ab931df1b88f7f24cc9a7e084dc9.tar.bz2 bank-45fce74b80e8ab931df1b88f7f24cc9a7e084dc9.zip |
rudimentary payto support
Diffstat (limited to 'talerbank')
-rw-r--r-- | talerbank/app/schemas.py | 2 | ||||
-rw-r--r-- | talerbank/app/views.py | 14 |
2 files changed, 9 insertions, 7 deletions
diff --git a/talerbank/app/schemas.py b/talerbank/app/schemas.py index f61e448..cf11bdc 100644 --- a/talerbank/app/schemas.py +++ b/talerbank/app/schemas.py @@ -221,7 +221,7 @@ PIN_TAN_ARGS = { "amount_currency": {"type": "string"}, "exchange": {"type": "string"}, "reserve_pub": {"type": "string"}, - "exchange_wire_details": {"format": "wiredetails_string"} + "exchange_wire_details": {"format": "string"} } } diff --git a/talerbank/app/views.py b/talerbank/app/views.py index d3adf08..6c01c52 100644 --- a/talerbank/app/views.py +++ b/talerbank/app/views.py @@ -25,6 +25,7 @@ import logging import hashlib import random import re +from urllib.parse import urlparse import django.contrib.auth import django.contrib.auth.views import django.contrib.auth.forms @@ -307,6 +308,11 @@ def make_question(): return question, hash_answer(answer) +def get_acct_from_payto(s: str) -> int: + wire_uri = urlparse(wire_details) + if wire_uri.scheme != "payto": + raise Exception("exchange_wire_details must be a payto URI") + return int(wire_uri.split("/")[-1]) ## @@ -323,17 +329,13 @@ def pin_tan_question(request): validate_data(request, request.GET.dict()) user_account = BankAccount.objects.get(user=request.user) wire_details = json.loads(request.GET["exchange_wire_details"]) - request.session["exchange_account_number"] = \ - wire_details["test"]["account_number"] + + request.session["exchange_account_number"] = get_acct_from_payto(wire_details) amount = Amount(request.GET["amount_currency"], int(request.GET["amount_value"]), int(request.GET["amount_fraction"])) request.session["amount"] = amount.dump() request.session["reserve_pub"] = request.GET["reserve_pub"] - request.session["sender_wiredetails"] = { - "type": "test", - "bank_url": request.build_absolute_uri(reverse("index")), - "account_number": user_account.account_no} fail_message, success_message, hint = get_session_hint(request, "captcha_failed") question, hashed_answer = make_question() context = dict( |