更新记录

1.0.0(2026-05-14)

1.0.0

  • 首次发布 hl-douyin-pay-uts
  • 新增 Android / iOS / HarmonyOS 三端抖音支付拉起能力

平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
- - - - 1.0.0 1.0.0 5.0 1.0.0 13 1.0.0 13 1.0.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(5.0)

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

hl-douyin-pay-uts

抖音支付 UTS 插件,封装 Android、iOS、HarmonyOS 三端的能力检测、SDK 初始化、支付拉起和结果回调。

简介

这个插件的设计目标很简单:

  • 前端只负责把服务端返回的支付参数传给原生 SDK
  • 插件负责三端原生 SDK 的桥接、能力检测和结果回调
  • 客户端不参与签名计算,不在插件里写死商户参数

当前仓库内:

  • Android 支付联调已完成
  • HarmonyOS 支付联调已完成
  • iOS 已完成 SDK 集成、回调接入和静态编译校验,宿主仍需按文档完成真机联调

功能概览

  • initDypay(options) 初始化 / 注册抖音支付
  • canOpenDypay() 检查当前设备是否具备抖音支付唤端能力
  • openDypay(request, callback) 拉起抖音支付
  • onLogCallback(callback) 监听插件原生日志,便于联调排查

安装与引用

import * as Dypay from '@/uni_modules/hl-douyin-pay-uts'

接入前准备

在前端调用插件之前,需要先准备好以下内容:

  1. 抖音开放平台申请得到的 appid
  2. 商户号 partnerid
  3. 服务端预下单返回的 prepayid
  4. 服务端按抖音支付签名规则生成的 sign

客户端只透传这些字段,不自行生成签名。

服务端返回结构建议

业务侧常见的服务端响应结构如下,前端最终只需要取出 data.result.jsConfig.pay_info

{
  "status": 200,
  "msg": "success",
  "data": {
    "status": "ALLADA_PAY",
    "result": {
      "jsConfig": {
        "pay_info": {
          "package": "Sign=DYPay",
          "appid": "aw3tifm8xuoci5r5",
          "sign": "服务端签名",
          "partnerid": "6020260318158391",
          "prepayid": "dyxxxxxxxx",
          "noncestr": "xxxxxxxxxxxxxxxx",
          "timestamp": "1778662427"
        }
      }
    }
  }
}

HarmonyOS SDK 版本要求:

  • dypay_open_sdk-1.1.1.har 依赖的 compatibleSdkVersion 不低于 13
  • 如果项目当前还是 12,需要升级 Harmony 项目级 build-profile.json5

接口定义

type DypayRegisterOptions = {
  appId: string
  callbackScheme?: string | null
  universalLink?: string | null
}

type DypayPayInfo = {
  appid: string
  partnerid: string
  prepayid: string
  package: string
  noncestr: string
  timestamp: string
  sign: string
  preEntrustWebId?: string | null
  payscoreApplyToken?: string | null
  evokeUrl?: string | null
  paySource?: string | null
}

type DypayPayRequest = {
  payInfo: DypayPayInfo
  showLoading?: boolean
}

type DypayResult = {
  code: number
  message: string
  data?: UTSJSONObject | null
}

字段说明

DypayRegisterOptions

  • appId 抖音开放平台申请得到的移动应用 appid
  • callbackScheme iOS 回调 scheme,例如 dy12345678
  • universalLink iOS Universal Link,例如 https://your.universallink.com/app/

DypayPayInfo

  • appid 应用 ID
  • partnerid 商户号
  • prepayid 预支付交易会话 ID
  • package 支付固定值一般为 Sign=DYPay
  • noncestr 随机字符串
  • timestamp 秒级时间戳
  • sign 服务端签名结果
  • preEntrustWebId 可选,先用后付等场景扩展字段
  • payscoreApplyToken 可选,签约场景扩展字段
  • evokeUrl 可选,扩展拉起字段
  • paySource 可选,扩展来源字段

标准调用流程

1. 初始化 SDK

const initResult = Dypay.initDypay({
  appId: 'aw3tifm8xuoci5r5',
  callbackScheme: null,
  universalLink: null
})

console.log('initResult', initResult)

2. 可选:检测抖音支付能力

const canOpen = Dypay.canOpenDypay()
console.log('canOpenDypay', canOpen)

3. 发起支付

const response = await requestPayOrder()
const payInfo = response.data.result.jsConfig.pay_info

Dypay.openDypay({
  payInfo: {
    appid: payInfo.appid,
    partnerid: payInfo.partnerid,
    prepayid: payInfo.prepayid,
    package: payInfo.package,
    noncestr: payInfo.noncestr,
    timestamp: payInfo.timestamp,
    sign: payInfo.sign
  },
  showLoading: true
}, (result) => {
  console.log('dypay result', result)
})

4. 日志监听

联调阶段建议打开日志回调:

Dypay.onLogCallback((level, tag, message) => {
  console.log(`[${level}][${tag}] ${message}`)
})

返回结果说明

openDypay 的回调结构:

{
  code: 0,
  message: '支付成功',
  data: {
    resultCode: '0'
  }
}

其中:

  • code 插件层统一返回的结果码
  • message 插件层统一返回的文案
  • data 原生 SDK 的原始结果数据,便于联调排查

结果码

  • 0 支付成功
  • 1 用户取消或 SDK 返回取消态文案
  • 2 支付失败
  • 3 支付结果处理中,建议服务端查单
  • 100 未安装抖音或抖音版本过低
  • 103 重复支付被拦截
  • -1 插件本地参数校验失败或初始化失败

注意:

  • Android 端 SDK 有些场景会返回 code=1,但 message 是更具体的业务文案,例如“重复订单,取消唤起”
  • 这类情况插件会优先保留 SDK 原始 message

插件行为说明

initDypay

  • Android 记录当前 appId,安装日志桥,不主动发起支付
  • iOS 完成 appId + callbackScheme + universalLink 注册
  • HarmonyOS 当前主要用于统一调用入口,支付时仍以传入 payInfo 为准

openDypay

插件会统一校验以下 7 个必填字段:

  • appid
  • partnerid
  • prepayid
  • package
  • noncestr
  • timestamp
  • sign

缺少任意字段时会直接回调错误,不会继续调用原生 SDK。

联调建议

建议流程

  1. 服务端生成新订单
  2. 前端拿到完整支付响应
  3. 提取 pay_info
  4. 调用 initDypay
  5. 可选执行 canOpenDypay
  6. 调用 openDypay
  7. 以服务端查单 / 支付通知确认最终状态

隐私、权限声明

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

iOS 需宿主配置 URL Types 回调 scheme;HarmonyOS 需保留 querySchemes=ttcjpay;Android 使用 SDK 自带网络与安装检测能力

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

插件仅透传业务方传入的支付参数给抖音支付 SDK,不采集订单内容

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

暂无用户评论。