栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

google pay

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

google pay

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)发布版本

点击应用版本

然后你会发现你TMD 怎么那么多渠道,不慌,找到年内部测试渠道,(先不要纠结要不要全上了,一个一个来)

按照提示说明,将数据填写完成,上传apk (必须上传release的)然后点
击保存 ---》查看,

这个时候你会发现

不可点击

为啥不能发布????

还记的刚刚我们看到的内容分级么,这个时候回去 把他完成了

点击商品详情

你能看到,应用版本是绿色的,我们要做的就是全部点亮,哈哈

找到刚刚看到的内容分级,按照要求填写完成即可

点亮了 哈哈哈

目前的进度

屏幕快照 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

只有状态是已发布才行,

[图片上传中...(屏幕快照 2019-01-07 下午6.39.10.png-9d6f7f-1546857578499-0)]

PS 快下班了,就偷个懒,给各位看官看已发布的那个,不一步一步来了,

(4)配置应用内商品

点击应用内商品

创建商品

3. 代码书写

官网文档

注意看,有两种方式

  • Use the Google Play Billing Library

  • In-app Billing API

在文档上介绍的

如果您需要直接与应用内结算服务进行互动,请使用AIDL进行应用内结算。

这里先介绍第一种方式,第二种方式 后面再介绍

将Google Play结算添加到应用的步骤如下:

  • 更新应用的依赖项。
  • 连接到Google Play。
  • 查询应用内商品详细信息。
  • 允许购买应用内商品。
  • 查询购买的商品。
  • 添加一次性产品特定或订阅特定代码(在单独的页面上介绍)。
(1)更新应用的依赖项。

  implementation 'com.android.billingclient:billing:1.2'
(2)连接到Google Play

// create new Person
private 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 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 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) {
            handlePurchase(purchase);
        }
    } else if (responseCode == BillingResponse.USER_CANCELED) {
        // Handle an error caused by a user cancelling the purchase flow.
    } else {
        // Handle any other error codes.
    }
}

混淆

-keep class com.android.vending.billing.**
4. 填坑 (1)沙盒测试

如果你不想真的付钱,那么你就需要配置沙盒测试人员。

找到版本管理---》应用版本----》内部测试(一开始配置的)----》管理测试人员

如下所示

(2)显示无法购买商品,

这是因为 你只是添加了人家作为你的内部测试人员,人家还没打印呢,所以,你需要邀请他们加入您的内部测试,如上图,可以看到,加入测试的网站。发送给你添加的测试账号 完成邀请及可,

(3)无法调出支付界面

首先要手机保证科学上网。其次。大部分的国内手机都是不行的,不行的,不行的,那就有人问了,那怎么测试,我的测试使用的是三星S8P。测试通过,但是小米系列就不行,

(4)为啥三星手机也不行,

google pay 需要安装google play 等一些开发环境,在科学上网的前提下,下载google play,会安装一系列的环境,总的来说,当你能有google play 下载软件了,基本上就差不多了,

(5)同一个商品ID 为啥不能购买多次

哥 你买的 的通知一下啊直接上代码

  @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(), (responseCode1, purchaseToken) -> {
                    com.orhanobut.logger.Logger.i("[google pay] consumeAsync responseCode1" + responseCode1 + " purchaseToken:" + purchaseToken);
                });
            }

        } else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
            if (listener != null) {
                listener.onPayCancel();
            }
        } else {
            if (listener != null) {
                listener.onPayError(responseCode);
            }
        }
    }



后记

如果有错误的地方,请指出,一直认为分享是进步最快的方式,去年一年没怎么写文章,比较忙,今年的第一篇文章,感谢各位看官。



作者:Allens_Jiang
链接:https://www.jianshu.com/p/2b08aff35bf5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号