51 lines
2.0 KiB
Kotlin
51 lines
2.0 KiB
Kotlin
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 调用异常,请查询订单"}""")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|