latest merchant protocol for refunds
This commit is contained in:
parent
880f335ee6
commit
694d913d1f
@ -35,7 +35,6 @@ import {
|
||||
initRetryInfo,
|
||||
CoinStatus,
|
||||
RefundReason,
|
||||
RefundEventRecord,
|
||||
RefundState,
|
||||
PurchaseRecord,
|
||||
} from "../types/dbTypes";
|
||||
@ -44,10 +43,10 @@ import { parseRefundUri } from "../util/taleruri";
|
||||
import { createRefreshGroup, getTotalRefreshCost } from "./refresh";
|
||||
import { Amounts } from "../util/amounts";
|
||||
import {
|
||||
codecForMerchantOrderStatus,
|
||||
MerchantCoinRefundStatus,
|
||||
MerchantCoinRefundSuccessStatus,
|
||||
MerchantCoinRefundFailureStatus,
|
||||
codecForMerchantOrderStatusPaid,
|
||||
} from "../types/talerTypes";
|
||||
import { guardOperationException } from "./errors";
|
||||
import { getTimestampNow } from "../util/time";
|
||||
@ -414,14 +413,9 @@ async function processPurchaseQueryRefundImpl(
|
||||
|
||||
const refundResponse = await readSuccessResponseJsonOrThrow(
|
||||
request,
|
||||
codecForMerchantOrderStatus(),
|
||||
codecForMerchantOrderStatusPaid(),
|
||||
);
|
||||
|
||||
if (refundResponse.order_status !== "paid") {
|
||||
logger.error("can't refund unpaid order");
|
||||
return;
|
||||
}
|
||||
|
||||
await acceptRefunds(
|
||||
ws,
|
||||
proposalId,
|
||||
|
@ -839,15 +839,7 @@ export interface ExchangeRevealResponse {
|
||||
ev_sigs: ExchangeRevealItem[];
|
||||
}
|
||||
|
||||
export type MerchantOrderStatus =
|
||||
| MerchantOrderStatusPaid
|
||||
| MerchantOrderStatusUnpaid;
|
||||
|
||||
interface MerchantOrderStatusPaid {
|
||||
/**
|
||||
* Has the payment for this order (ever) been completed?
|
||||
*/
|
||||
order_status: "paid";
|
||||
|
||||
/**
|
||||
* Was the payment refunded (even partially, via refund or abort)?
|
||||
@ -930,11 +922,6 @@ export interface MerchantCoinRefundFailureStatus {
|
||||
}
|
||||
|
||||
export interface MerchantOrderStatusUnpaid {
|
||||
/**
|
||||
* Has the payment for this order (ever) been completed?
|
||||
*/
|
||||
order_status: "unpaid";
|
||||
|
||||
/**
|
||||
* URI that the wallet must process to complete the payment.
|
||||
*/
|
||||
@ -1250,7 +1237,6 @@ export const codecForMerchantOrderStatusPaid = (): Codec<
|
||||
MerchantOrderStatusPaid
|
||||
> =>
|
||||
makeCodecForObject<MerchantOrderStatusPaid>()
|
||||
.property("order_status", makeCodecForConstString("paid"))
|
||||
.property("merchant_pub", codecForString)
|
||||
.property("refund_amount", codecForString)
|
||||
.property("refunded", codecForBoolean)
|
||||
@ -1261,14 +1247,6 @@ export const codecForMerchantOrderStatusUnpaid = (): Codec<
|
||||
MerchantOrderStatusUnpaid
|
||||
> =>
|
||||
makeCodecForObject<MerchantOrderStatusUnpaid>()
|
||||
.property("order_status", makeCodecForConstString("unpaid"))
|
||||
.property("taler_pay_uri", codecForString)
|
||||
.property("already_paid_order_id", makeCodecOptional(codecForString))
|
||||
.build("MerchantOrderStatusUnpaid");
|
||||
|
||||
export const codecForMerchantOrderStatus = (): Codec<MerchantOrderStatus> =>
|
||||
makeCodecForUnion<MerchantOrderStatus>()
|
||||
.discriminateOn("order_status")
|
||||
.alternative("paid", codecForMerchantOrderStatusPaid())
|
||||
.alternative("unpaid", codecForMerchantOrderStatusUnpaid())
|
||||
.build("MerchantOrderStatus");
|
||||
|
@ -176,6 +176,11 @@ class UnionCodecBuilder<
|
||||
const baseCodec = this.baseCodec;
|
||||
return {
|
||||
decode(x: any, c?: Context): R {
|
||||
if (!c) {
|
||||
c = {
|
||||
path: [`(${objectDisplayName})`],
|
||||
};
|
||||
}
|
||||
const d = x[discriminator];
|
||||
if (d === undefined) {
|
||||
throw new DecodingError(
|
||||
|
Loading…
Reference in New Issue
Block a user