HarmonyOS鸿蒙Next从零开始详解应用内支付——商品创建及测试上架
HarmonyOS鸿蒙Next从零开始详解应用内支付——商品创建及测试上架 当用户在应用市场里下载APP,体验了免费的基础功能和服务后,通过自主选择付费,以获取和使用应用内提供的增值服务——这种用户应用内购买行为的完成,就需要用到应用内支付(In-App Purchases,简称IAP)。
应用内支付有丰富的使用场景和需求,游戏类应用中装备和虚拟币的购买、视频类应用中会员的订阅、知识工具类应用中一次性购买开高级服务和功能……应用内支付大大拓宽了移动开发的盈利模式,增加了APP营收的灵活性。
在华为移动生态体系中,我们为开发者提供了安全好用的应用内支付基础开发服务,助力开发者降本增效,实现付费转化和持续营收。
本文将详解应用内支付开通启用、商品管理、测试和上架等环节操作步骤,呈现应用内商品生成全过程,让开发者轻松实现从入门运用和熟练掌握华为应用内支付服务。
IAP的启用及商品管理方法
启用服务
1. 开启服务开关
1.1 登录 AppGallery Connect 网站,选择“我的项目”,在项目列表中找到相应项目,在项目下的应用列表中选择需要开通服务的应用。
1.2 在所选应用页面中点击<我的项目>,进入“API管理”页签,打开需要开通服务所在行的开关。
*API管理:在此页签确认和开通所需服务能力。支持一个服务有多个API开关,可单独控制各API开启或关闭,也可通过该服务右侧的API总开关一键开启或关闭该服务下的全部API。
2. 配置支付服务参数
2.1 在所选应用页面左侧导航栏选择[ 盈利 > 应用内支付服务 ],点击[ 设置 ]。
如果首次配置会弹出签署协议弹框。
2.2 点击“订阅通知地址”后的“√”图标,配置订阅通知地址。
2.3 配置完成点击“√”。
创建商品及沙盒测试
1. 创建商品:全球定价,一个版本搞定
登录AppAallery Connect,在[ 我的应用 ]界面选择应用,进入[ 运营 ]页面。
在[ 运营 ]页面左侧导航栏选择[ 产品运营 > 商品管理 ],选择[ 商品列表 ],点击[ 添加商品 ]。
1.1 相关参数说明:
①确认创建的商品类型:华为应用内支付支持三种商品类型:
-
消耗型商品:即可以消耗使用的商品,比如游戏类应用中的金币、钻石、点券等,可用来兑换和购买应用内虚拟服务和物品的货币。
-
非消耗型商品:即购买后永久使用的商品。比如游戏中特别篇关卡、教育类应用中无限时的课程学习权限等
-
订阅型商品:即一种预定支付方式,购买后未来一段时间内允许访问增值更能或内容,周期结束后自动续期购买下一期的服务。比如音视频类、教育课程类应用中的月度会员等。
根据你所需添加的商品属性,来勾选商品类型进行进一步填写。
②商品ID:以大小写字母及数字开头,由字母、数字及下划线 (_) 和句点 (.)组成,字符输入上限148个,一个应用内商品ID不能重复,保存后不能修改,删除后无法再次使用。
③语言:点击[管理语言列表],勾选需支持的语言种类
④商品名称:不能为空,字符上限55个,不支持特殊字符|
⑤商品简介:不能为空,字符上限100个,不支持特殊字符|
⑥商品价格:点击“查看编辑”,为商品适配合适价格。
1.2 面向全球的商品信息设置:
如果你的应用开发面向全球多个国家,无需维护管理多个地域版本。
多语言设置:创建商品时,在<语言>栏,勾选需支持的国家语言,并在<商品名称>一栏,输入对应国家语言的商品名及信息。
全球实时汇率定价参考:不同国家及地域的价格设置,只需定义一个商品价格,不同国家和地区价格会根据当地汇率来计算并显示,给开发者提供当地定价依据,也可自定义单个地域定价。
商品信息填写完成后,点击[编辑价格],即可进入商品价格编辑界面。
根据以上操作步骤,完成商品创建,回到商品列表页面进行商品的状态编辑,点击<生效>,即添加商品完成。
注意:
华为在每月的月初都会邮件通知开发者去修改后台商品价格。开发者在收到邮件后,应该手动地去刷新相关商品的价格,以免出现汇率差距太大导致的亏损。
1.3 商品激活
填写好信息点击[保存],返回商品列表,新添加商品会显示处于[失效]状态,点击确认[激活],商品即生效。
客户端接入,支付过程开发指南
2.1 判断是否支持应用内支付
在使用应用内支付之前,你的应用需向华为应用内支付发送isEnvReady
请求,以此判断用户当前登录的华为帐号所在的服务地是否在华为IAP支持结算的国家/地区中。如果应用未接入华为帐号的登录接口,可通过该接口完成登录操作。
开发步骤如下:
发起isEnvReady
请求,并设置两个回调监听来接收接口请求的结果。
当接口请求成功时,你的应用将获取到一个IsEnvReadyResult
实例对象,表示用户当前登录的华为帐号所在的服务地支持IAP。
当接口请求失败时,IAP会返回一个Exception对象,若该对象为IapApiException
对象,可使用其getStatusCode()方法获取此次请求的返回码。
当返回帐号未登录(OrderStatusCode.ORDER_HWID_NOT_LOGIN)时,可使用IapApiException
对象中的status拉起华为帐号登录页面,此后在Activity的onActivityResult方法中获取结果信息。从onActivityResult返回的intent中解析出returnCode,当returnCode=OrderStatusCode.ORDER_STATE_SUCCESS时,则表示当前帐号所在服务地支持IAP,其他则表示此次请求有异常。
2.2 展示商品信息
在华为AppGallery Connect网站上完成商品的配置后,需在你的应用中使用obtainProductInfo
接口来获取此类商品的详细信息。
开发步骤如下:
构建请求参数ProductInfoReq
,发起obtainProductInfo
请求并设置OnSuccessListener和OnFailureListener回调监听器以接收接口请求的结果。您需要在ProductInfoReq
中携带您此前已在华为AppGallery Connect网站上定义并生效的商品ID,并根据实际配置的商品指定其priceType。
当接口请求成功时,IAP将返回一个ProductInfoResult
对象,您的应用可通过该对象的getProductInfoList方法获取到包含了单个商品信息的ProductInfo
对象的列表。您可以使用ProductInfo
对象包含的商品价格、名称和描述等信息,向用户展示可供购买的商品列表。
2.3 发起购买
AppGallery Connect网站支持托管的商品包括消耗型商品,非消耗型商品和订阅型商品。您的应用可通过createPurchaseIntent
接口发起购买请求。开发步骤如下:
构建请求参数PurchaseIntentReq
,发起createPurchaseIntent
请求。您需要在PurchaseIntentReq
中携带您此前已在AGC网站上定义并生效的商品ID。当接口请求成功时,您可获取到一个PurchaseIntentResult
对象,其getStatus方法返回了一个Status对象,您的应用需要通过Status对象的startResolutionForResult方法来启动华为IAP收银台。
在你的应用拉起收银台并且当用户完成支付后(成功购买商品或取消购买),华为IAP会通过onActivityResult方式将此次支付结果返回给应用。可使用parsePurchaseResultInfoFromIntent
方法获取包含结果信息的PurchaseResultInfo
对象。
2.4 确认交易
用户完成一次支付之后,你需根据购买数据InAppPurchaseData
的purchaseState字段来判断订单是否已成功支付。若purchaseState为已支付(取值为0),你需发放相应的商品或提供相应的服务,此后需要向华为IAP发送发货确认请求。
对于消耗型商品,你需从InAppPurchaseData
JSON字符串中解析出purchaseToken信息,用于确认商品的发货状态。
在成功发货并记录已发货的商品的purchaseToken之后,你的应用需要使用consumeOwnedPurchase
接口消耗该商品,以此通知华为应用内支付服务器更新商品的发货状态。发送consumeOwnedPurchase
请求时,请在请求参数中携带purchaseToken。应用成功执行消耗之后,华为应用内支付服务器会将相应商品重新设置为可购买状态,用户即可再次购买该商品。
2.5 提供非消耗型商品对应的服务
若应用为用户提供非消耗型商品,可在应用启动时通过obtainOwnedPurchases
接口获取用户已购的非消耗型商品的购买信息,格式请参见InAppPurchaseData
。若返回的购买信息列表不为空,请确认每个购买信息的purchaseState字段。若purchaseState为0,你需提供相应的商品服务。
开发步骤如下:
使用obtainOwnedPurchases
获取用户已购非消耗型商品的信息。
你的应用需要在请求参数OwnedPurchasesReq
中指定查询的priceType为1。
你可从返回的每个商品信息中解析出purchaseState,用于判断当前商品的购买状态,以此作为你的应用的发货标志。
3. 沙盒测试:无需真实支付,完成端到端支付测试
添加商品完毕后,可通过沙盒测试,在无需真实付款的条件下,进行端到端的支付环节检测。沙盒测试步骤如下:
3.1 配置沙盒测试环境
· 设置测试帐号。
在进行测试前,需在AppGallery Connect中的用户与访问添加测试帐号,这些测试帐号都是真实的华为帐号。具体请参见<管理测试帐号>。
· 配置沙盒测试版本。
如果要测试的应用包此前没有在AGC上架过版本,只需要确保测试包的versionCode大于0;如果已有上架的版本,则测试包的versionCode需要大于上架版本的versionCode。
3.2 测试非订阅型商品支付
可在设备上登录已配置的测试帐号,并安装该待测试应用。发起非订阅型商品购买时,华为IAP会检测到该用户为测试用户,跳过实际支付环节,直接支付成功。
3.3 测试订阅型商品续订
订阅型商品的购买流程和普通商品(非订阅)的购买流程类似,但订阅还有其他细节场景,比如续订成功或失败,续订周期时长。为了帮助开发者快速测试应用的订阅场景,沙盒环境下的订阅续订时间会比正常情况更快,引入“时光机”概念。
时光机:仅针对订阅型商品的续期时间,不影响订阅型商品的生效时间(比如订阅周期为1周,商品在3分钟后发生续期,此时订阅型商品有效期延长了1周)。
完成以上步骤,你就顺利搞定应用内商品创建和测试上架。商品管理环节,商品信息修改、失效激活商品、删除商品等操作步骤,我们下期继续。
华为应用内支付还提供了“零掉单”的订单管理、提营收增长的增强型订阅服务等能力,我们也会在后期为大家推送超细详解,敬请期待哦~
更多关于HarmonyOS鸿蒙Next从零开始详解应用内支付——商品创建及测试上架的实战教程也可以访问 https://www.itying.com/category-93-b0.html
您好,想请问一下,App是用Flutter做的,已经在APP内自己接入了第三方支付平台,能在华为应用市场里成功上线吗?还是说必须要使用华为的IAP接口?多谢多谢!
更多关于HarmonyOS鸿蒙Next从零开始详解应用内支付——商品创建及测试上架的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在IAP中,能否定义商品数量
已经帮您反馈啦,届时可以通过您发的主题帖查看问题进展,不要重复发帖哦
应用内支付是否涉及到手续费
可以自定义价格吗?还是必须要在后台配置商品信息,再使用配置好的商品productID
您好~可以自定义价格,不过都得在商品管理平台配置哦
参考文档:[https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-create_product?ha_source=hms1](https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-create_product?ha_source=hms1)
在HarmonyOS鸿蒙Next中,应用内支付的实现从商品创建开始。首先,开发者需在AppGallery Connect平台创建商品,填写商品ID、名称、价格等基本信息。接着,在应用中集成IAP SDK,调用相关API实现支付功能。测试阶段,可使用沙盒环境模拟支付流程,确保功能正常。最后,通过AppGallery Connect提交应用审核,审核通过后即可上架。