towards the improved confirmPay API
This commit is contained in:
parent
172a51a43a
commit
ff3f965661
@ -49,6 +49,7 @@ import {
|
||||
PreparePayResult,
|
||||
RefreshReason,
|
||||
PreparePayResultType,
|
||||
ConfirmPayResultType,
|
||||
} from "../types/walletTypes";
|
||||
import * as Amounts from "../util/amounts";
|
||||
import { AmountJson } from "../util/amounts";
|
||||
@ -853,7 +854,10 @@ export async function submitPay(
|
||||
lastSessionId: sessionId,
|
||||
};
|
||||
|
||||
return { nextUrl };
|
||||
return {
|
||||
type: ConfirmPayResultType.Done,
|
||||
nextUrl,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@ -957,6 +961,9 @@ export async function preparePayForUri(
|
||||
await tx.put(Stores.purchases, p);
|
||||
});
|
||||
const r = await submitPay(ws, proposalId);
|
||||
if (r.type !== ConfirmPayResultType.Done) {
|
||||
throw Error("submitting pay failed");
|
||||
}
|
||||
return {
|
||||
status: PreparePayResultType.AlreadyConfirmed,
|
||||
contractTerms: JSON.parse(purchase.contractTermsRaw),
|
||||
|
@ -53,7 +53,7 @@ export interface TransactionsResponse {
|
||||
transactions: Transaction[];
|
||||
}
|
||||
|
||||
interface TransactionError {
|
||||
export interface TransactionError {
|
||||
/**
|
||||
* TALER_EC_* unique error code.
|
||||
* The action(s) offered and message displayed on the transaction item depend on this code.
|
||||
|
@ -45,6 +45,7 @@ import {
|
||||
} from "../util/codec";
|
||||
import { AmountString } from "./talerTypes";
|
||||
import { codec } from "..";
|
||||
import { TransactionError } from "./transactions";
|
||||
|
||||
/**
|
||||
* Response for the create reserve request to the wallet.
|
||||
@ -192,13 +193,30 @@ export function mkAmount(
|
||||
return { value, fraction, currency };
|
||||
}
|
||||
|
||||
export const enum ConfirmPayResultType {
|
||||
Done = "done",
|
||||
Pending = "pending",
|
||||
}
|
||||
|
||||
/**
|
||||
* Result for confirmPay
|
||||
*/
|
||||
export interface ConfirmPayResult {
|
||||
export interface ConfirmPayResultDone {
|
||||
type: ConfirmPayResultType.Done,
|
||||
|
||||
nextUrl: string;
|
||||
}
|
||||
|
||||
export interface ConfirmPayResultPending {
|
||||
type: ConfirmPayResultType.Pending,
|
||||
|
||||
lastError: TransactionError;
|
||||
}
|
||||
|
||||
export type ConfirmPayResult =
|
||||
| ConfirmPayResultDone
|
||||
| ConfirmPayResultPending
|
||||
|
||||
/**
|
||||
* Information about all sender wire details known to the wallet,
|
||||
* as well as exchanges that accept these wire types.
|
||||
|
@ -109,6 +109,9 @@ function TalerPayDialog({ talerPayUri }: { talerPayUri: string }): JSX.Element {
|
||||
try {
|
||||
setLoading(true);
|
||||
const res = await wxApi.confirmPay(proposalId, undefined);
|
||||
if (res.type !== walletTypes.ConfirmPayResultType.Done) {
|
||||
throw Error("payment pending");
|
||||
}
|
||||
document.location.href = res.nextUrl;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
|
Loading…
Reference in New Issue
Block a user