cocos creator 谷歌支付
cocos creator 谷歌支付
- 导读
- 01-在build.gradle 注入依赖
- 02-在build.gradle中引入库文件
- 03-Google 支付权限
- 04-Google 支付的代码
- 最新库
导读
安卓项目中加入google 支付的接口;对应的是js 的调用
google 官网文档:
https://developer.android.com/google/play/billing/billing_library_overview
01-在build.gradle 注入依赖
在buildscript - repositories 和 allprojects - respositories 中加入 :
maven { url ‘https://maven.google.com’ }
mavenLocal()
02-在build.gradle中引入库文件
在 dependencies 中添加依赖:
implementation ‘com.android.billingclient:billing:2.0.1’
或者
implementation ‘com.android.billingclient:billing:2.0.3’
03-Google 支付权限
uses-permission android:name="com.android.vending.BILLING
04-Google 支付的代码
package org.cocos2dx.javascript.Google;import android.content.Intent;
import android.support.annotation.Nullable;import com.android.billingclient.api.AcknowledgePurchaseParams;
import com.android.billingclient.api.AcknowledgePurchaseResponseListener;
import com.android.billingclient.api.BillingClient;
import com.android.billingclient.api.BillingClientStateListener;
import com.android.billingclient.api.BillingFlowParams;
import com.android.billingclient.api.BillingResult;
import com.android.billingclient.api.ConsumeParams;
import com.android.billingclient.api.ConsumeResponseListener;
import com.android.billingclient.api.Purchase;
import com.android.billingclient.api.PurchasesUpdatedListener;
import com.android.billingclient.api.SkuDetails;
import com.android.billingclient.api.SkuDetailsParams;
import com.android.billingclient.api.SkuDetailsResponseListener;import org.cocos2dx.javascript.AppActivity;
import org.cocos2dx.lib.Cocos2dxActivity;import java.util.ArrayList;
import java.util.List;public class GooglePay implements PurchasesUpdatedListener {private static final String TAG = "GooglePay";private AppActivity app;private BillingClient mBillingClient;
// private AppActivity mGooglePay;public void Init(AppActivity activity){app = activity;
// mGooglePay = this;}
// @Override
// protected void onActivityResult(int requestCode, int resultCode, Intent data) {// super.onActivityResult(requestCode, resultCode, data);
// }//01—开启谷歌支付public void StartGooglePay(final String id){app.CallToJS("01—开启谷歌支付");mBillingClient = BillingClient.newBuilder(app).enablePendingPurchases()//启用待处理的购买交易(在外部交易).setListener(this).build();//建立连接mBillingClient.startConnection(new BillingClientStateListener() {@Override//建立连接成功回调public void onBillingSetupFinished(BillingResult billingResult) {if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {// The BillingClient is ready. You can query purchases here.//请求商品闲情List<String>skuList = new ArrayList<>();skuList.add(id);SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);mBillingClient.querySkuDetailsAsync(params.build(),new SkuDetailsResponseListener() {@Override//商品详情回调public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {// Process the result.if(billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK){app.CallToJS("开启谷歌支付 获取商品列表");for(SkuDetails skuDetails:skuDetailsList){String sku = skuDetails.getSku();app.CallToJS("发起购买 支付 sku:"+sku);BillingFlowParams flowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();mBillingClient.launchBillingFlow(app,flowParams);
// if(sku == id){//
// }
// else{// app.CallToJS("开启谷歌支付 sku:"+sku);
// app.CallToJS("开启谷歌支付 id:"+id);
// }}}else{app.CallToJS("开启谷歌支付 getResponseCode():"+billingResult.getResponseCode());}}});}else{app.CallToJS("建立连接成功回调 getResponseCode() :"+billingResult.getResponseCode());}}@Override//建立连接失败回调public void onBillingServiceDisconnected() {// Try to restart the connection on the next request to// Google Play by calling the startConnection() method.app.CallToJS("建立连接失败回调");}});}@Override//02-支付操作回调public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {app.CallToJS("02-支付操作回调");if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK&& purchases != null) {//支付成功app.CallToJS("支付成功");for (Purchase purchase : purchases) {handlePurchase(purchase);}} else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {//取消支付// Handle an error caused by a user cancelling the purchase flow.app.CallToJS("取消支付");} else {// Handle any other error codes.app.CallToJS("支付操作回调 .getResponseCode():"+billingResult.getResponseCode() );}}//03-物品处理void handlePurchase(Purchase purchase) {app.CallToJS("03-物品处理");//购买完成if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {// Grant entitlement to the user.// Acknowledge the purchase if it hasn't already been acknowledged.//未确认物品if (!purchase.isAcknowledged()) {//非消耗品
// AcknowledgePurchaseParams acknowledgePurchaseParams =
// AcknowledgePurchaseParams.newBuilder()
// .setPurchaseToken(purchase.getPurchaseToken())
// .build();
// mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener(){// @Override
// public void onAcknowledgePurchaseResponse(BillingResult billingResult) {//
// }
// });//消耗品ConsumeParams consumeParams =ConsumeParams.newBuilder().setPurchaseToken(purchase.getPurchaseToken()).setDeveloperPayload(purchase.getDeveloperPayload()).build();mBillingClient.consumeAsync(consumeParams, new ConsumeResponseListener() {@Overridepublic void onConsumeResponse(BillingResult billingResult, String purchaseToken) {app.CallToJS("消耗品 Token:"+purchaseToken);}});}//已确认物品else{app.CallToJS("已确认过物品");}}else if(purchase.getPurchaseState() == Purchase.PurchaseState.PENDING){app.CallToJS("未完成支付");//todo}else{app.CallToJS("物品处理 getPurchaseState:"+purchase.getPurchaseState());}}
}
在 AppActivity OnCreate 方法中 中初始化 GooglePay 的类
写一个 外部调用 AppActivity 中的静态支付
最新库
// Dependency for Google Sign-In
implementation ‘com.google.android.gms:play-services-auth:15.0.1’
//gogle pay
implementation ‘com.android.billingclient:billing:2.0.1’
cocos creator 谷歌支付相关推荐
- Cocos Creator:高效率内容生产,引领全平台制霸!
「深圳站」沙龙已经圆满落下帷幕,很高兴和大家因为同一个理念:「让游戏开发更简单」而得缘相聚于此. 在此,我要代表 Cocos 特别感谢不远万里专程赶来参会的朋友:感谢探娱和独角兽两位协办方的赞助和大力 ...
- cocos creator上线appstore的脚印
话说最近用cocos creator弄了个作品,很早就作品完善了,然后提审appstore.那么坑就来了. 各种杯具,特此记录,望小伙伴看到后立刻从坑里爬出来. 1.第三方支付 cocos creat ...
- cocos creator 发布IOS版本(六)内购
cocos creator 版本3.3 参考文档: iOS 内购(In-App Purchase)总结 | 笑忘书店 iOS的应用内支付In-app purchase的开发 - 胡东东博客 App内购 ...
- Cocos Creator 预制的使用模板(一般用于UI)
Cocos Creator里绑定properties @property(cc.Prefab)XXUIPrefab: cc.Prefab = null; 在预制上挂脚本 import { Consta ...
- Cocos Creator 的 动作(Action)系统:moveBy的使用
Cocos Creator 快速上手:制作第一个游戏 可以在这里感受一下这款游戏的完成形态: http://fbdemos.leanapp.cn/star-catcher/ 准备项目和资源 我们已经为 ...
- cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...
本文来自于"Cocos 荣耀讲师"征稿活动第1期,最先发表于 Cocos 中文社区,作者 ID:蟹老板,2017年加入社区,文章作品包括<猎头专家的开发历程>等. Co ...
- asp.net js函数弹出登录窗口_JS基础 | Cocos Creator 开发环境搭建
编程并不只是简单地写代码,而是要将编写的代码运行在指定平台环境上,在此之前我们还需要搭建生产代码的环境. 一. 软件准备 Chrome:浏览器,用于预览.调试我们的游戏 VSCode:代码编辑器,用于 ...
- Cocos Creator—最佳构建部署实践
这篇文章主要是我们团队在使用Cocos Creator过程中的一些关于部署方面的实践总结,标题党了一回,严格来说,应该是<快看漫画游戏研发团队使用Cocos Creator构建部署最佳实践> ...
- Cocos Creator快速开通联网服务教程
继集成Egret编辑器工作流后,在最新的Cocos Creator v2.0.7 版本中, Creator服务面板也集成了游戏服务器引擎Matchvs的联网服务.现附上开通教程,方便大家更快上手. 1 ...
最新文章
- Zookeeper之javaAPI的使用
- 服务器开发修改用户密码功能,更改服务器用户密码
- 一个员工的离职,背后都意味着什么?
- java中递归的概念_【Java】基础38:什么叫递归?
- Dynamic Web Module 3.0 requires Java 1.6 or newer报错
- python分片上传_python上传文件到oss
- 01c-1: 主流长远
- linux 模拟延时和丢包
- android 拼接参数,Android 多参数多文件同时上传
- Yii2 Lesson - 03 Forms in Yii
- springmvc配置不拦截静态资源
- 数组遍历_Python数组遍历的简单实现方法小结
- 阶段3 2.Spring_06.Spring的新注解_4 spring的新注解-Import
- 精进:如何成为一个很厉害的人--作者:采铜
- CS188-Project4
- 51单片机自学笔记(三)——电子电路基础
- 如何设置csdn为谷歌浏览器默认搜索引擎
- 单片机考试不挂科就等于学好单片机了吗,别太天真了
- 创建一个新用户身份为计算机管理员,以Guest账户身份创建一个管理员
- echarts 柱状图渐变色背景
热门文章
- 图漾深度相机开发-PCL点云实时显示
- 发动机启动计算机,发动机启动后马上熄火的原因是什么
- 【RK356X Android11】开发之4G模块(广和通模块NL668)
- 程序猿谈项目管理之好文集锦
- 3.CAS操作(轻量级锁)
- JavaScript合并网页表格中内容相同的相邻单元格
- 【AIOps下的探索与实践】神州灵云和Rancher共同举办Container Open Talk 沙龙活动
- 计算机基础操作的实验结论和体会是什么,计算机应用基础 实验报告
- MODIS(中分辨率成像光谱仪)简介
- Uncaught ReferenceError: jp2 is not defined,用jsonp抓取qq音乐总是说回调函数没有定义