summaryrefslogtreecommitdiff
path: root/merchant-lib/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'merchant-lib/src/main/java')
-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.kt12
-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
)