1. 先集成google支付插件
     implementation "com.android.billingclient:billing:4.0.0"
  1. 在Application进行初始化连接谷歌,判断是否接通谷歌,只有接通谷歌才能做后面操作
//初始化
BillingClient billingClient = BillingClient.newBuilder(this).setListener(purchasesUpdatedListener).enablePendingPurchases().build();
if (!billingClient.isReady()) {billingClient.startConnection(new BillingClientStateListener() {@Overridepublic void onBillingServiceDisconnected() {}@Overridepublic void onBillingSetupFinished(@NonNull BillingResult billingResult) {if (billingResult.getResponseCode() ==  BillingClient.BillingResponseCode.OK) {//这里代表接通谷歌成功}}});}

3.获取谷歌商品信息,获取商品信息,主要分应用内商品,订阅,传入产品id获取数据
BillingClient.SkuType.SUBS 代表订阅商品,BillingClient.SkuType.INAPP,应用内商品,具体看在谷歌后台创建什么商品

List<String> skuList = new ArrayList<>();
skuList.add("test1"); //test1 代表产品id,具体产品去后谷歌后台查看新疆
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS);
//
billingClient.querySkuDetailsAsync(params.build(),new SkuDetailsResponseListener() {@Overridepublic void onSkuDetailsResponse(BillingResult billingResult,List<SkuDetails> skuDetailsList) {if(billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK){} }});}
  1. 调起支付 界面
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();int responseCode = MyApplication.billingClient.launchBillingFlow(GooglePayActivity.this, billingFlowParams).getResponseCode();if (responseCode == 0){// 调起成功} else{// 调起失败}
  1. 监听用户是否支付
 private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {@Overridepublic void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {// To be implemented in a later section.);if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK&& purchases != null) {for (Purchase purchase : purchases) {//完成支付handlePurchase(purchase);}} else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {// 用户取消} else {// 其他错误}}};

6.用户支付完成,要进行验证,否则测试环境5分钟会自动退单退款,真实环境3天自动退单退款

if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {if(!purchase.isAcknowledged()){//Toast.makeText(MyApplication.this,"支付成功:非消耗类" ,Toast.LENGTH_SHORT).show();AcknowledgePurchaseParams acknowledgePurchaseParams =AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase.getPurchaseToken()).build();billingClient.acknowledgePurchase(acknowledgePurchaseParams,acknowledgePurchaseResponseListener);} else{//Toast.makeText(MyApplication.this,"支付成功:消耗类" ,Toast.LENGTH_SHORT).show();ConsumeParams consumeParams =ConsumeParams.newBuilder().setPurchaseToken(purchase.getPurchaseToken()).build();billingClient.consumeAsync(consumeParams, listener);}//这里可以通知自己app服务器进行相应处理}

到这里就完成!!!

android接入谷歌支付相关推荐

  1. 接入谷歌支付4.0(Kotlin)

    前言 很多游戏研发同学可能都需要顺带接入谷歌支付,谷歌的文档大家都懂得,有时候感觉看下来好像抓住了什么却又什么都没有抓住,导致接入工作有时候会陷入瓶颈.我整理了下谷歌支付接口,并添加了一些解释性文本及 ...

  2. Android 接入支付宝支付实现

    接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...

  3. Android接入支付宝支付实现

    接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...

  4. Android接入stripe支付

    Android接入stripe支付 阅读之前请大家先了解流程哦(适用于先绑卡后扣款的情况) stripe国际化支付流程: 1.初始化stripe,创建stripe对象: 2.检索后台SetupInte ...

  5. Android接入谷歌广告 - 发现各种坑

    先前接入谷歌广告Admob,功能完成后AS能运行,打包哩不行一直报 com.android.build.api.transform.TransformException: java.util.zip. ...

  6. cocos creator Android 接入Google支付sdk

    准备工作 1.手机上安装Google服务 2.一个绑定信用卡的Google账号: 3.Google play客户端: 4..Google Play开发者后台创建应用 5.科学上网的工具 -等等 这些就 ...

  7. Android 接入银联支付

    1.打开银联开放平台 https://open.unionpay.com/ 注册账户 2.点击"技术集成"01选择手机控件支付开发包(安卓版) 3.根据 中国银联手机支付控件接入指 ...

  8. android 接入华为支付,hms-iap-clientdemo-android-studio

    华为应用内支付服务客户端示例代码 本章节主要介绍接入华为应用内支付的客户端开发步骤,帮助您快速了解华为支付提供的客户端接口及其使用方法. 点击此处了解更多. 目录 简介 华为应用内支付服务(HUAWE ...

  9. 安卓-Android如何集成支付宝支付(集成阿里支付)详解。Android接入alipay支付

    支付宝支付官网地址: 打开官网 服务器端如何拼接Orderinfo所需参数请看这篇文章.打开链接 安卓app集成阿里支付流程: 步骤一:下载aar和demo,并将aar添加到安卓项目依赖里.点击查看如 ...

最新文章

  1. 图形化客户端Navicat介绍和使用
  2. 关于《红楼梦》的读后感优秀范文2000字
  3. Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery
  4. $(document).ready() $(window).load 及js的window.onload
  5. 用shell打印下面这句话中字母数小于6的单词
  6. 代理模式coding-动态代理
  7. 邪恶改装:TPYBoard制作廉价WIFI干扰器
  8. python3.4 + Django1.7.7 表单的一些问题
  9. word20161210
  10. 安装vs2008之后系统好像变慢了?
  11. couchbase java 手册_Couchbase文档列表模型
  12. Mysql系统参数查询和设置
  13. C语言植物大战僵尸辅助(含源码),实现无尽模式最轻松的打法
  14. 计算机科学与实践,【计算机科学与技术学院|实践实况】(一)
  15. 30 年的 Hello world
  16. 赵小楼《天道》《遥远的救世主》深度解析(65)实事求是的辩证思维(应试教育学不到的思维)
  17. 《炬丰科技-半导体工艺》--技术资料合集三
  18. 使用ZPL控制Zebra打印机
  19. 双语web阅读器+书城设计与实现
  20. 【Java设计模式 规范与重构】 六 代码重构小结

热门文章

  1. ibm mq java 发布订阅,JMS调用IBM MQ 监听模式的点对点模式
  2. Deep Learning for Remote Sensing Data
  3. matlab中无穷小的数如何,2018考研数学:怎么确定函数的无穷小阶数
  4. 必备压力变送器零位正迁移简单常识校验弄懂很简单
  5. 南邮CTF web题目总结
  6. 小白误入软件应用层开发
  7. 抖音巨量千川该怎么投?千万级展现的千川计划该怎么搭建?
  8. 前端架构之路(3) - 前端开发规范
  9. 02-扫盲篇-操作系统常见安全漏洞攻击方式及操作系统用户权限分析
  10. C语言:计算阶乘与计算从1加到100的代码对比:都要用到3个变量,不同之处在于表达式