fix: 接入抖音原生支付并修复App支付服务缺失
This commit is contained in:
@@ -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)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user