android接入谷歌支付
- 先集成google支付插件
implementation "com.android.billingclient:billing:4.0.0"
- 在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){} }});}
- 调起支付 界面
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();int responseCode = MyApplication.billingClient.launchBillingFlow(GooglePayActivity.this, billingFlowParams).getResponseCode();if (responseCode == 0){// 调起成功} else{// 调起失败}
- 监听用户是否支付
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接入谷歌支付相关推荐
- 接入谷歌支付4.0(Kotlin)
前言 很多游戏研发同学可能都需要顺带接入谷歌支付,谷歌的文档大家都懂得,有时候感觉看下来好像抓住了什么却又什么都没有抓住,导致接入工作有时候会陷入瓶颈.我整理了下谷歌支付接口,并添加了一些解释性文本及 ...
- Android 接入支付宝支付实现
接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...
- Android接入支付宝支付实现
接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...
- Android接入stripe支付
Android接入stripe支付 阅读之前请大家先了解流程哦(适用于先绑卡后扣款的情况) stripe国际化支付流程: 1.初始化stripe,创建stripe对象: 2.检索后台SetupInte ...
- Android接入谷歌广告 - 发现各种坑
先前接入谷歌广告Admob,功能完成后AS能运行,打包哩不行一直报 com.android.build.api.transform.TransformException: java.util.zip. ...
- cocos creator Android 接入Google支付sdk
准备工作 1.手机上安装Google服务 2.一个绑定信用卡的Google账号: 3.Google play客户端: 4..Google Play开发者后台创建应用 5.科学上网的工具 -等等 这些就 ...
- Android 接入银联支付
1.打开银联开放平台 https://open.unionpay.com/ 注册账户 2.点击"技术集成"01选择手机控件支付开发包(安卓版) 3.根据 中国银联手机支付控件接入指 ...
- android 接入华为支付,hms-iap-clientdemo-android-studio
华为应用内支付服务客户端示例代码 本章节主要介绍接入华为应用内支付的客户端开发步骤,帮助您快速了解华为支付提供的客户端接口及其使用方法. 点击此处了解更多. 目录 简介 华为应用内支付服务(HUAWE ...
- 安卓-Android如何集成支付宝支付(集成阿里支付)详解。Android接入alipay支付
支付宝支付官网地址: 打开官网 服务器端如何拼接Orderinfo所需参数请看这篇文章.打开链接 安卓app集成阿里支付流程: 步骤一:下载aar和demo,并将aar添加到安卓项目依赖里.点击查看如 ...
最新文章
- 图形化客户端Navicat介绍和使用
- 关于《红楼梦》的读后感优秀范文2000字
- Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery
- $(document).ready() $(window).load 及js的window.onload
- 用shell打印下面这句话中字母数小于6的单词
- 代理模式coding-动态代理
- 邪恶改装:TPYBoard制作廉价WIFI干扰器
- python3.4 + Django1.7.7 表单的一些问题
- word20161210
- 安装vs2008之后系统好像变慢了?
- couchbase java 手册_Couchbase文档列表模型
- Mysql系统参数查询和设置
- C语言植物大战僵尸辅助(含源码),实现无尽模式最轻松的打法
- 计算机科学与实践,【计算机科学与技术学院|实践实况】(一)
- 30 年的 Hello world
- 赵小楼《天道》《遥远的救世主》深度解析(65)实事求是的辩证思维(应试教育学不到的思维)
- 《炬丰科技-半导体工艺》--技术资料合集三
- 使用ZPL控制Zebra打印机
- 双语web阅读器+书城设计与实现
- 【Java设计模式 规范与重构】 六 代码重构小结