IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> google pay -> 正文阅读

[移动开发]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<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<Purchase> 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<Purchase> 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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:34:46  更:2022-07-17 16:36:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 3:23:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码