def claim_payment(token): payment = Payment.from_token(db.session, token) if not payment: abort(404) dbtx = CreatedTransaction.from_txid(db.session, payment.txid) if request.method == "POST": dbtx, err_msg = process_claim(payment, dbtx) if err_msg: flash(err_msg, "danger") recipient = None if dbtx: recipient = json.loads(dbtx.json_data)["recipient"] return render_template("claim_payment.html", payment=payment, recipient=recipient)
def claim_payment(token): payment = Payment.from_token(db.session, token) if not payment: return bad_request('payment not found', 404) now = datetime.datetime.now() if now > payment.proposal.date_expiry and payment.status != payment.STATE_SENT_FUNDS: return bad_request('expired', 404) def render(recipient): url_parts = urlparse(request.url) url = url_parts._replace(scheme=DEEP_LINK_SCHEME, query='scheme={}'.format( url_parts.scheme)).geturl() qrcode_svg = utils.qrcode_svg_create(url) return render_template("claim_payment.html", payment=payment, recipient=recipient, qrcode_svg=qrcode_svg, url=url) def render_waves(dbtx): recipient = None if dbtx: recipient = dbtx.tx_with_sigs()["recipient"] return render(recipient) if SERVER_MODE == SERVER_MODE_WAVES: dbtx = WavesTx.from_txid(db.session, payment.txid) if request.method == "POST": content_type = request.content_type using_app = content_type.startswith('application/json') logger.info("claim_payment: content type - %s, using_app - %s", content_type, using_app) recipient = "" asset_id = "" if using_app: content = request.get_json(force=True) if content is None: return bad_request("failed to decode JSON object") if SERVER_MODE == SERVER_MODE_WAVES: params, err_response = get_json_params( content, ["recipient", "asset_id"]) if err_response: return err_response recipient, asset_id = params else: # paydb params, err_response = get_json_params(content, ["recipient"]) if err_response: return err_response recipient, = params else: # using html form try: recipient = request.form["recipient"] except: # pylint: disable=bare-except flash("'recipient' parameter not present", "danger") return render_waves(dbtx) try: asset_id = request.form["asset_id"] except: # pylint: disable=bare-except pass if SERVER_MODE == SERVER_MODE_WAVES: dbtx, err_msg = process_claim_waves(payment, dbtx, recipient, asset_id) else: # paydb err_msg = process_claim_paydb(payment, recipient) if err_msg: logger.error("claim_payment: %s", err_msg) if using_app: return bad_request(err_msg) flash(err_msg, "danger") if SERVER_MODE == SERVER_MODE_WAVES: return render_waves(dbtx) return render(None)