use stringify taler util

This commit is contained in:
Sebastian 2023-08-07 06:51:45 -03:00
parent 9f776d3fb0
commit ef148b1501
No known key found for this signature in database
GPG Key ID: 173909D1A5F66069

View File

@ -34,6 +34,7 @@ import { useBackendContext } from "../../../../context/backend.js";
import { useConfigContext } from "../../../../context/config.js"; import { useConfigContext } from "../../../../context/config.js";
import { useInstanceContext } from "../../../../context/instance.js"; import { useInstanceContext } from "../../../../context/instance.js";
import { MerchantBackend } from "../../../../declaration.js"; import { MerchantBackend } from "../../../../declaration.js";
import { stringifyPayTemplateUri } from "@gnu-taler/taler-util";
type Entity = MerchantBackend.Template.UsingTemplateDetails; type Entity = MerchantBackend.Template.UsingTemplateDetails;
@ -64,46 +65,47 @@ export function QrPage({ template, id: templateId, onBack }: Props): VNode {
const fixedAmount = !!template.template_contract.amount; const fixedAmount = !!template.template_contract.amount;
const fixedSummary = !!template.template_contract.summary; const fixedSummary = !!template.template_contract.summary;
const params = new URLSearchParams(); const templateParams: Record<string, string> = {}
if (!fixedAmount) { if (!fixedAmount) {
if (state.amount) { if (state.amount) {
params.append("amount", state.amount); templateParams.amount = state.amount
} else { } else {
params.append("amount", config.currency); templateParams.amount = config.currency
} }
} }
if (!fixedSummary) { if (!fixedSummary) {
params.append("summary", state.summary ?? ""); templateParams.summary = state.summary ?? ""
} }
const paramsStr = fixedAmount && fixedSummary ? "" : "?" + params.toString(); const merchantBaseUrl = new URL(backendUrl).href;
const merchantURL = new URL(backendUrl);
const talerProto = const payTemplateUri = stringifyPayTemplateUri({
merchantURL.protocol === "http:" ? "taler+http:" : "taler:"; merchantBaseUrl,
templateId,
const payTemplateUri = `${talerProto}//pay-template/${merchantURL.hostname}/${templateId}${paramsStr}`; templateParams
})
const issuer = encodeURIComponent( const issuer = encodeURIComponent(
`${new URL(backendUrl).hostname}/${instanceId}`, `${new URL(backendUrl).host}/${instanceId}`,
); );
const oauthUri = !template.pos_algorithm const oauthUri = !template.pos_algorithm
? undefined ? undefined
: template.pos_algorithm === 1 : template.pos_algorithm === 1
? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` ? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
: template.pos_algorithm === 2 : template.pos_algorithm === 2
? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` ? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
: undefined; : undefined;
const keySlice = template.pos_key?.substring(0, 4); const keySlice = template.pos_key?.substring(0, 4);
const oauthUriWithoutSecret = !template.pos_algorithm const oauthUriWithoutSecret = !template.pos_algorithm
? undefined ? undefined
: template.pos_algorithm === 1 : template.pos_algorithm === 1
? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` ? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
: template.pos_algorithm === 2 : template.pos_algorithm === 2
? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` ? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
: undefined; : undefined;
return ( return (
<div> <div>
{oauthUri && ( {oauthUri && (