最近app需要上架到谷歌应用市场,必要条件是需要集成谷歌支付,于是开始一顿操作++++一堆怼脸型的bug解决过程,先从创建应用开始。
- 创建谷歌账号,并开通开发者权限,需要支付money,公司账号。
- 创建应用,应用提前准备好名称,图片等信息,开发人员需要打出一个release包,需要签名文件签名,注意版本号,测试阶段时,使用的版本号,不能高于谷歌平台上传的这个包。release包可以无内容,主要是包名和签名固定。
- 需要开发人员 准备谷歌的测试账号,实现不用支付即可完成支付流程。
- 创建应用-上传apk-提交内容详情内容-确定内容分级-选择发布范围,整个过程。创建过程中未截图保存内容,欢迎有遇到问题的朋友,评论区留言交流。
- 新版的谷歌支付已经废弃掉原有Google In-app Billing, 复制aidl文件到项目中的方式,目前使用 BillingClient 链接谷歌-查询产品-购买-消耗等一系列流程。
app内接入流程
1、添加依赖、添加权限。
implementation 'com.android.billingclient:billing:3.0.0'
<!--谷歌商店应用内购买结算需要的权限-->
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR" />
2、创建连接。
public void init() {
mBillingClient = BillingClient.newBuilder(mActivityRef.get())
.setListener(mPurchasesUpdatedListener)
.enablePendingPurchases()
.build();
if (!mBillingClient.isReady()) {
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult != null) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
LogUtil.i(TAG, "onBillingSetupFinished==ok");
} else {
LogUtil.w(TAG, "onBillingSetupFinished--error==" + billingResult.getDebugMessage() + "====" + billingResult.getResponseCode());
}
} else {
LogUtil.w(TAG, "billingResult ==== null");
}
}
@Override
public void onBillingServiceDisconnected() {
LogUtil.w(TAG, "onBillingServiceDisconnected");
}
});
} else {
LogUtil.w(TAG, "mBillingClient.isReady() false");
}
}
3、购买
/**
* 购买
*/
public void recharge() {
if (mBillingClient.isReady()) {
List<String> skuList = new ArrayList<>();
skuList.add(mSku);//商品的id
skuList.add("gas");// 这个参数不能为空,值随便传
SkuDetailsParams.Builder params = SkuDetailsPa