更新记录

1.0.1(2026-07-13)

发版

1.0.0(2026-07-13)

  • 支持 Google Play Billing Library 8.0.0。
  • 支持应用内商品和订阅商品查询、支付、消耗、确认交易、订阅更新和应用内消息。
  • 示例工程默认使用一次性应用内商品 ID shanggong,用于 Google Play 内部测试流程验证。

平台兼容性

uni-app(5.21)

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

uni-app x(5.21)

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

ai-google-pay

ai-google-pay 是面向 uni-app x Android 端的 Google Play Billing v8 UTS 插件,封装了内购商品、订阅商品、支付、消耗、确认交易、订阅更新和应用内消息能力。

平台支持

平台 支持
App Android 支持
App iOS 不支持,调用会返回 ai-google-pay only supports Android.
H5 / 小程序 不支持

依赖和权限

  • Android 依赖:com.android.billingclient:billing:8.0.0
  • Android 权限:com.android.vending.BILLING
  • 需要在 Google Play Console 创建商品,并通过 Google Play 安装包进行完整支付测试。
  • 含 Android 三方 SDK 的 UTS 插件真实调用需使用自定义基座或正式包,标准基座主要用于编译检查。

快速接入

import {
  doInit,
  doQuerySku,
  doPay,
  doConsume,
  doAcknowledgePurchase,
  doQueryPurchases,
  AiCommonResult
} from '@/uni_modules/ai-google-pay'

const productId = 'shanggong'

doInit({ enableAutoServiceReconnection: true }, (result: AiCommonResult) => {
  console.log('init', result)
})

doQuerySku({ inapp: [productId] }, (result: AiCommonResult) => {
  console.log('products', result)
})

doPay({ productId }, (result: AiCommonResult) => {
  console.log('pay', result)
})

示例测试

当前示例工程默认使用一次性应用内商品 ID:shanggong

  1. 在 Google Play Console 的应用内商品中创建并启用 shanggong
  2. 确认 manifest.json 中的 Android 包名、签名证书和上传到 Google Play 的测试包一致。
  3. 把测试账号加入 Google Play Console 的许可测试或内部测试名单。
  4. 通过 Google Play 内部测试链接安装应用;普通本地安装通常不能完整验证真实支付链路。
  5. 打开示例页,依次点击 初始化查询商品支付
  6. 支付成功后,如果是消耗品调用 消耗;如果是非消耗品或订阅调用 确认交易

API

方法 说明
doInit(options, callback) 初始化 BillingClient,建议先调用。
doQuerySku(options, callback) 查询应用内商品或订阅商品,参数为 { inapp: string[] }{ subs: string[] }
doPay(options, callback) 发起支付,应用内商品传 productId,订阅还需要传 offerToken
doPayAll(options, callback) 发起支付,并支持 accountIdprofileId 等扩展参数。
doUpdateSubs(options, callback) 更新订阅,需传新订阅 productIdofferToken 和旧订阅 oldPurchaseToken
doConsume(options, callback) 消耗一次性商品,需传 purchaseToken
doAcknowledgePurchase(options, callback) 确认非消耗品或订阅交易,需传 purchaseToken 或原始购买 JSON。
doQueryPurchases(options, callback) 查询当前有效订阅和未消耗的一次性商品,参数为 { productType: 'inapp' }{ productType: 'subs' }
doShowInAppMessages(options, callback) 显示 Google Play 应用内消息。

返回格式

所有方法通过回调返回统一结构:

export type AiCommonResult = {
  code: number,
  message: string,
  data: any | null
}

code == 200 表示当前插件调用成功。支付成功后仍建议检查购买记录中的 purchaseState == 1,再执行消耗或确认交易。

订阅说明

订阅商品支付必须传 offerToken。示例工程会从 doQuerySku 返回的 subscriptionOfferDetails[0].offerToken 中读取;正式项目中可以根据套餐、优惠标签和价格阶段选择对应的 offer。

注意事项

  • 支付前必须先调用 doQuerySku,插件会缓存 Google Play 返回的 ProductDetails
  • 消耗品使用 doConsume,非消耗品和订阅使用 doAcknowledgePurchase
  • 客户端回调不能作为唯一发货依据,服务端应使用 purchaseToken 向 Google Play Developer API 校验订单。
  • Google Play Billing 对测试环境要求较严格:商品必须已启用,应用包名和签名必须匹配,测试账号必须有权限。

隐私、权限声明

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

com.android.vending.BILLING

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

插件通过 Google Play Billing SDK 与 Google Play 服务通信,隐私政策请参考 https://policies.google.com/privacy

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

暂无用户评论。