fix: 修复抖音支付双端UTS编译兼容

This commit is contained in:
Codex
2026-09-10 10:57:53 +08:00
parent 3e2e1829a8
commit e692f3d9b1
6 changed files with 180 additions and 9 deletions
+25
View File
@@ -127,3 +127,28 @@ HBuilderX 5.24 App 资源编译及导出成功,仅有既有 CSS Autoprefixer
39 项前端测试通过,包含杀进程后新运行上下文恢复、取消/原生错误、离线恢复、失败跳转重试、迟到成功及微信/支付宝失败页回归。
本次只改 JavaScript、测试和文档,不改后端、原生插件、SQL、接口或页面样式。尚未真机实付。
HBuilderX 5.24 App 资源编译与导出成功,只有既有 CSS Autoprefixer 注释警告。
## 双端 UTS 编译兼容(2026-09-10,插件 0.2.1)
基于用户确认的远端 `dev_codex` / `3e2e182`,不改变支付页面或后端逻辑。
- 修复 `common.uts` 在 iOS 生成 Swift 时局部变量被推断为 `PayInfo?`:先判空,再明确声明 `PayInfo`;字段值先收集为非空字符串后验证,不修改签名原文。
- `JSON.stringify` 的可空返回值在加锁前处理;序列化失败直接结束,不把 `String?` 传入原生支付接口,也不会占用支付锁。
- 使用显式 `new Array<string>`,避免生成依赖较新 Android 运行时的 `_uA` 数组辅助函数,同时让 Swift 元素类型明确。
- Android 与 iOS 共用修复。Android 的 DyPay 类及方法已通过官方 Maven `com.bytedance.caijing:dy-pay-sdk-tob:1.1.0.9` 的真实 classes.jar 核验,不改 SDK 包名、不使用反射绕过错误。
验证:
```powershell
# 使用实际安装路径;资源导出与 Kotlin 依赖可以来自不同安装目录。
$env:HBUILDERX_HOME = '你的 HBuilderX 安装目录'
npm run test:douyin
npm run test:douyin:uts
# 先通过 HBuilderX 导出 APP 资源,再使用已安装 Android UTS 扩展的目录。
# SdkJar 是从上述官方 AAR 中解压出的 classes.jar。
./tests/compile-douyin-android.ps1 -HBuilderXHome '含 Android UTS 扩展的 HBuilderX 目录' -SdkJar 'SDK classes.jar 的绝对路径'
```
本地结果:39 项页面/业务回归 + 5 项实际共享 UTS 逻辑测试全部通过;HBuilderX 5.24 App 资源导出通过;生成的 Kotlin 与原始 `TbDouyinPayNative.kt` 使用真实 Android/UTS/DyPay 依赖编译成功。Kotlin 中跨平台空值兜底产生的“左侧非空”提示是警告。
验证边界:UTS 逻辑测试转译为 JS,不等于原生测试;Kotlin 编译不等于完整 APK 打包。iOS 已检查生成 Swift 的 `PayInfo` 和 `String` 类型,但 Windows 无 Xcode,未完成 IPA 原生编译或真机交易。仍须重新云打包 Android/iOS,验收正常支付、取消、杀进程恢复及成功/失败跳转。插件 0.2.1 必须随完整 APK/IPA 或自定义基座发布,不能仅用 WGT 更新旧插件。无后端、SQL、支付接口或商户配置变更。