【发布时间】:2019-06-08 03:55:24
【问题描述】:
我在一个市场项目中使用 AIDL 进行支付和发送分数 我返回 orderID 以检查结果付款 当开发人员发送请求时,我将她的请求发送到服务器并收到 orderID 返回给开发人员 在有趣的结果支付中,我向我们的服务器发送了一个请求,以使用 orderID 获取结果支付,而响应没有返回我必须返回结果
class DeveloperApiService : Service() {
private val binder = object : ITiroDevApi.Stub() {
override fun resultPay(token: String?, orderId: String?): String {
var result = ""
ServiceHelper.resultPayment(ActiveOwner(), GamerSharedPreferenceHelper(applicationContext).userID
, orderId, token,
object : CustomObserver<ServiceHelper.StringResult>() {
override fun onError(e: Throwable?) {
super.onError(e)
result = "tryAgain"
}
override fun onNext(response: ServiceHelper.StringResult?) {
super.onNext(response)
if (response!!.result != "") {
result = response.result
} else {
when (response.error) {
"error_token_invalid_or_expired" -> result = "error_token_invalid_or_expired"
"error_payment_not_verified" -> result = "error_payment_not_verified"
}
}
}
})
if (result == "") Thread.sleep(2000)
return result
}
override fun requestPay(token: String?, price: String?): String {
var result = ""
ServiceHelper.requestPayment(ActiveOwner(), token, GamerSharedPreferenceHelper(applicationContext).userID
, price,
object : CustomObserver<ServiceHelper.StringResult>() {
override fun onError(e: Throwable?) {
super.onError(e)
result = "tryAgain"
}
override fun onNext(response: ServiceHelper.StringResult?) {
super.onNext(response)
if (response!!.result != "") {
result = response.result
inAppPayment(GamerSharedPreferenceHelper(applicationContext).userID, response.result, token!!)
}
when (response.error) {
"error_token_invalid_or_expired" -> result = "error_token_invalid_or_expired"
"error_min_amount" -> result = "error_min_amount"
}
}
})
while (result == "") {
Thread.sleep(1000)
}
return result
}
private fun inAppPayment(userId: String, orderId: String, token: String) {
var result = ""
ServiceHelper.inAppPayment(ActiveOwner(), userId, orderId, token,
object : CustomObserver<ServiceHelper.StringResult>() {
override fun onError(e: Throwable?) {
super.onError(e)
}
override fun onNext(response: ServiceHelper.StringResult?) {
super.onNext(response)
when (response.error) {
"error_already_pay" -> result = ""
"error_payment_gateway" -> result = "error_payment_gateway"
}
if (response.result != "") {
val browserIntent = Intent("android.intent.action.VIEW", Uri.parse(response.result))
applicationContext.startActivity(browserIntent)
}
}
})
}
你对解决这个问题有什么建议?
【问题讨论】:
-
在我使用 Thread.sleep 的代码中但这是错误的(这不是真的)