Google Pay is a convenient and secure digital payment platform.

访客 171 0

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 来源:简书 本文为原创作品,版权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签: 商品 测试 快照

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~