Files
frontend-app/uni_modules/tb-douyin-pay/utssdk/app-android/TbDouyinPayNative.kt
T

51 lines
2.0 KiB
Kotlin
Raw Normal View History

package uts.sdk.modules.tbDouyinPay
import android.os.Handler
import android.os.Looper
import com.ss.android.dypay.api.DyPay
import com.ss.android.dypay.api.IDyPayResultCallback
import io.dcloud.uts.UTSAndroid
import org.json.JSONObject
object TbDouyinPayNative {
private val main = Handler(Looper.getMainLooper())
fun initialize(appId: String) { DyPay.setAppId(appId) }
fun available(): Boolean {
val activity = UTSAndroid.getUniActivity() ?: return false
return DyPay.isDypayAppUsable(activity)
}
fun pay(payload: String, loading: Boolean, done: (String) -> Unit) {
main.post {
val activity = UTSAndroid.getUniActivity()
if (activity == null || activity.isFinishing) {
done("""{"resultCode":"2","errorMsg":"当前页面不可用"}""")
return@post
}
try {
if (!DyPay.isDypayAppUsable(activity)) {
done("""{"resultCode":"100","errorMsg":"请安装或升级抖音客户端"}""")
return@post
}
val json = JSONObject(payload)
val data = HashMap<String, String>()
for (key in listOf("appid", "partnerid", "prepayid", "package", "noncestr", "timestamp", "sign")) {
data[key] = json.getString(key)
}
DyPay(activity).pay(data, object : IDyPayResultCallback {
override fun onResult(result: Map<String, String>) {
val response = JSONObject()
.put("resultCode", result["resultCode"] ?: "3")
.put("errorMsg", result["errorMsg"] ?: "")
main.post { done(response.toString()) }
}
}, loading)
} catch (_: Exception) {
done("""{"resultCode":"2","errorMsg":"支付 SDK 调用异常,请查询订单"}""")
}
}
}
}