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 谷歌支付相关推荐

  1. Cocos Creator:高效率内容生产,引领全平台制霸!

    「深圳站」沙龙已经圆满落下帷幕,很高兴和大家因为同一个理念:「让游戏开发更简单」而得缘相聚于此. 在此,我要代表 Cocos 特别感谢不远万里专程赶来参会的朋友:感谢探娱和独角兽两位协办方的赞助和大力 ...

  2. cocos creator上线appstore的脚印

    话说最近用cocos creator弄了个作品,很早就作品完善了,然后提审appstore.那么坑就来了. 各种杯具,特此记录,望小伙伴看到后立刻从坑里爬出来. 1.第三方支付 cocos creat ...

  3. cocos creator 发布IOS版本(六)内购

    cocos creator 版本3.3 参考文档: iOS 内购(In-App Purchase)总结 | 笑忘书店 iOS的应用内支付In-app purchase的开发 - 胡东东博客 App内购 ...

  4. Cocos Creator 预制的使用模板(一般用于UI)

    Cocos Creator里绑定properties @property(cc.Prefab)XXUIPrefab: cc.Prefab = null; 在预制上挂脚本 import { Consta ...

  5. Cocos Creator 的 动作(Action)系统:moveBy的使用

    Cocos Creator 快速上手:制作第一个游戏 可以在这里感受一下这款游戏的完成形态: http://fbdemos.leanapp.cn/star-catcher/ 准备项目和资源 我们已经为 ...

  6. cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...

    本文来自于"Cocos 荣耀讲师"征稿活动第1期,最先发表于 Cocos 中文社区,作者 ID:蟹老板,2017年加入社区,文章作品包括<猎头专家的开发历程>等. Co ...

  7. asp.net js函数弹出登录窗口_JS基础 | Cocos Creator 开发环境搭建

    编程并不只是简单地写代码,而是要将编写的代码运行在指定平台环境上,在此之前我们还需要搭建生产代码的环境. 一. 软件准备 Chrome:浏览器,用于预览.调试我们的游戏 VSCode:代码编辑器,用于 ...

  8. Cocos Creator—最佳构建部署实践

    这篇文章主要是我们团队在使用Cocos Creator过程中的一些关于部署方面的实践总结,标题党了一回,严格来说,应该是<快看漫画游戏研发团队使用Cocos Creator构建部署最佳实践> ...

  9. Cocos Creator快速开通联网服务教程

    继集成Egret编辑器工作流后,在最新的Cocos Creator v2.0.7 版本中, Creator服务面板也集成了游戏服务器引擎Matchvs的联网服务.现附上开通教程,方便大家更快上手. 1 ...

最新文章

  1. Zookeeper之javaAPI的使用
  2. 服务器开发修改用户密码功能,更改服务器用户密码
  3. 一个员工的离职,背后都意味着什么?
  4. java中递归的概念_【Java】基础38:什么叫递归?
  5. Dynamic Web Module 3.0 requires Java 1.6 or newer报错
  6. python分片上传_python上传文件到oss
  7. 01c-1: 主流长远
  8. linux 模拟延时和丢包
  9. android 拼接参数,Android 多参数多文件同时上传
  10. Yii2 Lesson - 03 Forms in Yii
  11. springmvc配置不拦截静态资源
  12. 数组遍历_Python数组遍历的简单实现方法小结
  13. 阶段3 2.Spring_06.Spring的新注解_4 spring的新注解-Import
  14. 精进:如何成为一个很厉害的人--作者:采铜
  15. CS188-Project4
  16. 51单片机自学笔记(三)——电子电路基础
  17. 如何设置csdn为谷歌浏览器默认搜索引擎
  18. 单片机考试不挂科就等于学好单片机了吗,别太天真了
  19. 创建一个新用户身份为计算机管理员,以Guest账户身份创建一个管理员
  20. echarts 柱状图渐变色背景

热门文章

  1. 图漾深度相机开发-PCL点云实时显示
  2. 发动机启动计算机,发动机启动后马上熄火的原因是什么
  3. 【RK356X Android11】开发之4G模块(广和通模块NL668)
  4. 程序猿谈项目管理之好文集锦
  5. 3.CAS操作(轻量级锁)
  6. JavaScript合并网页表格中内容相同的相邻单元格
  7. 【AIOps下的探索与实践】神州灵云和Rancher共同举办Container Open Talk 沙龙活动
  8. 计算机基础操作的实验结论和体会是什么,计算机应用基础 实验报告
  9. MODIS(中分辨率成像光谱仪)简介
  10. Uncaught ReferenceError: jp2 is not defined,用jsonp抓取qq音乐总是说回调函数没有定义