鸿蒙开发学习:【华为支付服务客户端案例】

简介

华为应用内支付服务(HUAWEI In-App Purchases)支持3种商品,包括消耗型商品、非消耗型商品和订阅型商品。

  • 消耗商品:仅能使用一次,消耗使用后即刻失效,需再次购买。
  • 非消耗商品:一次性购买,永久拥有,无需消耗。
  • 订阅型商品:用户购买后在一段时间内允许访问增值功能或内容,周期结束后自动续期购买下一期的服务。

本Demo将基于这3种商品来演示华为应用内支付服务的接入过程和功能。

本demo仅演示商品购买过程,并未实际使用购买的商品。

该示例也可以通过HMS Toolkit快速启动运行,且支持各Kit一站式集成,并提供远程真机免费调测等功能。

开发准备

  1. 检查Android Studio开发环境是否准备就绪。如果是,则使用Android Studio打开示例代码工程路径下的build.gradle文件。

  2. 在AppGallery Connect中创建应用并配置应用信息。target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fdevelopment%2FHMSCore-Guides%2Fconfig-agc-0000001050033072)。

  3. 在AppGallery Connect中添加商品信息。

  4. 在Android Studio中导入demo,再进行构建。

  5. 配置示例代码:

    • 在AppGallery Connect中下载应用的agconnect-services.json文件,把该文件添加至本demo的应用根目录(\app)中。
    • 添加证书文件,在应用级build.gradle文件中添加配置。
    • 修改示例工程中应用级build.gradle文件中的applicationId为您自己的应用包名。
    • 将CipherUtil类中的PUBLIC_KEY替换为创建应用的公钥。获取公钥详情,参考查询支付服务信息。
    • 将本demo中的商品替换为你的商品。
  6. 在Android设备或模拟机上运行该示例代码。

环境要求

  • JDK 1.8及以上版本
  • 安装Android Studio 3.6.1及以上版本

运行结果

Demo运行后,会出现如下页面。

demo home page

购买消耗型商品

以游戏中的gem,演示消耗型商品购买。

  1. 点击Consumable products,可以看到购买消耗型商品的主页。调用obtainProductInfo接口,获取此类商品的详细信息。

    consumable demo page

  2. 点击5 gems,Demo会调用createPurchaseIntent接口,跳转至华为应用内支付收银台。

    consumable payment selection

  3. 付款成功后,Demo会增加用户的钻石数量,然后调用consumeOwnedPurchase接口,通知华为应用内支付服务端用户已完成消耗。

    gem purchase result

    注意:如果付款成功后出现异常(如网络错误或流程终止),Demo将在您重新进入页面时尝试更新钻石数量。(调用obtainOwnedPurchases接口,获取已购消耗型商品的购买数据。调用consumeOwnedPurchase接口,消耗该商品。)

  4. 点击History,Demo会调用obtainOwnedPurchaseRecord接口,获取购买历史。

    consumable purchase history

购买非消耗型商品

Demo以hidden level商品为例,演示非消耗型商品购买。

  1. 点击Non-consumable product,可以看到购买非消耗型商品的主页。调用obtainOwnedPurchases接口,获取非消耗型商品。

  2. 如果你还没购买hidden level,可以看到如下图所示页面。点hidden level,开始购买,步骤和购买消耗型商品一致。

    hidden level not purchased

  3. 购买成功后(或之前已购买hidden level商品),Demo将显示hidden level已经购买。

    hidden level have been purchased

鸿蒙开发知识更新在gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md前往参考。

OpenHarmony高级技能.png

购买订阅型商品

