fix: 接入抖音原生支付并修复App支付服务缺失

This commit is contained in:
Codex
2026-09-09 12:00:13 +08:00
parent b350f1c07a
commit fe8cc21bfe
155 changed files with 11995 additions and 634 deletions
@@ -0,0 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<package android:name="com.ss.android.ugc.aweme" />
<package android:name="com.ss.android.ugc.aweme.lite" />
<package android:name="com.ss.android.ugc.live" />
</queries>
</manifest>
@@ -0,0 +1,50 @@
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 调用异常,请查询订单"}""")
}
}
}
}
@@ -0,0 +1,7 @@
{
"minSdkVersion": 21,
"dependencies": ["com.bytedance.caijing:dy-pay-sdk-tob:1.1.0.9"],
"project": {
"repositories": ["maven { url 'https://artifact.bytedance.com/repository/Volcengine/' }"]
}
}
@@ -0,0 +1,18 @@
import { InitOptions, PayOptions, PayCallback } from '../interface.uts'
import { configure, invoke } from '../common.uts'
export function initDypay(options: InitOptions): boolean {
if (!configure(options.appId)) return false
TbDouyinPayNative.initialize(options.appId)
return true
}
export function canOpenDypay(): boolean {
return TbDouyinPayNative.available()
}
export function openDypay(options: PayOptions, callback: PayCallback): void {
invoke(options, callback, (payload: string, loading: boolean, done: (raw: string) => void) => {
TbDouyinPayNative.pay(payload, loading, done)
})
}