aboutsummaryrefslogtreecommitdiff
path: root/src/webex
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-01-18 01:37:30 +0100
committerFlorian Dold <florian.dold@gmail.com>2018-01-18 01:37:30 +0100
commit82d9c2a7cd2e343866997438d44aa5422190a028 (patch)
tree3feef2e8b7db1680e42818419195c95946751783 /src/webex
parentd4c2f6f6f992c36609c4a029afcb378a7f839ddf (diff)
downloadwallet-core-82d9c2a7cd2e343866997438d44aa5422190a028.tar.xz
access refunds correctly
Diffstat (limited to 'src/webex')
-rw-r--r--src/webex/pages/confirm-contract.tsx17
-rw-r--r--src/webex/wxApi.ts2
-rw-r--r--src/webex/wxBackend.ts6
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() };
}