Demo以Service-OneService-Two为订阅群组进行演示,每个订阅组包含2个订阅选项。

  1. 点击Auto-renewable subscription,可以看到订阅型商品的主页。调用obtainOwnedPurchase接口,获取购买的订阅商品信息。用户已订阅的商品将显示为ACTIVE。

    subscription homepage with active subscription

  2. 点击其中一个BUY按钮,Demo将调用createPurchaseIntent接口,开始购买。

    subscription payment selection

    注意:目前订阅商品付款方式仅支持支付宝。

  3. 系统将提示您授权自动扣费协议。购买成功后,华为应用内支付服务将显示购买结果。

    subscription payment selection

  4. 点击Manage Subscription,演示应用将跳转至订阅管理页面。该页面显示所有订阅商品,包括已过期的商品。

    subscription manage

  5. 在订阅管理页面点击Happy Subscribe,可以编辑订阅商品,选择同一订阅组中的其他订阅商品,或点击UNSUBSCRIBE,取消订阅该商品。订阅商品在到期前一直有效。

    edit subscription

鸿蒙开发知识持续更新中,关注我~不迷路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机常见的知识点(3)

计算机系统 系统的构成 一个完整的计算机系统是由硬件和软件组成 硬件是由运算器、控制器、存储器、输入设备、输出设备五部分组成 其中:中央处理器(简称CPU)运算器控制器 主机中央处理器主存储器 计算机软件包括计算机本身运行所需要的系统软件和用户完成任务…

Mybatis中显示插入数据成功,但在数据库中却没有显示插入的数据

1、在mybatis-config.xml中查看是否添加了JDBC,并引入了映射文件 2、在测试文件中,结尾是否添加提交事务:sqlSession.commit() 添加了这一步就能够将数据提交到数据库中,最后再关闭事务:sqlSession.close() * 如果运…

JWT原理分析

为什么会有JWT的出现? 首先不得不提到一个知识叫做跨域身份验证,JWT的出现就是为了更好的解决这个问题,但是在没有JWT的时候,我们一般怎么做呢?一般使用Cookie和Session,流程大体如下所示: 用…

手撕算法-买卖股票的最佳时机 II(买卖多次)

描述 分析 使用动态规划。dp[i][0] 代表 第i天没有股票的最大利润dp[i][1] 代表 第i天持有股票的最大利润 状态转移方程为:dp[i][0] max(dp[i-1][0], dp[i-1][1] prices[i]); // 前一天没有股票,和前一天有股票今天卖掉的最大值dp[i][1] max(dp[i-1…

Linux查看磁盘空间

查看磁盘空间 df -h 查看目录所占空间 du -sh [目录] 查看当前目录下, 所有目录所占空间 (一级目录) find . -maxdepth 1 -type d -exec du -sh {} \;-maxdepth 1 查看的目录深度是1级, 2则是2级

FOCUS-AND-DETECT: A SMALL OBJECTDETECTION FRAMEWORK FOR AERIAL IMAGES

摘要 为了解决小对象检测问题,提出了一个叫做 Focus-and Detect 的检测框架,它是一个两阶段的框架。 第 一阶段包括由高斯混合模型监督的对象检测器网络,生成构成聚焦区域的对象簇 。 第二阶段 也是一个物体探测器网络,预测聚焦…

【云开发笔记No.6】腾讯CODING平台

腾讯云很酷的一个应用,现在对于研发一体化,全流程管理,各种工具层出不穷。 云时代用云原生,再加上AI,编码方式真是发生了质的变化。 从前,一个人可以写一个很酷的软件,后来,这变得…

<商务世界>《第16课 餐桌礼仪之座次》

1 简要 我国自古以来就很重视座位礼仪,非讲究,分君臣、分宾主、分方位等等而今座位礼仪已经简化为: 以“中”为尊: 中心为尊,突出主位。 以“右”为尊: 从历史上到国际上都是以右为尊。 以“内”为尊&…

故障诊断模型 | 基于图卷积网络的轴承故障诊断

文章目录 文章概述模型描述模型描述参考资料文章概述 故障诊断模型 | 基于图卷积网络的轴承故障诊断 模型描述 针对基于图卷积网络(GCN)的故障诊断方法大多默认节点间的权重相同、导致诊断精度较低与鲁棒性较差的问题,提出了一种基于欧式距离和余弦距离的 GCN 故障诊断方法…

