diff options
Diffstat (limited to 'packages/taler-util/src/taleruri.ts')
-rw-r--r-- | packages/taler-util/src/taleruri.ts | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/taler-util/src/taleruri.ts b/packages/taler-util/src/taleruri.ts index 13cdde9a9..4e47acbce 100644 --- a/packages/taler-util/src/taleruri.ts +++ b/packages/taler-util/src/taleruri.ts @@ -216,6 +216,23 @@ export function parsePayUri(s: string): PayUriResult | undefined { }; } +export function constructPayUri( + merchantBaseUrl: string, + orderId: string, + sessionId: string, + claimToken?: string, + noncePriv?: string, +): string { + const base = canonicalizeBaseUrl(merchantBaseUrl); + const url = new URL(base); + const isHttp = base.startsWith("http://"); + let result = isHttp ? `taler+http://pay/` : `taler://pay/`; + result += `${url.hostname}${url.pathname}${orderId}/${sessionId}?`; + if (claimToken) result += `c=${claimToken}`; + if (noncePriv) result += `n=${noncePriv}`; + return result; +} + export function parsePayPushUri(s: string): PayPushUriResult | undefined { const pi = parseProtoInfo(s, talerActionPayPush); if (!pi) { |