aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-01-04 13:22:23 +0100
committerFlorian Dold <florian.dold@gmail.com>2018-01-04 13:22:23 +0100
commit09c7be80fd53318c9d3287b9952d70714d415e21 (patch)
tree7e4757c5cb710548a054e2c320949f3eb8d9397a
parent202d51c6a2aea6c24af00605dd76b4fc37e42630 (diff)
fix /pay API
-rw-r--r--src/crypto/cryptoWorker.ts1
-rw-r--r--src/talerTypes.ts9
-rw-r--r--src/wallet.ts10
3 files changed, 15 insertions, 5 deletions
diff --git a/src/crypto/cryptoWorker.ts b/src/crypto/cryptoWorker.ts
index 1e5f10c20..b7c8e933f 100644
--- a/src/crypto/cryptoWorker.ts
+++ b/src/crypto/cryptoWorker.ts
@@ -336,6 +336,7 @@ namespace RpcFunctions {
coin_sig: coinSig,
contribution: coinSpend.toJson(),
denom_pub: cd.coin.denomPub,
+ exchange_url: cd.denom.exchangeBaseUrl,
ub_sig: cd.coin.denomSig,
};
ret.sigs.push(s);
diff --git a/src/talerTypes.ts b/src/talerTypes.ts
index 5ba5af17f..27bf7b43b 100644
--- a/src/talerTypes.ts
+++ b/src/talerTypes.ts
@@ -264,6 +264,11 @@ export interface CoinPaySig {
* The amount that is subtracted from this coin with this payment.
*/
contribution: AmountJson;
+
+ /**
+ * URL of the exchange this coin was withdrawn from.
+ */
+ exchange_url: string;
}
@@ -461,9 +466,9 @@ export interface PayReq {
order_id: string;
/**
- * Exchange that the coins are from (base URL).
+ * Mode for /pay (pay or refund)
*/
- exchange: string;
+ mode: string;
}
diff --git a/src/wallet.ts b/src/wallet.ts
index b3ef3bf31..8a63e45e2 100644
--- a/src/wallet.ts
+++ b/src/wallet.ts
@@ -629,8 +629,8 @@ export class Wallet {
chosenExchange: string): Promise<void> {
const payReq: PayReq = {
coins: payCoinInfo.sigs,
- exchange: chosenExchange,
merchant_pub: proposal.contractTerms.merchant_pub,
+ mode: "pay",
order_id: proposal.contractTerms.order_id,
};
const t: PurchaseRecord = {
@@ -1693,7 +1693,9 @@ export class Wallet {
if (t.finished) {
return balance;
}
- addTo(balance, "pendingIncoming", t.contractTerms.amount, t.payReq.exchange);
+ for (const c of t.payReq.coins) {
+ addTo(balance, "pendingIncoming", c.contribution, c.exchange_url);
+ }
return balance;
}
@@ -2526,7 +2528,9 @@ export class Wallet {
for (const pk of pendingKeys) {
const perm = purchase.refundsPending[pk];
console.log("sending refund permission", perm);
- const reqUrl = (new URI("refund")).absoluteTo(purchase.payReq.exchange);
+ // FIXME: not correct once we support multiple exchanges per payment
+ const exchangeUrl = purchase.payReq.coins[0].exchange_url;
+ const reqUrl = (new URI("refund")).absoluteTo(exchangeUrl);
const resp = await this.http.postJson(reqUrl.href(), perm);
if (resp.status !== 200) {
console.error("refund failed", resp);