From 694d913d1f226b3d284258286c73a035fd43da7d Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 27 Jul 2020 13:36:32 +0530 Subject: latest merchant protocol for refunds --- src/operations/refund.ts | 10 ++-------- src/types/talerTypes.ts | 22 ---------------------- src/util/codec.ts | 5 +++++ 3 files changed, 7 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/operations/refund.ts b/src/operations/refund.ts index b91d42a3f..35384c087 100644 --- a/src/operations/refund.ts +++ b/src/operations/refund.ts @@ -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, diff --git a/src/types/talerTypes.ts b/src/types/talerTypes.ts index 2730da4b2..1dfcd80a2 100644 --- a/src/types/talerTypes.ts +++ b/src/types/talerTypes.ts @@ -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() - .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() - .property("order_status", makeCodecForConstString("unpaid")) .property("taler_pay_uri", codecForString) .property("already_paid_order_id", makeCodecOptional(codecForString)) .build("MerchantOrderStatusUnpaid"); - -export const codecForMerchantOrderStatus = (): Codec => - makeCodecForUnion() - .discriminateOn("order_status") - .alternative("paid", codecForMerchantOrderStatusPaid()) - .alternative("unpaid", codecForMerchantOrderStatusUnpaid()) - .build("MerchantOrderStatus"); diff --git a/src/util/codec.ts b/src/util/codec.ts index c468704b2..383a2d99e 100644 --- a/src/util/codec.ts +++ b/src/util/codec.ts @@ -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( -- cgit v1.2.3