diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-12-06 00:56:31 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-12-06 00:56:31 +0100 |
commit | c8c84911ce4f69900ffbbf5accff827c78d9e13b (patch) | |
tree | f47d7e020c2bf64673ae2afa1652d18a0075bab9 /src | |
parent | 65bccbd139c53a2baccec442a680373125488102 (diff) |
fix re-purchase detection
Diffstat (limited to 'src')
-rw-r--r-- | src/headless/taler-wallet-cli.ts | 18 | ||||
-rw-r--r-- | src/wallet-impl/pay.ts | 6 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/headless/taler-wallet-cli.ts b/src/headless/taler-wallet-cli.ts index 71bccadef..2073c2573 100644 --- a/src/headless/taler-wallet-cli.ts +++ b/src/headless/taler-wallet-cli.ts @@ -27,6 +27,7 @@ import { Logger } from "../util/logging"; import * as Amounts from "../util/amounts"; import { decodeCrock } from "../crypto/talerCrypto"; import { OperationFailedAndReportedError } from "../wallet-impl/errors"; +import { Bank } from "./bank"; const logger = new Logger("taler-wallet-cli.ts"); @@ -435,6 +436,23 @@ testCli }); testCli + .subcommand("genWithdrawUri", "gen-withdraw-uri", { + help: "Generate a taler://withdraw URI.", + }) + .requiredOption("amount", ["-a", "--amount"], clk.STRING, { + default: "TESTKUDOS:20", + }) + .requiredOption("bank", ["-b", "--bank"], clk.STRING, { + default: "https://bank.test.taler.net/", + }) + .action(async (args) => { + const b = new Bank(args.genWithdrawUri.bank); + const user = await b.registerRandomUser(); + const url = await b.generateWithdrawUri(user, args.genWithdrawUri.amount); + console.log(url); + }); + +testCli .subcommand("genRefundUri", "gen-refund-uri", { help: "Generate a taler://refund URI.", }) diff --git a/src/wallet-impl/pay.ts b/src/wallet-impl/pay.ts index cec1b6bc5..1375a22ca 100644 --- a/src/wallet-impl/pay.ts +++ b/src/wallet-impl/pay.ts @@ -593,6 +593,7 @@ async function processDownloadProposalImpl( fulfillmentUrl, ); if (differentPurchase) { + console.log("repurchase detected"); p.proposalStatus = ProposalStatus.REPURCHASE; p.repurchaseProposalId = differentPurchase.proposalId; await tx.put(Stores.proposals, p); @@ -756,7 +757,7 @@ export async function preparePay( }; } - const proposalId = await startDownloadProposal( + let proposalId = await startDownloadProposal( ws, uriResult.downloadUrl, uriResult.sessionId, @@ -771,6 +772,7 @@ export async function preparePay( if (!existingProposalId) { throw Error("invalid proposal state"); } + console.log("using existing purchase for same product"); proposal = await oneShotGet(ws.db, Stores.proposals, existingProposalId); if (!proposal) { throw Error("existing proposal is in wrong state"); @@ -787,7 +789,7 @@ export async function preparePay( throw Error("BUG: proposal is in invalid state"); } - console.log("proposal", proposal); + proposalId = proposal.proposalId; // First check if we already payed for it. const purchase = await oneShotGet(ws.db, Stores.purchases, proposalId); |