summaryrefslogtreecommitdiff
path: root/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
diff options
context:
space:
mode:
Diffstat (limited to 'merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt')
-rw-r--r--merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt23
1 files changed, 13 insertions, 10 deletions
diff --git a/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt b/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
index 0a405ad..9c23ef1 100644
--- a/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
+++ b/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
@@ -16,14 +16,16 @@
package net.taler.merchantlib
-import kotlinx.serialization.Decoder
-import kotlinx.serialization.Encoder
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.Serializer
-import kotlinx.serialization.json.JsonInput
+import kotlinx.serialization.encoding.Decoder
+import kotlinx.serialization.encoding.Encoder
+import kotlinx.serialization.json.JsonDecoder
import kotlinx.serialization.json.JsonObject
+import kotlinx.serialization.json.boolean
+import kotlinx.serialization.json.jsonPrimitive
import net.taler.common.ContractTerms
import net.taler.lib.common.Duration
@@ -45,19 +47,20 @@ data class PostOrderResponse(
sealed class CheckPaymentResponse {
abstract val paid: Boolean
+ @Suppress("EXPERIMENTAL_API_USAGE")
@Serializer(forClass = CheckPaymentResponse::class)
companion object : KSerializer<CheckPaymentResponse> {
override fun deserialize(decoder: Decoder): CheckPaymentResponse {
- val input = decoder as JsonInput
- val tree = input.decodeJson() as JsonObject
- val orderStatus = tree.getPrimitive("order_status").content
-// return if (orderStatus == "paid") decoder.json.fromJson(Paid.serializer(), tree)
-// else decoder.json.fromJson(Unpaid.serializer(), tree)
+ val input = decoder as JsonDecoder
+ val tree = input.decodeJsonElement() as JsonObject
+ val orderStatus = tree.getValue("order_status").jsonPrimitive.content
+// return if (orderStatus == "paid") decoder.json.decodeFromJsonElement(Paid.serializer(), tree)
+// else decoder.json.decodeFromJsonElement(Unpaid.serializer(), tree)
// manual parsing due to https://github.com/Kotlin/kotlinx.serialization/issues/576
return if (orderStatus == "paid") Paid(
- refunded = tree.getPrimitive("refunded").boolean
+ refunded = tree.getValue("refunded").jsonPrimitive.boolean
) else Unpaid(
- talerPayUri = tree.getPrimitive("taler_pay_uri").content
+ talerPayUri = tree.getValue("taler_pay_uri").jsonPrimitive.content
)
}