力扣热门算法题 62. 不同路径,66. 加一,67. 二进制求和

62. 不同路径,66. 加一,67. 二进制求和,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.21 可通过leetcode所有测试用例。 目录 62. 不同路径 解题思路 完整代码 Python Java 66. 加一 解题思路 …

29-goto语句

29-1 goto语句介绍 C语言中提供了可以随意滥用的goto语句和标记跳转的标号。 从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程…

第十一届蓝桥杯大赛第二场省赛试题 CC++ 研究生组-回文日期

solution1&#xff08;通过50%&#xff09; #include<stdio.h> void f(int a){int t a;while(a){printf("%d", a % 10);a / 10;}if(t < 10) printf("0"); } int isLeap(int n){if(n % 400 0 || (n % 4 0 && n % 100 ! 0)) return 1;r…

抖音IP属地怎么更改

抖音是一个非常受欢迎的短视频平台&#xff0c;吸引了无数用户在上面分享自己的生活和才艺。然而&#xff0c;随着快手的火爆&#xff0c;一些用户开始担心自己的IP地址会被他人获取&#xff0c;引起个人隐私风险。那么&#xff0c;抖音用户又该如何更改到别的地方呢&#xff1…

父类子类构造方法调用示例

父类写无参构造&#xff0c;子类不写构造&#xff0c;实例化子类&#xff0c;会同时调用父类构造方法 public class Father {private String name;private int age;public Father() {System.out.println("父类无参构造");}} public class Son extends Father {priva…

私密个人相册 Android 藏起来你的照片和视频

珍藏每一刻 软件介绍版本号 1.0.0更新日期 2024-03-20 在数字时代&#xff0c;每个人都是自己故事的摄影师。私密个人相册应用&#xff0c;专为珍视隐私与回忆的你设计。我们提供一个安 全的空间&#xff0c;让你的每一张照片和每一个视频都得到妥善保护&#xff0c;同时也能…

通过dbeaver链接dm8数据库

一、环境说明 windows 11 vmware 17 ubuntu 22 tt:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammytt:~$ docker info Client:Version: 24.0.5Context: d…

C++之移动语义与智能指针

目录 移动语义 1、几个基本概念的理解 2、复制控制语义的函数 3、移动控制语义的函数 3.1、移动构造函数: 3.2、移动赋值函数 4.区别 5、std::move函数 6.代码演示: 资源管理与智能指针 一、C语言中的问题 二、C的解决办法(RAII技术)&#xff1a; 三、四种智能指针…

2024年产品品牌化深度分析:消费者心理与品牌化、产品质量的权衡

随着市场竞争的加剧和消费者需求的多样化&#xff0c;产品品牌化已经成为企业不可或缺的战略选择。在2024年&#xff0c;当消费者面对众多商品时&#xff0c;品牌化与产品质量之间的权衡成为了消费者决策的重要因素。那么&#xff0c;在消费者心理中&#xff0c;品牌化重要还是…

cadence中run pspice运行仿真 光标搜索Search Command

cadence中run pspice运行仿真 光标搜索Search Command 在cadence进行波形分析时&#xff0c;如果可以随时找到对应的点分析十分方便。 也就是cadence中的光标搜索&#xff08;Search Command&#xff09;功能 但是需要输入正确形式才能使用 官方说明&#xff1a;PSpice User…

chatGPT中文在线版本(亲测可用

ChatGPT是一个先进的自然语言处理模型&#xff0c;由OpenAI开发。它通过深度学习技术训练而成&#xff0c;可以进行对话、回答问题等多种自然语言处理任务。对于学生、开发者、研究人员和任何对人工智能感兴趣的人来说&#xff0c;这是一个非常有用的工具。 最近找到一个国内可…