diff options
Diffstat (limited to 'src/webex')
-rw-r--r-- | src/webex/pages/confirm-contract.tsx | 17 | ||||
-rw-r--r-- | src/webex/wxApi.ts | 2 | ||||
-rw-r--r-- | src/webex/wxBackend.ts | 6 |
3 files changed, 22 insertions, 3 deletions
diff --git a/src/webex/pages/confirm-contract.tsx b/src/webex/pages/confirm-contract.tsx index 090737475..c302239c6 100644 --- a/src/webex/pages/confirm-contract.tsx +++ b/src/webex/pages/confirm-contract.tsx @@ -105,6 +105,7 @@ interface ContractPromptProps { proposalId?: number; contractUrl?: string; sessionId?: string; + resourceUrl?: string; } interface ContractPromptState { @@ -146,6 +147,18 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt } async update() { + if (this.props.resourceUrl) { + const p = await wxApi.queryPaymentByFulfillmentUrl(this.props.resourceUrl); + console.log("query for resource url", this.props.resourceUrl, "result", p); + if (p.found) { + const nextUrl = new URI(p.contractTerms.fulfillment_url); + nextUrl.addSearch("order_id", p.contractTerms.order_id); + if (p.lastSessionSig) { + nextUrl.addSearch("session_sig", p.lastSessionSig); + } + location.href = nextUrl.href(); + } + } let proposalId = this.props.proposalId; if (proposalId === undefined) { if (this.props.contractUrl === undefined) { @@ -285,7 +298,9 @@ document.addEventListener("DOMContentLoaded", () => { const sessionId = query.sessionId; const contractUrl = query.contractUrl; + const resourceUrl = query.resourceUrl; + ReactDOM.render( - <ContractPrompt {...{ proposalId, contractUrl, sessionId }}/>, + <ContractPrompt {...{ proposalId, contractUrl, sessionId, resourceUrl }}/>, document.getElementById("contract")!); }); diff --git a/src/webex/wxApi.ts b/src/webex/wxApi.ts index efebf21d1..84c44dbaa 100644 --- a/src/webex/wxApi.ts +++ b/src/webex/wxApi.ts @@ -238,7 +238,7 @@ export function confirmReserve(reservePub: string): Promise<void> { /** * Query for a payment by fulfillment URL. */ -export function queryPayment(url: string): Promise<QueryPaymentResult> { +export function queryPaymentByFulfillmentUrl(url: string): Promise<QueryPaymentResult> { return callBackend("query-payment", { url }); } diff --git a/src/webex/wxBackend.ts b/src/webex/wxBackend.ts index c0b42a768..7bbba1759 100644 --- a/src/webex/wxBackend.ts +++ b/src/webex/wxBackend.ts @@ -416,11 +416,12 @@ async function talerPay(fields: any, url: string, tabId: number): Promise<string if (p.lastSessionSig) { nextUrl.addSearch("session_sig", p.lastSessionSig); } - return url; + return nextUrl.href(); }; if (fields.resource_url) { const p = await w.queryPaymentByFulfillmentUrl(fields.resource_url); + console.log("query for resource url", fields.resource_url, "result", p); if (p.found) { return goToPayment(p); } @@ -519,6 +520,9 @@ function handleHttpPayment(headerList: chrome.webRequest.HttpHeader[], url: stri if (fields.session_id) { uri.addSearch("sessionId", fields.session_id); } + if (fields.resource_url) { + uri.addSearch("resourceUrl", fields.resource_url); + } return { redirectUrl: uri.href() }; } |