use stringify taler util
This commit is contained in:
parent
9f776d3fb0
commit
ef148b1501
@ -34,6 +34,7 @@ import { useBackendContext } from "../../../../context/backend.js";
|
||||
import { useConfigContext } from "../../../../context/config.js";
|
||||
import { useInstanceContext } from "../../../../context/instance.js";
|
||||
import { MerchantBackend } from "../../../../declaration.js";
|
||||
import { stringifyPayTemplateUri } from "@gnu-taler/taler-util";
|
||||
|
||||
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 fixedSummary = !!template.template_contract.summary;
|
||||
|
||||
const params = new URLSearchParams();
|
||||
const templateParams: Record<string, string> = {}
|
||||
if (!fixedAmount) {
|
||||
if (state.amount) {
|
||||
params.append("amount", state.amount);
|
||||
templateParams.amount = state.amount
|
||||
} else {
|
||||
params.append("amount", config.currency);
|
||||
templateParams.amount = config.currency
|
||||
}
|
||||
}
|
||||
|
||||
if (!fixedSummary) {
|
||||
params.append("summary", state.summary ?? "");
|
||||
templateParams.summary = state.summary ?? ""
|
||||
}
|
||||
|
||||
const paramsStr = fixedAmount && fixedSummary ? "" : "?" + params.toString();
|
||||
const merchantURL = new URL(backendUrl);
|
||||
const merchantBaseUrl = new URL(backendUrl).href;
|
||||
|
||||
const talerProto =
|
||||
merchantURL.protocol === "http:" ? "taler+http:" : "taler:";
|
||||
|
||||
const payTemplateUri = `${talerProto}//pay-template/${merchantURL.hostname}/${templateId}${paramsStr}`;
|
||||
const payTemplateUri = stringifyPayTemplateUri({
|
||||
merchantBaseUrl,
|
||||
templateId,
|
||||
templateParams
|
||||
})
|
||||
|
||||
const issuer = encodeURIComponent(
|
||||
`${new URL(backendUrl).hostname}/${instanceId}`,
|
||||
`${new URL(backendUrl).host}/${instanceId}`,
|
||||
);
|
||||
const oauthUri = !template.pos_algorithm
|
||||
? undefined
|
||||
: template.pos_algorithm === 1
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: template.pos_algorithm === 2
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: undefined;
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: template.pos_algorithm === 2
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: undefined;
|
||||
|
||||
const keySlice = template.pos_key?.substring(0, 4);
|
||||
|
||||
const oauthUriWithoutSecret = !template.pos_algorithm
|
||||
? undefined
|
||||
: template.pos_algorithm === 1
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: template.pos_algorithm === 2
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: undefined;
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: template.pos_algorithm === 2
|
||||
? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30`
|
||||
: undefined;
|
||||
return (
|
||||
<div>
|
||||
{oauthUri && (
|
||||
|
Loading…
Reference in New Issue
Block a user