Я пытаюсь использовать RoyalPay SDK для создания заказа и оплаты Alipay. Код ответа - 200, но я не могу разобрать JSON в ответе.
Как мне решить эту проблему?
Код, с помощью которого я создаю запрос API:
interface RoyalPayApi {
@FormUrlEncoded
@Headers("Accept: application/json", "Content-Type: application/json")
@PUT("/api/v1.0/gateway/partners/{partner_code}/app_orders/{order_id}")
fun createRoyalPaySDKOrder(@Path(value = "partner_code", encoded = true) partner_code: String, @Path(value = "order_id", encoded = true) order_id: String,
@Query("time") time: Long, @Query("nonce_str") nonce_str: String, @Query("sign") sign: String,
@Field("description") description: String,
@Field("price") price: Int,
@Field("currency") currency: String,
@Field("channel") channel: String,
@Field("operator") operator: String,
@Field("system") system: String): Call<JSONObject> // com.alibaba.fastjson.JSONObject
}
Код, который я получаю дооснащения:
fun createService(): RoyalPayApi {
val retrofit = Retrofit.Builder()
.baseUrl(ROYAL_PAY_ADDRESS)
.addConverterFactory(FastJsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
return retrofit.create(RoyalPayApi::class.java)
}
Код отправки запроса и получения ответа:
var api = createService()
var call = api.createRoyalPaySDKOrder(ROYAL_PAY_PARTNER_CODE, order_id, time, ROYAL_PAY_NONCE_STR, sign,
description, price, "AUD", channel, "kate", "android")
call.enqueue(object : Callback<JSONObject>{
override fun onResponse(call: Call<JSONObject>, response: Response<JSONObject>) {
val str = ""
}
override fun onFailure(call: Call<JSONObject>, t: Throwable) {
val str = ""
}
})
Это ответ, который я получил:
Это тело ответа (китайский здесь не должен влиять на понимание):
Сюда входит необработанный ответ (с использованием com.google.gson.JsonObject):
Необработанный ответ с использованием com.alibaba.fastjson.JSONObject
если изменить JSONObject на String, он просто вернет строковую версию ошибки :(: