更新记录
1.2.0(2025-04-12)
1、使用新版本谷歌结算库:7.1.1 2、新增支持更新订阅方法 3、新增显示应用内消息方法
1.1.1(2023-08-16)
1、解决多次执行初始化方法,导致支付结果多次返回问题。
1.1.0(2023-07-31)
新版本发布
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
Google支付 Google Pay 谷歌支付(支付内购,订阅,支持V5,V6,V7。插件有问题请联系QQ:1684729125)
插件仅支持Android版本
插件提供的方法 -- 详情请参考demo
谷歌官方政策:从2025 年 8 月 31 日起,所有新应用都必须使用结算库版本 7 或更高版本。自 2025 年 11 月 1 日起,现有应用的所有新版本都必须使用结算库版本 7或更高版本。
谷歌结算库版本:7.1.1
相关文档
插件方法,参数参考demo或谷歌文档
- doInit
- 初始化
- doQuerySku
- 查询sku
- doPay
- 支付
- doPayAll
- 支付,支持更多参数
- doUpdateSubs
- 更新订阅
- doConsume
- 确认交易--消耗品
- doAcknowledgePurchase
- 确认交易--非消耗品(订阅商品)
- doQueryPurchases
- 查询应用内购买的当前拥有的商品的购买详情
- 仅返回有效订阅和未消费(确认交易)的一次性购买
- doShowInAppMessages
- 显示应用内消息
引用插件
const GooglePayV5 = uni.requireNativePlugin('GT-GooglePay-V5__PayModule');
使用插件代码如下,更多代码请参考Demo
/**
* 初始化
*/
doInit() {
let that = this;
GooglePayV5.doInit({}, (e) => {
if (e.code == 200) {
// 初始化成功
console.log("初始化成功");
that.showToast("初始化成功");
} else {
// 初始化失败
console.log("初始化失败");
that.showToast("初始化失败");
}
});
},
/**
* 查询sku
*/
doQuerySku() {
let that = this;
let params = {};
if (this.isInapp) {
//消耗商品
params = {
inapp: ["google_product_21", "google_product_11""], // 与subs二选一
// subs: ["10000"],
};
} else {
//订阅商品
params = {
subs: ["10000"],
};
}
GooglePayV5.doQuerySku(params, (e) => {
console.log("查询结果:", e);
that.showToast("查询结果:" + JSON.stringify(e));
if (e.code == 200) {
// 查询成功
// e.list; // 查询结果, array
that.prdList = e.list;
} else {
// 查询失败
console.log("查询失败");
}
});
},
/**
* 发起支付
* 支付参数为查询sku结果的某一项
*/
doPay() {
let that = this;
console.log("do pay function.");
if (
that.prdList == null ||
that.prdList.length == 0 ||
!that.prdList[0].productId
) {
that.showToast("产品不能为空,不可支付");
return;
}
let payPrams = {
productId: that.prdList[0].productId,
};
// V7版本,非订阅商品,不用传offerToken
// V7版本,订阅产品必须传offerToken值,且不能为空,offerToken的值为doQuerySku方法返回
if (!this.isInapp) {
// payPrams.offerToken =
// "AQ2SJC/E1M9cIzCkpjba57hkz81a4vr9sGx7BKy+agizCT2IVOBCdMsYO3xiozVv01+0XYNhbKfZpAGUJkys"
payPrams.offerToken =
that.prdList[0].subscriptionOfferDetails[0].offerToken;
}
GooglePayV5.doPay(payPrams, (e) => {
console.log("支付结果:", e);
that.showToast("支付结果:" + JSON.stringify(e));
if (e?.code == 200 && e?.data) {
// 支付成功,可以确认交易,必须purchaseState才调用
if (e.data[0].purchaseState == 1) {
console.log("支付成功,可以确认交易");
that.payList = e.data;
} else { // purchaseState==2
// 调用doQueryPurchases方法查询订单状态,purchaseState==1后才可以确认
console.log("支付成功,订单状态为等待中,暂不可确认交易");
}
} else {
// 支付失败
console.log("支付失败: ", e);
}
});
},
/**
* 发起支付2
* 支付参数为查询sku结果的某一项
*/
doPayAll() {
let that = this;
console.log("do pay function.");
if (
that.prdList == null ||
that.prdList.length == 0 ||
!that.prdList[0].productId
) {
that.showToast("产品不能为空,不可支付");
return;
}
let payPrams = {
productId: that.prdList[0].productId,
accountId: "", // 可选,用户Id
profileId: "", // 可选,个人资料Id
};
// V7版本,非订阅商品,不用传offerToken
// V7版本,订阅产品必须传offerToken值,且不能为空,offerToken的值为doQuerySku方法返回
if (!this.isInapp) {
// payPrams.offerToken =
// "AQ2SJC/E1M9cIzCkpjba57hkz81a4vr9sGx7BKy+agizCT2IVOBCdMsYO3xiozVv01+0XYNhbKfZpAGUJkys"
payPrams.offerToken =
that.prdList[0].subscriptionOfferDetails[0].offerToken;
}
GooglePayV5.doPayAll(payPrams, (e) => {
console.log("支付结果:", e);
that.showToast("支付结果:" + JSON.stringify(e));
if (e?.code == 200 && e?.data) {
// 支付成功,可以确认交易,必须purchaseState才调用
if (e.data[0].purchaseState == 1) {
console.log("支付成功,可以确认交易");
that.payList = e.data;
} else { // purchaseState==2
// 调用doQueryPurchases方法查询订单状态,purchaseState==1后才可以确认
console.log("支付成功,订单状态为等待中,暂不可确认交易");
}
} else {
// 支付失败
console.log("支付失败: ", e);
}
});
},
/**
* 更新订阅,更新订阅后,也要确认交易才可以
*/
doUpdateSubs() {
let that = this;
console.log("do pay function.");
if (that.isInapp) {
that.showToast("应用内商品不支持更新订阅");
return;
}
if (
that.prdList == null ||
that.prdList.length == 0 ||
!that.prdList[0].productId
) {
that.showToast("产品不能为空,不可支付");
return;
}
// V7版本必须传offerToken值,且不能为空,offerToken的值为doQuerySku方法返回
let params = {
productId: that.prdList[0].productId,
offerToken: that.prdList[0].subscriptionOfferDetails[0].offerToken,
// 要更改的订阅的PurchaseToken
oldPurchaseToken: "fgdhindmocfgigfcjdbdphgo.AO-J1Ow0Dd7GdaVuKexAQR2lazs3hBzkAuT6772_kKYGIm-stoxtsIf-CLVVSs_sReR3ZiPyWqKgnButkSAZ6rV6dBOrpFPpOg",
replacementMode: 0,
};
GooglePayV5.doUpdateSubs(params, (e) => {
console.log("更新订阅结果:", e);
that.showToast("更新订阅结果:" + JSON.stringify(e));
if (e.code == 200) {
// 支付成功
console.log("更新订阅成功: ", e);
if (e && e.data) {
that.payList = e.data;
}
} else {
// 支付失败
console.log("更新订阅失败: ", e);
}
});
},
/**
* 确认交易,消耗品
* 实际开发中payList[0]请使用具体的某个订单,demo中为方便测试不严谨写法
*/
doConsume() {
let that = this;
console.log("do pay function.",that.payList);
// purchaseState==1才调用确认交易
if(that.payList[0].purchaseState != 1){
that.showToast("订单状态未就绪")
return
}
if(that.payList[0].acknowledged){
that.showToast("该订单已确认交易过了")
return
}
if (
that.payList == null ||
that.payList.length == 0 ||
!that.payList[0].purchaseToken
) {
that.showToast("支付信息不能为空");
return;
}
//purchaseToken参数是支付结果中的purchaseToken字段或token字段
GooglePayV5.doConsume({
purchaseToken: that.payList[0].purchaseToken || that.payList[0].token,
},
(e) => {
console.log("Consume结果:", e);
that.showToast("Consume结果:" + JSON.stringify(e));
if (e.code == 200) {
console.log("Consume成功");
} else {
console.log("Consume失败");
}
}
);
},
/**
* 确认交易,非消耗品
* 实际开发中payList[0]请使用具体的某个订单,demo中为方便测试不严谨写法
*/
doAcknowledgePurchase() {
let that = this;
console.log("do pay function.");
if (that.payList == null || that.payList.length == 0) {
that.showToast("支付信息不能为空");
return;
}
if(that.payList[0].purchaseState != 1){
that.showToast("订单状态未就绪")
return
}
if(that.payList[0].acknowledged){
that.showToast("该订单已确认交易过了")
return
}
//original,signature两个参数不能为空,参数来自支付结果
//original参数是支付结果中的original字段或originalJson字段
GooglePayV5.doAcknowledgePurchase({
original: that.payList[0].original || that.payList[0].originalJson || "",
signature: that.payList[0].signature,
},
(e) => {
console.log("acknowledgePurchase结果:", e);
that.showToast("acknowledgePurchase结果:" + JSON.stringify(e));
if (e.code == 200) {
console.log("acknowledgePusrchase成功");
} else {
console.log("acknowledgePurchase失败");
}
}
);
},
/**
* 查询购买交易
* 返回您在应用内购买的当前拥有的商品的购买详情。
* 仅返回有效订阅和未消费的一次性购买。
*
* acknowledged 字段是是否已确认交易 true false
* purchaseState 是订单状态 1--支付成功,可确认交易,2--等待中
*/
doQueryPurchases() {
let that = this;
console.log("do doQueryPurchases function.");
//参数inapp或subs
GooglePayV5.doQueryPurchases(this.isInapp ? "inapp" : "subs", (e) => {
console.log("queryPurchases结果:", e);
that.showToast("queryPurchases结果:" + JSON.stringify(e));
if(e?.purchasesList){
// 支付成功后,如果没确认交易,doQueryPurchases查询到订单且订单purchaseState==1,再调用确认交易方法
that.payList = e.purchasesList
}
});
},
/**
* 显示应用内消息
*/
doShowInAppMessages() {
let that = this;
console.log("do doShowInAppMessages function.");
//参数inapp或subs
GooglePayV5.doShowInAppMessages({
inAppMessageCategoryId: 2, //0或2,详情参考谷歌文档
},
(e) => {
console.log("doShowInAppMessages结果:", e);
that.showToast("doShowInAppMessages结果:" + JSON.stringify(e));
if (e.code == 200) {
// responseCode为谷歌返回的结果码,详情参考谷歌文档
if (e.data?.responseCode == 0) {
// NO_ACTION_NEEDED
// The flow has finished and there is no action needed from developers.
} else if (e.data?.responseCode == 1) {
// SUBSCRIPTION_STATUS_UPDATED
}
}
}
);
},