diff --git a/packages/taler-wallet-core/src/operations/refund.ts b/packages/taler-wallet-core/src/operations/refund.ts index fb39aa638..e9324712e 100644 --- a/packages/taler-wallet-core/src/operations/refund.ts +++ b/packages/taler-wallet-core/src/operations/refund.ts @@ -48,6 +48,7 @@ import { MerchantCoinRefundFailureStatus, codecForMerchantOrderStatusPaid, AmountString, + codecForMerchantOrderRefundPickupResponse, } from "../types/talerTypes"; import { guardOperationException } from "./errors"; import { getTimestampNow, Timestamp } from "../util/time"; @@ -472,25 +473,22 @@ async function processPurchaseQueryRefundImpl( return; } - const requestUrl = new URL( - `orders/${purchase.contractData.orderId}`, + `orders/${purchase.contractData.orderId}/refund`, purchase.contractData.merchantBaseUrl, ); - requestUrl.searchParams.set( - "h_contract", - purchase.contractData.contractTermsHash, - ); logger.trace(`making refund request to ${requestUrl.href}`); - const request = await ws.http.get(requestUrl.href); + const request = await ws.http.postJson(requestUrl.href, { + h_contract: purchase.contractData.contractTermsHash, + }); logger.trace("got json", JSON.stringify(await request.json(), undefined, 2)); const refundResponse = await readSuccessResponseJsonOrThrow( request, - codecForMerchantOrderStatusPaid(), + codecForMerchantOrderRefundPickupResponse(), ); await acceptRefunds( diff --git a/packages/taler-wallet-core/src/types/talerTypes.ts b/packages/taler-wallet-core/src/types/talerTypes.ts index 99f44ea25..f251b47d1 100644 --- a/packages/taler-wallet-core/src/types/talerTypes.ts +++ b/packages/taler-wallet-core/src/types/talerTypes.ts @@ -849,6 +849,13 @@ interface MerchantOrderStatusPaid { * Amount that was refunded in total. */ refund_amount: AmountString; +} + +interface MerchantOrderRefundResponse { + /** + * Amount that was refunded in total. + */ + refund_amount: AmountString; /** * Successful refunds for this payment, empty array for none. @@ -1265,12 +1272,19 @@ export const codecForMerchantOrderStatusPaid = (): Codec< MerchantOrderStatusPaid > => buildCodecForObject() - .property("merchant_pub", codecForString()) .property("refund_amount", codecForString()) .property("refunded", codecForBoolean) - .property("refunds", codecForList(codecForMerchantCoinRefundStatus())) .build("MerchantOrderStatusPaid"); +export const codecForMerchantOrderRefundPickupResponse = (): Codec< + MerchantOrderRefundResponse + > => + buildCodecForObject() + .property("merchant_pub", codecForString()) + .property("refund_amount", codecForString()) + .property("refunds", codecForList(codecForMerchantCoinRefundStatus())) + .build("MerchantOrderRefundPickupResponse"); + export const codecForMerchantOrderStatusUnpaid = (): Codec< MerchantOrderStatusUnpaid > =>