Cocos creator引擎鸿蒙游戏集成游戏服务和应用内支付

1 背景

HarmonyOS NEXT将原来SDK中的登录、支付、游戏服务等能力下沉到了应用服务中,提供ArkTS接口供APP调用。我们开发了对应登录、支付能力的业务层har包(gameservicesdk和iapkitsdk),简化开发者的接入逻辑。

本文档将分别介绍Cocos Creator 2.4.15 引擎鸿蒙工程接入登录和接入支付的流程。

2 登录(gameservicesdk)har包接入

2.1 开发准备

请前往AGC控制台完成创建游戏类应用,生成签名证书等准备工作,详情请参见游戏服务开发准备项

2.2 Cocos Creator接入流程

2.2.1 接入流程har接口介绍

前往Demo 源码下载Demo。

登录(gameservicesdk)流程图中给我们暴露了相应的接口,现在我们以华为账号登录为例写登录流程Demo。

登录接口流程如下:

init() // 发起初始化

unionlogin() // 发起联合登录

hwLogin() // 发起华为账号登录

bindPlayer() // 如果需要绑定,调用此接口

verifyLocalPlayer() // 发起合规校验

submitPlayerRole() // 保存玩家角色信息

2.2.2 worker线程和主(UI)线程调用通信

  • 在Cocos Creator的业务代码中(worker线程),使用反射机制 (jsb.reflection.callStaticMethod)调用主线程暴露的(KitMessageHandle.ets文件中)接口,在调用登录har包中的接口,最后业务代码里面接收到接口处理结果,再做操作。(Demo中登录1、2、3、4步骤已经写好反射机制的使用,详情请参考反射机制使用指导)。
  • 在build的工程中已新建KitMessageHandle.ets文件,所以 build目录千万别删除 。若自己的项目需使用,建议直接复制entry/src/main/ets下的文件。
    0900086000300134184.20201216095126.86523331460016843504112994983392.png

2.2.3 Cocos Creator 引擎构建和DevEco Studio工程配置

  1. 在Cocos Creator引擎中构建HarmonyOS NEXT工程。其中应用ID名称需使用您的游戏包名。

  2. 在DevEco Studio中打开已构建的HarmonyOS NEXT工程,同时导入登录(gameservicesdk)har包。

  3. 选好登录har包,点击确认导入。
    0900086000300134184.20201216095126.86523331460016843504112994983392.png

  4. 在模块级oh-package.json5文件中里面添加依赖。
    0900086000300134184.20201216095126.86523331460016843504112994983392.png

  5. 或构建出gameservicesdk.har包,直接依赖har包。
    0900086000300134184.20201216095126.86523331460016843504112994983392.png

  6. module.json5中配置下client_id和app_id。
    0900086000300134184.20201216095126.86523331460016843504112994983392.png

  7. 签名配置。File->Project Structure配置下你AGC上证书。
    0900086000300134184.20201216095126.86523331460016843504112994983392.png

3 支付(iapkitsdk)har接入

3.1 开发准备

请前往AGC控制台开通商户服务,详情请参见开通商户服务

3.2 Cocos Creator接入流程:

3.2.1 接入流程har接口介绍

支付(iapkitsdk)har也是暴露出接口,在使用购买商品前,必须先初始化和查询支付环境。

  1. 首先需要调用的接口。
init() // 初始化接口

queryEnv() // 查询是否支持支付
  1. 查询商品数据接口。
queryProducts() // 根据商品id和商品类型查询对应的商品
  1. 购买商品的接口。
buy() // 根据商品id和商品类型购买商品

购买返回成功购买返回失败但携带额外数据(har中查询了购买商品)state成功 ,接下来是进行验签和完成订单接口调用。若有服务端验签,请参考接入购买进行验签。

后续前端业务逻辑,仅需调用finishPurchase()接口完成下订单。若没有服务端验签,Demo里面展示了前端本地验签和完成订单。
4. 本地验签->完成订单接口。

dealPurchaseData() // 进行验签

finishPurchase() // 完成订单
  1. 补单商品接口。
queryPurchase() // 查询购买记录

如果有需要补单的商品,再走验签->完成订单。
  1. 查询购买记录。
queryPurchase() // 查询购买记录

3.2.2 worker线程和主(UI)线程调用通信

请参考 2.2.2 worker线程和主(UI)线程调用通信

3.2.3 Cocos Creator 引擎构建和DevEco Studio工程配置

请参考2.2.3 Cocos Creator 引擎构建和DevEco Studio工程配置。

4 常见问题(重要 审核中高频被驳回的问题)

授权绑定流程中,用户取消授权等异常时不能返回重新选择转移/绑定

若玩家取消授权,捕获到错误码 1001502012 后进行异常处理,即调用unbindPlayer,且thirdopenid传空,即可在下次华为账号登录时重新弹出转移绑定面板供用户再次选择,此步骤已集成在har包中。

详情请参考如下文档:

未接入解绑功能

请参考解绑游戏账号接入解绑功能。

真详细,:+1::+1::+1::+1::+1: