diff options
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.kt | 23 |
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 ) } |