fix /pay API

This commit is contained in:
Florian Dold 2018-01-04 13:22:23 +01:00
parent 202d51c6a2
commit 09c7be80fd
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B
3 changed files with 15 additions and 5 deletions

View File

@ -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);

View File

@ -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;
}

View File

@ -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);