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

简介

华为应用内支付服务(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.mfbz.cn/a/484278.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

ChatGPT论文指南|总结7个ChatGPT学术论文润色与评价好用的口诀!【建议收藏】

点击下方▼▼▼▼链接直达AIPaperPass ! AIPaperPass - AI论文写作指导平台 公众号原文▼▼▼▼: ChatGPT论文指南|分享13个学术论文写作ChatGPT口诀!【建议收藏】 目录 1.论文润色 2.论文评价 3.书籍介绍 AIPaperPass智能论文写作平…

《自动机理论、语言和计算导论》阅读笔记:p1-p4

《自动机理论、语言和计算导论》学习第1天,p1-p4,总计4页。这只是个人的学习记录,因为很多东西不懂,难免存在理解错误的地方。 一、技术总结 1.有限自动机(finite automata)示例 1.software for checking digital circuits。 …

3.24作业

基于UDP的网络聊天室 项目需求: 如果有用户登录,其他用户可以收到这个人的登录信息如果有人发送信息,其他用户可以收到这个人的群聊信息如果有人下线,其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器端代码 #in…

esp32CAM环境搭建(arduino+MicroPython+thonny+固件)

arduino ide 开发工具 arduino版本:1.8.19 arduino ide 中文设置:​ file >> preferences >> ​ arduino IDE 获取 ESP32 开发环境:打开 Arduino IDE ,找到 文件>首选项 ,将 ESP32 的配置链接填入附加开发板管理网…

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

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

10基于访问权限控制和细粒度控制的方式访问资源

访问权限控制 RBAC 基于角色的访问控制(Role-Based Access Control)是按角色进行授权,如主体的角色为总经理时才可以查询企业运营报表和员工工资信息等 缺点:查询工资所需要的角色变化为总经理和部门经理,此时就需要修改判断逻辑为判断用户角色是否为…

【Django开发】0到1美多商城项目md教程第3篇:用户注册业务实现,1. 用户注册页面绑定Vue数据【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

vue 隐藏导航栏和菜单栏,已解决

初始效果: 效果: 出现问题: 解决方法:

【数字图像处理matlab系列】使用数组索引进行简单的图像裁剪、二次取样操作

【数字图像处理matlab系列】使用数组索引进行简单的图像裁剪、二次取样操作 【先赞后看养成习惯】求点赞+关注+收藏! pout.tif是一张matlab自带的图片,图像尺寸是291*240,使用imread读取该图像>> a = imread(pout.tif); >> imshow(a);对图像a进行上下翻转操作,…

【浅尝C++】类和对象第一弹=>类的定义/访问限定符/实例化/类对象大小计算/this指针

🏠专栏介绍:浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 🚩一些备注:之前的文章有点杂乱,这里将前面的知识点重新组织了,避免了过多冗余的废话。 🎯每日努力一点点,技术变化看…

小程序英文口语发音评测

一、英文口语评测需求 在全球化的今天,英语已经成为了世界上最重要的国际语言之一。无论是在国际商务、科技研究、教育还是日常生活中,英语都扮演着举足轻重的角色。因此,掌握英文口语的能力对于个人的职业发展、学术研究以及跨文化交流都具…

【C语言】指针基础知识(二)

一,指针变量类型的意义 1,指针的类型决定了,对指针解引⽤的时候有多⼤的权限(⼀次能操作⼏个字节)。 例如:char* 的指针解引⽤访问⼀个字节,int* 的指针解引⽤访问四个字节,short*…

DolphinScheduler运维-页面加载缓慢

一、问题描述 DolphinScheduler调度平台的UI界面加载缓慢,项目中的任务实例加载时间过长,需要解决这个问题,提高DolphinScheduler平台UI页面的加载速度。 二、原因分析 经过分析发现,任务实例过多是导致UI加载缓慢的主要原因。由于任务实例无法直接删除,根据文档了解到需…

集成学习 | 集成学习思想:Boosting

目录 一. Boosting思想1. Adaboost 算法1.1 Adaboost算法构建流程1.2 sklearn库参数说明 2. Gradient Boosting 算法2.1 Gradient Boosting算法构建流程2.2 Gradient Boosting算法的回归与分类问题2.2.1 Gradient Boosting回归算法均方差损失函数绝对误差损失函数 2.2.2 Gradie…

SpringMVC结合设计模式:解决MyBatisPlus传递嵌套JSON数据的难题

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

有道翻译实现接口加密解密

文章目录 目标简单逆向分析源码深度逆向分析参考文献目标 实现对网易有道 sign 等参数的加密 及 返回的密文数据解密实现 简单逆向分析 首先在右上角提前登录好账号信息。 输入中文:你好 要求翻译成:英文 全局搜索:你好 或 hello,结果没有发现什么。 切换 Fetch/XHR …

QML ShapePath绘制虚线

一.qml PathLine介绍 在 QML(Qt Modeling Language)中,PathLine 是 Path 元素的一个子类型,用于创建两点之间的直线段。Path 类型用于描述一个二维路径,可以用来绘制形状、曲线和直线。PathLine 是所有路径曲线中最简单…

Day60:WEB攻防-PHP反序列化POP链构造魔术方法流程漏洞触发条件属性修改

目录 PHP-DEMO1-序列化和反序列化 序列化操作 - 即类型转换 序列化案例 PHP-DEMO2-魔术方法触发规则 __construct(): //当对象new的时候会自动调用 __destruct()://当对象被销毁时会被自动调用 __sleep(): //serialize()执行时被自动调用 __wakeup(): //uns…

高中信息技术教资刷题笔记_选择题篇

1.信息技术基础 位与字节的换算 模2除法运算 网页保存 进制之间的计算 教你快速学会二进制、十进制、十六进制之间的转换 - 知乎 (zhihu.com) 原码、补码、反码计算 物联网技术 位运算 按位与:同位置为1,则为1,其他都是0按位或:有…
最新文章