From affe9a40f543eaf47d699b4261980639910d320e Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Mon, 3 Feb 2025 13:24:55 +0800 Subject: [PATCH] :bug: Fix can repeat using a same order --- .../solsynth/snConnect/commands/SnCommand.kt | 1 + .../snConnect/services/SnOrderService.kt | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/main/kotlin/dev/solsynth/snConnect/commands/SnCommand.kt b/src/main/kotlin/dev/solsynth/snConnect/commands/SnCommand.kt index 313595f..88aadd5 100644 --- a/src/main/kotlin/dev/solsynth/snConnect/commands/SnCommand.kt +++ b/src/main/kotlin/dev/solsynth/snConnect/commands/SnCommand.kt @@ -43,6 +43,7 @@ class SnCommand(private val sn: SnService, private val eco: Economy?) : CommandE val order: SnOrder try { order = orderSrv.getOrder(orderNumber); + orderSrv.cancelOrder(orderNumber); } catch (_: Exception) { p0.sendMessage(ChatColor.RED.toString() + "An error occurred while pulling transaction. Make sure the order is exists then try again later.") return true; diff --git a/src/main/kotlin/dev/solsynth/snConnect/services/SnOrderService.kt b/src/main/kotlin/dev/solsynth/snConnect/services/SnOrderService.kt index 82ec0e8..c9eba0b 100644 --- a/src/main/kotlin/dev/solsynth/snConnect/services/SnOrderService.kt +++ b/src/main/kotlin/dev/solsynth/snConnect/services/SnOrderService.kt @@ -19,6 +19,14 @@ data class SnOrderRequest( val amount: Double ) +@Serializable +data class SnOrderCancelRequest( + @SerialName("client_id") + val clientId: String, + @SerialName("client_secret") + val clientSecret: String, +) + @Serializable data class SnOrder( val id: Long, @@ -80,4 +88,23 @@ class SnOrderService(private val sn: SnService) { return out } } + + fun cancelOrder(id: Long): SnOrder { + val body = SnOrderCancelRequest( + sn.clientId, + sn.clientSecret, + ); + val request = Request.Builder() + .url(sn.getUrl("wa", "/orders/$id/cancel")) + .post(Json.encodeToString(body).toRequestBody("application/json".toMediaTypeOrNull())) + .build() + + sn.client.newCall(request).execute().use { response -> + if (!response.isSuccessful) throw IOException("Unexpected code $response") + val responseBody = response.body!!.string() + val out = json.decodeFromString(responseBody) + + return out + } + } } \ No newline at end of file