
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下的文件。
2.2.3 Cocos Creator 引擎构建和DevEco Studio工程配置
- 在Cocos Creator引擎中构建HarmonyOS NEXT工程。其中应用ID名称需使用您的游戏包名。
- 在DevEco Studio中打开已构建的HarmonyOS NEXT工程,同时导入登录(gameservicesdk)har包。
- 选好登录har包,点击确认导入。
- 在模块级oh-package.json5文件中里面添加依赖。
- 或构建出gameservicesdk.har包,直接依赖har包。
- module.json5中配置下client_id和app_id。
- 签名配置。File->Project Structure配置下你AGC上证书。
3 支付(iapkitsdk)har接入
3.1 开发准备
请前往AGC控制台开通商户服务,详情请参见开通商户服务。
3.2 Cocos Creator接入流程:
3.2.1 接入流程har接口介绍
支付(iapkitsdk)har也是暴露出接口,在使用购买商品前,必须先初始化和查询支付环境。
- 首先需要调用的接口。
init() // 初始化接口
queryEnv() // 查询是否支持支付
- 查询商品数据接口。
queryProducts() // 根据商品id和商品类型查询对应的商品
- 购买商品的接口。
buy() // 根据商品id和商品类型购买商品
在 购买返回成功 或 购买返回失败但携带额外数据(har中查询了购买商品)state成功 ,接下来是进行验签和完成订单接口调用。若有服务端验签,请参考接入购买进行验签。
后续前端业务逻辑,仅需调用finishPurchase()接口完成下订单。若没有服务端验签,Demo里面展示了前端本地验签和完成订单。
4. 本地验签->完成订单接口。
dealPurchaseData() // 进行验签
finishPurchase() // 完成订单
- 补单商品接口。
queryPurchase() // 查询购买记录
如果有需要补单的商品,再走验签->完成订单。
- 查询购买记录。
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包中。
详情请参考如下文档:
未接入解绑功能
请参考解绑游戏账号接入解绑功能。
原文链接:华为开发者文章
更多问题可关注:
鸿蒙游戏官方网站:已有游戏移植-鸿蒙游戏-华为开发者联盟
公开课:华为开发者学堂
