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() 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) { 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 调用异常,请查询订单"}""") } } } }