https://www.jianshu.com/p/2b08aff35bf5
前言
最近我在进行国际版的Google支付,即Google Pay的开发过程中遇到了许多困难和挑战。在这里,我将记录下来以供广大Android开发者们参考和避免踩坑。
文章内容简介
- 开发者账号申请
- google pay console 配置
- 代码书写
- 填坑
集成
1. 开发者账号申请
根据《Android开发-Google登录》一文,您可以在此进行申请注册。本文不再赘述详细介绍。
2. google pay console 配置
(1)创建应用
首先,您需要登录到Google Play管理中心。
请点击右上角以创建应用。
接下来,您将进入商品详情页面。在这里,有几个必须填写的项目,请不要怠慢,务必填写完整。
需要注意的是,这个地方的内容分级。当你点击时,会提示你需要上传一个APK文件。不用担心,先写其他的内容,然后保存为草稿即可。
请在填写完毕后,点击右下角的保存草稿按钮。
点击保存草稿
(2)发布版本
点击应用版本
接下来,你会惊讶地发现自己有如此多的渠道可供选择。不要慌张,我们可以先找到一些年内部测试渠道。至于是否全部采用这些渠道,暂时不必纠结,我们可以逐个来看待。
请根据提示将数据填写完整,并上传apk文件(必须上传发布版本),然后点击保存按钮,即可查看结果。
这个时候你会发现
不可点击
为什么不能发布呢?
还记得刚刚我们看到的内容分级吗?现在是时候回去完成它了。
点击商品详情
你会发现,应用版本呈现绿色,我们的目标是将其全部点亮!哈哈
请根据要求填写完整的内容分级,以便找到刚刚浏览过的信息。
点亮了 哈哈哈
目前的进度
以下是2019年1月7日下午6点32分57秒的屏幕快照,文件名为“屏幕快照 2019-01-07 下午6.32.57.png”。
OK 下面去点击定价
(3)定价和分发范围
如果你的APP是收费的,那就请付费购买。应用内购买不被视为付费。
以下是屏幕快照的文件名:2019-01-07 下午6.34.07.png
这个时候 应该全部点亮了。然后找到应用版本,去点击发布,这个时候神奇的发现,TMD 终于可以发布了
屏幕快照 2019-01-07 下午6.36.34.png
此时还不算真的发布了
屏幕快照 2019-01-07 下午6.39.10.png
只有当状态为已发布时方可进行。
很抱歉,无法编辑图片。如果您有文字内容需要修改,请提供相关的文案,我将非常乐意帮助您进行编辑。
尊敬的观众们,下班时间即将到来,我想稍事休息一下,并且为大家展示已经发布的内容。不再逐步详细介绍,请大家见谅。
(4)应用内商品配置
点击应用内商品
创建商品
3. 代码书写
官网文档
注意看,有两种方式
-
Utilize the Google Play Billing Library
-
应用内购买API
在文档上介绍的
如果您希望与应用内结算服务直接互动,请使用AIDL进行应用内结算。
这里先介绍第一种方式,第二种方式 后面再介绍
应用中添加Google Play结算的步骤如下:
- 更新应用的依赖项。
- 连接到Google Play。
- 查询应用内商品详细信息。
- 允许购买应用内商品。
- 查询购买的商品。
- 添加一次性产品特定或订阅特定代码(在单独的页面上介绍)。
(1)更新应用的依赖项。
implementation 'com.android.billingclient:billing:1.2'
(2)连接到Google Play
// create new Personprivate BillingClient mBillingClient;...mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();mBillingClient.startConnection(new BillingClientStateListener() { @Override public void onBillingSetupFinished(@BillingResponse int billingResponseCode) { if (billingResponseCode == BillingResponse.OK) { // The billing client is ready. You can query purchases here. } } @Override public void onBillingServiceDisconnected() { // Try to restart the connection on the next request to // Google Play by calling the startConnection() method. }});
(3)查询应用内商品详细信息
List<String> skuList = new ArrayList<> ();//这里填写自己的商品ID 官网的只是个示例skuList.add("premium_upgrade");skuList.add("gas");SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();params.setSkusList(skuList).setType(SkuType.INAPP);mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) // Process the result. } });
得到详情
if (responseCode == BillingResponse.OK && skuDetailsList != null) { for (SkuDetails skuDetails : skuDetailsList) { String sku = skuDetails.getSku(); String price = skuDetails.getPrice(); if ("premium_upgrade".equals(sku)) { mPremiumUpgradePrice = price; } else if ("gas".equals(sku)) { mGasPrice = price; } }}
(4)允许购买应用内商品
BillingFlowParams flowParams = BillingFlowParams.newBuilder() .setSku(skuId) .setType(SkuType.INAPP) // SkuType.SUB for subscription .build();int responseCode = mBillingClient.launchBillingFlow(flowParams);
回调
@Override void onPurchasesUpdated(@BillingResponse int responseCode, List purchases) { if (responseCode == BillingResponse.OK && purchases != null) { for (Purchase purchase : purchases) {
-keep class com.android.vending.billing.**
4. 解决问题
(1)进行沙盒测试
如果你不想真的支付费用,那么你需要设置沙盒测试人员。
浏览版本管理,然后进入应用版本,接着进行内部测试(使用最初的配置),最后管理测试人员。
如下所示
(2)显示无法购买商品,
这是因为您仅将他们添加为内部测试人员,而他们尚未打印。因此,您需要邀请他们加入您的内部测试。如上图所示,可以看到加入测试的网站。请发送邀请给您添加的测试账号以完成邀请过程。
(3)无法打开支付界面
首先,确保手机能够科学上网是非常重要的。其次,需要注意的是,大部分国内手机并不支持科学上网。有人可能会问如何进行测试,在我的测试中使用了三星S8P进行了验证,并且通过了测试。然而,小米系列手机则无法实现科学上网功能。
(4)为啥三星手机也不行,
为了使用Google Pay,您需要先安装Google Play以及其他一些开发环境。在确保能够科学上网的前提下,下载Google Play将会自动安装所需的一系列环境。总体而言,一旦您成功下载并安装了Google Play软件,基本上就可以开始使用Google Pay了。
为什么不能多次购买同一个商品ID(5)呢?
兄弟,麻烦你购买的东西通知一下我,直接给我提供代码。
@Override public void onPurchasesUpdated(int responseCode, @Nullable List purchases) { if (responseCode == BillingClient.BillingResponse.OK && purchases != null) { if (listener != null) { listener.onPaySuccess(); } for (Purchase purchase : purchases) { com.orhanobut.logger.Logger.i([google pay] purchase: + purchase.toString()); mBillingClient.consumeAsync(purchase.getPurchaseToken(), new ConsumeResponseListener() { @Override public void onConsumeResponse(int responseCode1, String purchaseToken) { com.orhanobut.logger.Logger.i([google pay] consumeAsync response: + responseCode1); } }); } } }
作者:Allens_Jiang 链接:https://www.jianshu.com/p/2b08aff35bf5 来源:简书 本文为原创作品,版权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
还木有评论哦,快来抢沙发吧~