更新记录

1.0.0(2026-09-07)

支持最新版抖音支付插件:安卓dy-pay-sdk-tob-1.1.0.9 鸿蒙dypay_open_sdk-1.1.3 IOS:DypaySDK_1.1.0.4


平台兼容性

uni-app(5.21)

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 13 1.0.0 5.0.0 1.0.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(5.21)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

抖音支付 OpenSDK(UTS)

面向 uni-app 的抖音 App 支付 UTS 插件,封装 Android、iOS、HarmonyOS 的能力检测、支付唤起和结果回调。

特性

  • Android、iOS、HarmonyOS 三端统一调用入口
  • 客户端仅透传服务端支付参数,不参与签名
  • iOS 使用 appid://dypay 作为支付回跳 Scheme
  • 支持支付成功、取消、失败、处理中等 SDK 原始结果
  • iOS 调试时在 HBuilderX 控制台输出 [douyin-pay] 阶段日志

使用前提

  1. 在抖音开放平台创建移动应用并开通抖音支付。
  2. 服务端完成预下单和签名,客户端不能生成 sign
  3. App 必须安装抖音且版本满足 DypaySDK 要求。
  4. iOS 需要配置 URL Type 和 DouyinAppID,详见下文。

安装与引用

将插件导入项目的 uni_modules 后:

import {
  openDypay,
  isDouyinPayAvailable
} from '@/uni_modules/douyin-pay'

uni-app x 可在 .uvue 页面中使用相同的导入和调用方式,支付参数仍需全部使用 string 类型。

发布到插件市场前,请将插件 ID 改为符合 作者ID-插件英文名称 规范的唯一名称,并同步调整导入路径。

iOS 配置

在项目 manifest.jsonapp-plus.distribute.ios 中配置抖音开放平台 APPID:

{
  "infoPlist": {
    "DouyinAppID": "你的抖音开放平台APPID"
  },
  "urltypes": "你的抖音开放平台APPID"
}

插件已内置 dypay1128dypay2329dypay8663LSApplicationQueriesSchemes,用于检测和唤起抖音、抖音极速版与抖音火山版。

iOS 在启动后注册 APPID;支付前还会做一次幂等注册兜底。回跳 Scheme 固定为:

你的抖音开放平台APPID://dypay

当前版本使用 URL Scheme 回跳。若业务需要 Universal Link,需先在域名部署有效的 apple-app-site-association 文件,再启用 SDK 的 Universal Link 注册与 NSUserActivity 回调处理。

HarmonyOS 配置

插件内置 HarmonyOS DypaySDK。使用 HarmonyOS NEXT 时,请确认项目 compatibleSdkVersion 不低于 SDK 要求的版本。

服务端返回参数

服务端需向客户端提供以下 7 个字符串字段:

{
  "appid": "抖音开放平台APPID",
  "partnerid": "抖音支付商户号",
  "prepayid": "服务端预下单返回的交易会话ID",
  "package": "Sign=DYPay",
  "noncestr": "随机字符串",
  "timestamp": "秒级时间戳",
  "sign": "服务端签名"
}

signprepayid 和订单信息不得写入客户端配置、日志或插件源码。

调用示例

const payInfo = await requestPayOrder()

if (!isDouyinPayAvailable()) {
  uni.showToast({ title: '抖音未安装或版本过低', icon: 'none' })
  return
}

openDypay(
  payInfo.appid,
  payInfo.partnerid,
  payInfo.prepayid,
  payInfo.package,
  payInfo.noncestr,
  payInfo.timestamp,
  payInfo.sign
).then((result) => {
  switch (String(result.resultCode)) {
    case '0':
      // 支付成功后以服务端查单或异步通知为准
      break
    case '1':
      // 用户取消
      break
    case '3':
      // 支付处理中,建议服务端查单
      break
    default:
      // 失败:result.errorMsg 为 SDK 原始提示
      break
  }
}).catch((error) => {
  // 本地参数、UTS 调用或系统能力错误
  console.error(error)
})

返回结果

type DouyinPayResult = {
  resultCode: string
  errorMsg: string
  extraParams: string
}
resultCode 含义 建议处理
0 支付成功 服务端查单或等待支付通知确认订单
1 用户取消 保持未支付订单状态
2 支付失败 展示 errorMsg,保留订单供重试
3 支付处理中 轮询或调用服务端查单
100 抖音版本过低 提示升级抖音

联调排查

  1. 确认服务端返回全部 7 个字段,且为字符串。
  2. 确认 Android、iOS、HarmonyOS 的应用包名、签名和 APPID 已在抖音开放平台登记。
  3. iOS 确认 URL Type 包含 APPID,且 LSApplicationQueriesSchemes 未超过系统生效上限。
  4. iOS 控制台中的 [douyin-pay] 日志可区分 UTS 入口、注册、主线程唤端和 SDK 回调阶段。
  5. 支付最终状态始终以服务端查单或支付异步通知为准。

隐私与安全

  • 插件不生成、不保存支付签名或订单。
  • 插件不请求相机、定位、通讯录等系统权限。
  • DypaySDK 可能按抖音官方规则处理设备与支付相关数据,使用前请阅读抖音开放平台及 DypaySDK 的隐私说明。
  • 发布前请确认 DypaySDK 的 AAR、XCFramework、HAR 文件允许随插件二次分发。

兼容性

平台 状态
Android 支持
iOS 支持,需自定义基座或云打包
HarmonyOS NEXT 支持

许可证

本插件的开源许可证、收费策略和 DypaySDK 二次分发授权由发布者确定。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。