diff options
Diffstat (limited to 'merchant-lib/src/main/java/net')
-rw-r--r-- | merchant-lib/src/main/java/net/taler/merchantlib/Config.kt (renamed from merchant-lib/src/main/java/net/taler/merchantlib/MerchantConfig.kt) | 15 | ||||
-rw-r--r-- | merchant-lib/src/main/java/net/taler/merchantlib/MerchantApi.kt | 12 | ||||
-rw-r--r-- | merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt (renamed from merchant-lib/src/main/java/net/taler/merchantlib/PostOrderRequest.kt) | 0 | ||||
-rw-r--r-- | merchant-lib/src/main/java/net/taler/merchantlib/Refunds.kt (renamed from merchant-lib/src/main/java/net/taler/merchantlib/ConfigResponse.kt) | 23 |
4 files changed, 43 insertions, 7 deletions
diff --git a/merchant-lib/src/main/java/net/taler/merchantlib/MerchantConfig.kt b/merchant-lib/src/main/java/net/taler/merchantlib/Config.kt index a8d113e..eb09485 100644 --- a/merchant-lib/src/main/java/net/taler/merchantlib/MerchantConfig.kt +++ b/merchant-lib/src/main/java/net/taler/merchantlib/Config.kt @@ -20,6 +20,21 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable +data class ConfigResponse( + /** + * libtool-style representation of the Merchant protocol version, see + * https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning + * The format is "current:revision:age". + */ + val version: String, + + /** + Currency supported by this backend. + */ + val currency: String +) + +@Serializable data class MerchantConfig( @SerialName("base_url") val baseUrl: String, diff --git a/merchant-lib/src/main/java/net/taler/merchantlib/MerchantApi.kt b/merchant-lib/src/main/java/net/taler/merchantlib/MerchantApi.kt index 96892f5..c92d4d2 100644 --- a/merchant-lib/src/main/java/net/taler/merchantlib/MerchantApi.kt +++ b/merchant-lib/src/main/java/net/taler/merchantlib/MerchantApi.kt @@ -72,6 +72,18 @@ class MerchantApi(private val httpClient: HttpClient) { } as OrderHistory } + suspend fun giveRefund( + merchantConfig: MerchantConfig, + orderId: String, + request: RefundRequest + ): Response<RefundResponse> = response { + httpClient.post(merchantConfig.urlFor("private/orders/$orderId/refund")) { + header(Authorization, "ApiKey ${merchantConfig.apiKey}") + contentType(Json) + body = request + } as RefundResponse + } + } fun getDefaultHttpClient(): HttpClient = HttpClient(OkHttp) { diff --git a/merchant-lib/src/main/java/net/taler/merchantlib/PostOrderRequest.kt b/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt index 783dd19..783dd19 100644 --- a/merchant-lib/src/main/java/net/taler/merchantlib/PostOrderRequest.kt +++ b/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt diff --git a/merchant-lib/src/main/java/net/taler/merchantlib/ConfigResponse.kt b/merchant-lib/src/main/java/net/taler/merchantlib/Refunds.kt index 49164e6..61f0ab7 100644 --- a/merchant-lib/src/main/java/net/taler/merchantlib/ConfigResponse.kt +++ b/merchant-lib/src/main/java/net/taler/merchantlib/Refunds.kt @@ -16,19 +16,28 @@ package net.taler.merchantlib +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import net.taler.common.Amount @Serializable -data class ConfigResponse( +data class RefundRequest( /** - * libtool-style representation of the Merchant protocol version, see - * https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning - * The format is "current:revision:age". + * Amount to be refunded */ - val version: String, + val refund: Amount, /** - Currency supported by this backend. + * Human-readable refund justification */ - val currency: String + val reason: String +) + +@Serializable +data class RefundResponse( + /** + * URL (handled by the backend) that the wallet should access to trigger refund processing. + */ + @SerialName("taler_refund_uri") + val talerRefundUri: String ) |