更新记录
1.0.1(2026-09-18)
更新插件信息
1.0.0(2026-09-18)
支持 抖音支付
平台兼容性
uni-app(5.24)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | √ | 1.0.0 | × | × | √ | 1.0.0 | √ | 1.0.0 | 5.0 | 1.0.0 | 12 | 1.0.0 | 20 | 1.0.0 |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.24)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 | 微信小程序 |
|---|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | 12 | 1.0.0 | 20 | 1.0.0 | - |
【Android+iOS+Harmony】抖音支付
抖音支付 UTS 插件,为 uni-app 和 uni-app x 提供 Android、iOS、HarmonyOS 三端统一支付接口。
支持服务端预下单结果透传、抖音客户端拉起和支付结果回调。插件不在客户端生成签名,不保存商户私钥。
目录
接入前准备
- 在抖音支付商家平台开通 App 支付产品。
- 在抖音开放平台创建或配置移动应用,获取支付使用的
appid。 - 按平台配置应用包名、签名、Bundle ID、HarmonyOS 包名和签名信息。
- 服务端调用抖音支付预下单接口,取得以下客户端支付参数:
appidpartneridprepayidpackagenoncestrtimestampsign
- 客户端不要自行生成
sign,也不要把商户私钥放在客户端。
官方文档请以项目提供的本地抖音支付文档为准,重点参考 iOS、Android、HarmonyOS SDK 接入,以及预下单、签名、支付结果通知和订单查询接口。
项目配置
插件内部的 utssdk/*/config.json 只负责声明对应平台的原生 SDK 依赖。HarmonyOS 的 OHPM 仓储属于项目级配置,必须放在项目根目录的 harmony-configs/.ohpmrc,不能只修改插件目录中的配置。
HarmonyOS OHPM 仓储
项目必须配置 harmony-configs/.ohpmrc。推荐内容如下:
publish_registry=http://artifact.bytedance.com/repository/byted-ohpm/
registry=https://ohpm.openharmony.cn/ohpm/,http://artifact.bytedance.com/repository/byted-ohpm/
不要把 https://ohpm.byted.org/repos/ohpm/ 放在 registry 中。该地址连接不稳定时会导致 @douyin/dypay_open_sdk 及其间接依赖下载失败,并出现:
ECONNRESET Client network socket disconnected before secure TLS connection was established
如使用命令行安装依赖,可以执行:
ohpm config set registry https://ohpm.openharmony.cn/ohpm/,http://artifact.bytedance.com/repository/byted-ohpm/
云打包时请确认项目中的 harmony-configs/.ohpmrc 已随项目提交。
云打包前检查以下内容:
harmony-configs/.ohpmrc位于项目根目录,而不是uni_modules/tt-douyin-pay/目录。registry至少包含https://ohpm.openharmony.cn/ohpm/和http://artifact.bytedance.com/repository/byted-ohpm/。- 工程依赖版本与插件 app-harmony/config.json 中的
1.1.3一致。 - 修改仓储后重新生成或重新上传 HarmonyOS 云打包工程,避免继续使用旧的依赖缓存。
HarmonyOS module.json5
如果项目存在 harmony-configs/entry/src/main/module.json5,该文件会覆盖默认配置,必须保留项目原有的完整配置,只补充抖音支付需要的内容:
{
"module": {
"querySchemes": [
"snssdk1128",
"douyinopensdk"
],
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
}
上面是需要合并的字段示例,不是完整的 module.json5。使用时请保留项目生成的完整 module、abilities、pages 和 skills 配置,并确认:
querySchemes同时包含snssdk1128和douyinopensdk。- 需要通过 App Link 回调时,在对应
skills.uris中配置实际 HTTPS 域名和路径。 - 保留
ohos.permission.INTERNET。
示例工程中的 www.example.com、path1 只是占位值,发布前必须替换成实际配置。
iOS Info.plist
编辑 app-ios/Info.plist,将 your_client_key 替换为抖音开放平台配置的实际回调 Scheme:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>your_client_key</string>
</array>
</dict>
</array>
同时,register 的 scheme 必须传同一个值。插件已保留 snssdk1128 查询白名单,用于检测抖音客户端是否可用。
Android
Android 依赖和 Maven 仓库由插件配置自动处理。请确保抖音开放平台登记的包名和签名与最终 App 完全一致,并使用自定义基座或云打包 App 真机测试。
快速开始
import { getTTDouyinPaySDK } from '@/uni_modules/tt-douyin-pay'
const sdk = getTTDouyinPaySDK()
sdk.register({
appid: '你的抖音支付 AppID',
scheme: 'iOS 回调 Scheme,Android/Harmony 传空字符串',
universalLink: '未配置时传空字符串',
success: () => {
console.log('抖音支付 SDK 初始化成功')
},
fail: (error) => {
console.error('抖音支付 SDK 初始化失败', error)
},
complete: () => {}
})
sdk.pay({
appid: '你的抖音支付 AppID',
partnerid: '服务端预下单返回的 partnerid',
prepayid: '服务端预下单返回的 prepayid',
package: 'DYPay',
noncestr: '服务端签名使用的随机字符串',
timestamp: '服务端签名使用的时间戳',
sign: '服务端计算的签名',
success: (result) => {
console.log('支付客户端回调', result)
},
fail: (error) => {
console.error('支付失败、取消或结果未知', error)
},
complete: (result) => {
console.log('支付流程结束', result)
}
})
interface.uts 的公开 API 不使用 Promise,统一通过 success、fail 和 complete 回调返回结果。
API
getTTDouyinPaySDK
getTTDouyinPaySDK(): TTDouyinPaySDK
返回支付 SDK 单例。
isInstall
sdk.isInstall(): boolean
检查当前平台的抖音支付客户端是否可用。
- Android:调用官方 SDK 的可用性判断。
- iOS:检查
snssdk1128://是否可以打开。 - HarmonyOS:官方 SDK 不提供同步检测接口,返回
true,最终以openDypay结果为准。
register
sdk.register(options: TTDouyinPayRegisterOptions): void
| 参数 | 类型 | 说明 |
|---|---|---|
appid |
string |
抖音支付 AppID,必填。 |
scheme |
string |
iOS 回调 Scheme,iOS 必填;Android/Harmony 传空字符串。 |
universalLink |
string |
预留的 iOS Universal Link,未配置时传空字符串。 |
success |
callback/null |
初始化成功回调。 |
fail |
callback/null |
初始化失败回调。 |
complete |
callback/null |
初始化结束回调。 |
pay
sdk.pay(options: TTDouyinPayOptions): void
支付参数必须来自服务端预下单接口,详见下方支付参数。
支付参数
| 参数 | 类型 | 说明 |
|---|---|---|
appid |
string |
抖音支付 AppID,必须与 register 的值一致。 |
partnerid |
string |
抖音支付商户号。 |
prepayid |
string |
预下单返回的支付交易会话 ID,官方文档说明有效期通常为 2 小时。 |
package |
string |
支付产品类型,通常使用服务端返回值,常见值为 DYPay。 |
noncestr |
string |
参与签名的随机字符串。 |
timestamp |
string |
参与签名的时间戳字符串。 |
sign |
string |
服务端使用签名规则计算出的签名值。 |
success |
callback/null |
客户端成功回调。 |
fail |
callback/null |
客户端失败、取消或未知结果回调。 |
complete |
callback/null |
支付流程结束回调。 |
回调和支付状态
插件会将官方 SDK 的 resultCode 归一化为 status:
resultCode |
status |
说明 |
|---|---|---|
0 |
success |
客户端支付调用成功。 |
1 |
cancel |
用户取消支付。 |
2 |
failed |
其他错误。 |
3 |
unknown |
抖音未返回明确结果。 |
100 |
unavailable |
支付客户端不可用或未安装。 |
103 |
duplicate |
重复支付被拦截。 |
成功回调中的 status == 'success' 只表示客户端 SDK 返回成功,不等于服务端订单最终支付成功。
商户必须以后端的支付结果通知或订单查询结果作为最终依据。对于 unknown、网络中断、App 被杀死、用户返回超时等情况,不要直接关闭订单或重复创建订单,应使用原订单号查询支付状态。
回调对象可能包含:
resultCode:官方 SDK 返回的字符串错误码。status:插件归一化后的状态。errorMsg:错误描述,可能为空。extraParams:官方 SDK 扩展参数,可能为空。rawData:插件保留的原始回调字段。
错误码
errCode |
说明 |
|---|---|
101 |
未安装抖音支付可用客户端。 |
102 |
SDK 未初始化或初始化失败。 |
201 |
appid 为空。 |
202 |
iOS scheme 为空。 |
203 |
无法获取当前 Activity 或 ViewController。 |
301 |
prepayid 为空。 |
302 |
package 为空。 |
303 |
noncestr 为空。 |
304 |
timestamp 为空。 |
305 |
sign 为空。 |
306 |
partnerid 为空。 |
307 |
支付参数中的 appid 与初始化时不一致。 |
308 |
已有支付正在进行。 |
601 |
官方 SDK 返回支付失败、取消或未知结果。 |
999 |
其他异常。 |
错误对象同时可能包含 resultCode、errorMsg、extraParams 和 rawData,用于排查原生 SDK 返回信息。
常见问题
iOS 报 Unable to find module dependency: 'DypaySDK'
确认 app-ios/config.json 同时包含:
dependencies-pod-sourcesDypaySDKversion: 1.1.0.4
并清理旧的 unpackage 产物后重新云打包。
iOS 报 has been renamed to
插件当前已适配 DypaySDK 1.1.0.4 的 Swift 方法映射:
openDypay(withInfo:from:resultCallback:)
processDypayResult(with:callback:)
不要根据旧 Objective-C 方法名自行修改插件源码。
HarmonyOS 报 ECONNRESET 或 OHPM 安装失败
检查项目根目录的 harmony-configs/.ohpmrc:
registry=https://ohpm.openharmony.cn/ohpm/,http://artifact.bytedance.com/repository/byted-ohpm/
确保日志不再优先访问 https://ohpm.byted.org/repos/ohpm/,并重新生成 Harmony 工程后安装依赖。
Android 报 onResult 或 Map 类型错误
请使用插件当前版本的纯 UTS 实现,不要自行增加 Java/Kotlin 回调辅助类。官方回调签名是:
override fun onResult(map: Map<String, String>)
云打包前清理旧的 unpackage/dist 产物,避免使用历史生成代码。
为什么客户端成功后还要查订单
客户端回调只表示抖音客户端完成了当前 SDK 流程。最终支付状态以服务端支付结果通知和订单查询为准,这是抖音支付官方接入要求。

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 983
赞赏 4
下载 12617190
赞赏 1949
赞赏
京公网安备:11010802035340号