更新记录

1.0.4(2026-08-20)

修复已知问题

1.0.3(2026-08-20)

修复已知问题

1.0.2(2026-08-20)

修复云打包事已知问题

查看更多

平台兼容性

uni-app(3.8.2)

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

uni-app x(4.11)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 5.0 × × ×

Google Pay 谷歌支付(内购、订阅,支持V8、V9)

uni-app Android 原生支付插件(uts 插件),封装 Google Play Billing Library 8.0,支持一次性商品内购自动续期订阅

  • 插件 IDyangtm-googlepay
  • 最低 HBuilderX:3.7.2(推荐 4.x)
  • 支持平台:Android(Google Play),不支持 iOS / 鸿蒙
  • 引擎:V8(uni-app Vue3 / uni-app x)

安装

方式一:从插件市场导入(推荐)

HBuilderX → 项目里右键 uni_modules从插件市场导入 → 搜索「Google Pay 谷歌支付」或 yangtm-googlepay → 安装。

方式二:手动引入

uni_modules/yangtm-googlepay/ 目录拷贝到你的 uni-app 项目的 uni_modules/ 下。


快速开始

import {
  initBilling,
  queryProducts,
  launchPurchase,
  consumePurchase,      // 消耗型商品用
  acknowledgePurchase,  // 非消耗型 / 订阅用
  queryPurchases
} from "@/uni_modules/yangtm-googlepay"

// ① 初始化连接
initBilling(res => {
  if (res.code === 0) {
    console.log("Billing 已连接")
  } else {
    console.log("初始化失败:", res.message)
  }
})

// ② 查商品(拿价格、标题)
queryProducts(["pro_001"], "inapp", res => {
  if (res.code === 0) {
    console.log(res.data.list)
  }
})

// ③ 发起购买
launchPurchase("pro_001", "inapp", "", "", res => {
  if (res.code === 0) {
    const token = res.data.purchases[0].purchaseToken
    // ④ 服务端验单通过后处理:
    consumePurchase(token, r => console.log("已消耗:", r.code))
    // acknowledgePurchase(token, r => console.log("已确认:", r.code))
  } else if (res.code === 1) {
    console.log("用户取消")
  } else {
    console.log("购买失败:", res.message)
  }
})

API 文档

所有方法的回调统一为 BHPayResult

type BHPayResult = {
  code: number     // 0 = 成功;1 = 用户取消;正数 = Google BillingResponseCode;负数 = 插件内部错误
  message: string
  data?: any
}

initBilling(callback)

初始化 Billing 并连接 Google Play。必须先调用一次

  • 返回 code=0 表示连接成功,后续 API 才可用。

isFeatureSupported(callback)

检测当前设备是否支持 Google Play 内购(含订阅能力)。

  • data.supported === true:支持;false:不支持(无 GMS 等)

queryProducts(productIdList, productType, callback)

查询商品详情。

  • productIdListstring[],Play Console 里配置的「商品 ID」
  • productType"inapp"(一次性商品) / "subs"(订阅)
  • 返回 data.list[{ productId, title, description, productType, priceAmountMicros, priceCurrencyCode, formattedPrice }]

launchPurchase(productId, productType, obfuscatedAccountId, obfuscatedProfileId, callback)

发起购买,弹出 Google Play 收银台。

  • productId:商品 ID
  • productType"inapp" / "subs"
  • obfuscatedAccountId / obfuscatedProfileId:可选,防作弊标识(服务端验单时校验);不用可传空串 ""
  • 返回 data.purchases[0].purchaseToken把这个 token 传到你的服务端做 Google Play Developer API 验单

acknowledgePurchase(purchaseToken, callback)

确认已购(非消耗型商品 / 订阅)。3 天内不确认会自动退款

consumePurchase(purchaseToken, callback)

消耗已购(消耗型商品,发货后调用)。

queryPurchases(productType, callback)

查询已购订单,用于恢复购买 / 补单(用户换机、卸载重装、订阅状态恢复)。

destroyBilling()

释放 Billing 连接。建议在 onUnload 生命周期调用。


错误码

code 含义
0 成功
1 用户取消支付(USER_CANCELED)
2 / 3 / 4 / 5 / 6 / 7 / 8 Google Billing 业务错误(参考 Google 文档
-1 参数为空(productId / purchaseToken 缺失)
-3 / -4 Billing 未初始化 / 未连接
-10 无法获取当前 Activity
-100 initBilling 异常

服务端验单(重要 ⚠️)

绝对不要只在前端判断购买成功就发货。前端拿到的 purchaseToken 必须传到你的服务端,用 Google Play Developer API 校验后再发货:

GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}?access_token=...

返回 { purchaseState, consumptionState, acknowledgementState } 等字段,据此判断是否发货 / 消耗 / 确认。


测试注意事项

  1. 必须真机:模拟器通常没有 Google Play 服务,无法测试内购
  2. 测试账号:在 Play Console → 设置 → License testing 添加测试 Gmail 账号;或使用 内部测试轨道 上传 aab
  3. 测试卡支付:Play Console 测试环境的支付卡不会真实扣款(Google 提供专用测试卡)
  4. 订阅测试:订阅类商品测试周期最短 5 分钟

更新日志

1.0.0(2026-08)

  • 初始版本
  • 封装 Google Play Billing Library 8.0.0
  • 支持内购(inapp)+ 订阅(subs
  • 8 个 API:init / query / launch / acknowledge / consume / queryPurchases / destroy / isFeatureSupported
  • 云端 maven 依赖,无需自带 aar

隐私、权限声明

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

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

插件支付功能使用Google SDK,参考其官方网站 https://policies.google.com/privacy

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

暂无用户评论。