项目作者: RevenueMonster

项目描述 :
Revenue Monster Kotlin Multiplatform SDK ⚡️
高级语言: Kotlin
项目地址: git://github.com/RevenueMonster/rm-kotlin-sdk.git
创建时间: 2021-05-25T04:39:39Z
项目社区:https://github.com/RevenueMonster/rm-kotlin-sdk

开源协议:MIT License

下载


RM Kotlin Multiplatform SDK


maven central
test status
license

badge
badge
badge
badge

Revenue Monster Kotlin Multiplatform SDK, support every possible platform, such as desktop and mobile.

🔨 Installation with Gradle

Maven Central

  1. repositories {
  2. google()
  3. mavenCentral()
  4. }
  5. dependencies {
  6. implementation("io.revenuemonster.sdk:rm-kotlin-sdk:2.2.0")
  7. }

⚠ Don’t forget to implement ⚠

Kotlin Coroutines

Kotlinx Datetime

For more detail please visit our wiki

🪣 Requirements

  • Kotlin compiler at least 1.5.10
  • JDK at least 1.8

✨ Features

  • Minimal package dependency
  • Support multiple platform

📦️ Dependencies

Package name Version
ktor 2.1.2
kotlinx.serialization 1.7.20
kotlinx-datetime 0.4.0

🤖 Supported Platforms

The idea is to support every possible platforms without pain

Platform Architecture Technology Package name Support
badge macOS JVM rm-kotlin-sdk-jvm
badge linux JVM rm-kotlin-sdk-jvm
badge window JVM rm-kotlin-sdk-jvm
badge android Android rm-kotlin-sdk-android

🙈 Example

How to get your credential

  1. import io.revenuemonster.sdk.RevenueMonsterAuth
  2. import io.revenuemonster.sdk.RevenueMonsterSDK
  3. import io.revenuemonster.sdk.model.auth.Config
  4. import io.revenuemonster.sdk.util.RMException
  5. val config = Config(
  6. clientID = "<<<Client ID>>>",
  7. clientSecret = "<<<Client Secret>>>",
  8. privateKey = "<<<YOUR PRIVATE KEY>>>",
  9. sandbox = true
  10. )
  11. GlobalScope.launch {
  12. try {
  13. val auth = RevenueMonsterAuth(config).getAccessToken()
  14. val sdk = RevenueMonsterSDK(auth)
  15. val result = sdk.payment.getTransactions()
  16. println(result)
  17. }catch (e: RMException){
  18. println(e.message)
  19. println(e.errorCode)
  20. println(e.errorMessage)
  21. }catch (e: Throwable){
  22. e.printStackTrace()
  23. }
  24. }

Custom Request (Sample)

If there’s some new Feature / Open API, is not updated only we suggest to use this method, we handled most of the data processing & security check part. What you need to do only pass the request parameters and url.

Get

  1. val sdk = RevenueMonsterSDK(auth)
  2. val response = sdk.custom(url = "/v3/store/1692604052727021311", HttpMethod.Get)
  3. val json = Json {
  4. ignoreUnknownKeys = true
  5. }
  6. val store = json.decodeFromString<Item<Store>>(response.bodyAsText())

Post

  1. @Serializable
  2. data class LoyaltyPointRequest(
  3. val point: Int,
  4. val type: String,
  5. val countryCode: String,
  6. val phoneNumber: String
  7. )
  8. @Serializable
  9. data class RMResponse(
  10. val code: String
  11. )
  1. val data = LoyaltyPointRequest(
  2. point = 100,
  3. type = "PHONENUMBER",
  4. countryCode = "60",
  5. phoneNumber = "123456789"
  6. )
  7. try{
  8. val jsonElement = Json.encodeToJsonElement(data)
  9. val sdk = RevenueMonsterSDK(auth)
  10. val response = sdk.custom("/v3/loyalty/reward", HttpMethod.Post, jsonElement)
  11. val result = Json.decodeFromString<RMResponse>(response.bodyAsText())
  12. }catch (e: RMException){
  13. println(e.message)
  14. println(e.errorCode)
  15. println(e.errorMessage)
  16. }catch (e: Throwable){
  17. e.printStackTrace()
  18. }

Version 2.1.1 onward

Starting from version 2.1.1 onward, users will have the ability to manually set the timeout or socket timeout.

By default, the request timeout will be set to 95 seconds (95000L), and the socket timeout will be set to 60 seconds (60000L).

  1. sdk.setTimeout(
  2. timeout = 120000L,
  3. socketTimeout = 120000L
  4. )

📄 License

MIT