鸿蒙开发-HMS Kit能力集(地图服务、华为支付服务)

news2024/12/23 13:19:21

地图服务

Map Kit(地图服务)是鸿蒙生态下的一个地图服务,为开发者提供强大而便捷的地图能力,助力全球开发者实现个性化地图呈现、地图搜索和路线规划等功能,轻松完成地图构建工作。

Map Kit提供了千万级别的 Poi(Point of Interest,兴趣点)。在地图表达中,一个 Poi 可代表一家商铺、一栋办公楼、一处景点等等。

Map Kit在Poi和路网信息展示方面,根据Poi属性信息及区域路网差异,在不同层级比例尺条件下,为用户展示更合适的Poi和路网信息。手势交互方面,提供了包括缩放、旋转、移动、倾斜等流畅的交互体验。

在这里插入图片描述

AGC控制台创建应用

步骤一:登录AppGallery Connect(简称AGC),点击“我的项目”,在项目中点击“添加项目”,输入项目名称后,点击“创建并继续”。
在这里插入图片描述

步骤二:项目创建完成后, “添加应用”.
注:应用包名需与DevEco Studio 创建HarmonyOS应用工程的Bundle name一致。
在这里插入图片描述

创建HarmonyOS工程

新工程包名需与AppGallery Connect创建应用时一直。
在这里插入图片描述
注:Bundle name需与AGC创建应用时应用包名一致

Client_id设置

新工程的entry模块的module.json5配置的module下,加入AGC应用的client_id分支设置

"metadata": [
 {
  "name": "client_id",
  "value": "111403049" 
   //配置为获取的Client ID
   }
]

添加公钥指纹

调试Map Kit(华为账号)必须

  1. 使用一台登录了华为账号的真机
  2. 对工程自动签名,产生调试证书
  3. 在AGC上对应的项目中,添加公钥指纹

在这里插入图片描述

开通地图服务

应用的“API管理”中搜索map,开启“地图服务”

在这里插入图片描述

地图呈现

MapComponent是地图组件,用于在您的页面中放置地图。

MapComponentController是地图组件的主要功能入口类,用来操作地图,与地图有关的所有方法从此处接入。

它所承载的工作包括:地图类型切换(如标准地图、空地图)、改变地图状态(中心点坐标和缩放级别)、添加点标记(Marker)、绘制几何图形(MapPolyline、MapPolygon、MapCircle)、各类事件监听等。

在这里插入图片描述

MapComponent接口说明

在这里插入图片描述

我的位置权限

启用“我的位置”之前,您需要确保您的应用可以获取用户定位。获取用户定位有两种方式:
方式一:申请ohos.permission.LOCATION和ohos.permission.APPROXIMATELY_LOCATION权限,需在module.json5配置文件中声明所需要的权限

"requestPermissions": [
      {
        "name": "ohos.permission.LOCATION",
        "reason": "$string:location_permission",
        "usedScene": {
          "abilities": [
            "MainAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.LOCATION_IN_BACKGROUND",
        "reason": "$string:background_location_permission",
        "usedScene": {
          "abilities": [
            "MainAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.APPROXIMATELY_LOCATION",
        "reason": "$string:fuzzy_location_permission",
        "usedScene": {
          "abilities": [
            "MainAbility"
          ],
          "when": "inuse"
        }
      }
    ]

请求权限代码

import { abilityAccessCtrl, bundleManager, common, PermissionRequestResult, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

在这里插入图片描述
在这里插入图片描述

华为支付服务

Payment Kit(华为支付服务)提提供了方便、安全和快捷的支付方式,将强大的支付、营销、运营等能力通过HarmonyOS系统级接口形式开放给广大开发者,集成便捷且快速。用户可在开发者的应用/元服务内通过支付完成实体商品或服务的购买并展示支付结果。
华为支付功能由花瓣支付(深圳)有限公司提供,打造更安全、更便捷的HarmonyOS系统支付体验,助力开发者的业务增长。
Payment Kit当前提供三种接入方式:商户、平台类商户、服务商,开发者需要根据实际业务模式选择适用的合作身份。

华为支付接入分类

  1. 华为支付接入分类

开发者可以选择直连商户模式,直接与华为支付对接,使用华为支付服务的经营主体。该模式下,我们提供支付产品及签约代扣产品,支持您的多种载体,包括HarmonyOS应用和元服务。

  1. 服务商

开发者可以选择服务商模式,作为华为支付商户与华为支付之间的连接者,为商户提供开户申请、支付接入、技术开发等综合解决方案机构,您需要在中国支付清算协会备案。该模式下,我们提供支付产品,支持您的多种载体,包括HarmonyOS应用和元服务。

  1. 平台类商户

开发者可以选择服务商模式,作为华为支付商户与华为支付之间的连接者,为商户提供开户申请、支付接入、技术开发等综合解决方案机构,您需要在中国支付清算协会备案。该模式下,我们提供支付产品,支持您的多种载体,包括HarmonyOS应用和元服务。

华为支付服务场景

  1. 商城购物场景

用户在商户App选购完不同的商品后,可以直接在商户App应用内完成下单和支付。

  1. 会员包月场景

用户在商户App应用/元服务开通会员,在支付流程中,同时完成支付和签约,待签约生效后,商家可以按照协议中的时间直接发起免密代扣请求完成扣款续费,无需用户每个月都进行开通会员操作。

  1. 会员续费场景

用户在商户App应用/元服务中完成签约关系后,会员到期后商户系统可以直接发起免密代扣请求完成扣款续费,无需用户进入收银台并且输入支付密码。

华为支付服务功能

  1. 移动支付

商户可在移动端App中集成华为支付功能,轻松实现线上收款,支持银行卡、余额等支付工具。

  1. 元服务支付

商户可在元服务应用中集成华为支付功能,轻松实现线上收款,支持银行卡、余额等支付工具。

  1. 签约代扣

针对商户需要用户周期付款场景下推出的功能,与用户签订协议后,商户可按照约定的代扣规则发起扣款。

在这里插入图片描述

AGC控制台创建应用

步骤一:登录AppGallery Connect(简称AGC),点击“我的项目”,在项目中点击“添加项目”,输入项目名称后,点击“创建并继续”。

步骤二:项目创建完成后,点击项目设置页面“添加应用”按钮,在“添加应用”页面中设置参数后,点击“确认”。

注:应用包名需与DevEco Studio 创建HarmonyOS应用工程的Bundle name一致,均为com.nutpi.chapter0308,且应用分类选择“游戏”。
在这里插入图片描述

添加公钥指纹

调试Payment Kit(华为支付)必须

  1. 使用一台登录了华为账号的真机
  2. 对工程自动签名,产生调试证书
  3. 在AGC上对应的项目中,添加公钥指纹

在这里插入图片描述

开通Payment Kit

步骤一:登录AppGallery Connect平台,选择“我的项目”。
步骤二:在项目列表中找到项目,在项目下的应用列表中选择需要开通Payment Kit的应用。
在这里插入图片描述

步骤三:在左侧导航栏选择“盈利 > 华为支付服务(非虚拟类) > 立即开通”。

在这里插入图片描述
步骤四:(如果已有商户号请忽略本步骤)点击“申请支付商户号”,详细介绍参考华为支付商户入网。申请商户号后,还需要为商户号申请绑定AppID,详细参见商户号绑定AppID。

在这里插入图片描述

商户号绑定AppID

绑定AppID说明
商户后续支付交易依赖于AppGallery Connect中创建应用生成的AppID与商户号的关联关系,因此在华为支付商户入网成功后,需要在华为支付商户平台将商户号与AppID进行绑定才可发起交易。
暂不支持平台子商户及特约商户发起绑定AppID申请。
商户发起绑定AppID申请,同主体(商户号、AppID所关联的营业主体信息)时无需华为支付人工审核。异主体绑定需要商户联系产品侧沟通,申请绑定权限后才可发起绑定以及需要华为支付人工审核后,应用管理员登录AppGallery Connect网站才能对商户号绑定AppID进行授权。
AppID主体与特约商户一致或者与服务商一致,则认为同主体。

特定场景配置操作

接入非快捷支付(即非单次支付)能力,需商户提前联系产品侧开通对应产品(如签约代扣)。
如需要生成及下载对账单,需管理员先在“华为支付商户平台>功能设置”中开启“对账单接口获取开关”,开启后次日开始生成前一日的账单。
涉及服务商户代特约商户发起退款场景,需要服务商在华为支付商户平台上申请API退款授权完成特约商户退款授权操作。

在这里插入图片描述

证书准备

商户证书是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。该证书文件要求为pem格式,支持RSA和SM2两种算法。商户可以自行生成公私秘钥证书,上传至华为支付商户平台。
商户将公钥证书提交到华为支付商户平台后才能获得证书ID,证书ID为请求HTTP请求头鉴权信息PayMercAuth对象中的authId。商户入网完成后,可以在:“商户中心”->“证书管理”->“上传商户证书”->“证书ID”处获取。

在这里插入图片描述
商户私钥
商户自行生成或申请商户证书时,会配套生成商户私钥。请妥善保管好商户私钥文件。
商户请求签名使用商户私钥,请妥善保管好商户私钥文件,不要把私钥文件暴露在公共场合,如上传到Github,写在客户端代码等。
商户私钥用于商户对API请求中的信息进行签名。

华为支付证书
华为支付证书是指由华为支付提供的,包含华为支付平台标识、公钥信息的证书。该证书算法为SM2。
商户请通过华为支付商户平台下载华为支付证书。
华为支付证书中的公钥用于商户对回调通知中的信息进行验签。

商户证书生成

公钥证书生成后须商户手动上传到平台,用于Payment Kit服务器对支付请求验证签名。
商户证书需要满足如下要求:
后缀要求:华为支付商户平台接收的公钥证书格式为“*.pem”。
格式要求:生成RSA公私钥时,密钥长度要求不小于3072,密钥格式为PKCS#8。
使用JavaScript的库线下生成
配置好node执行环境并使用文本编辑器新建文件,拷贝以下代码到文件中并保存命名为“generateKeyPair.js”。
打开命令行工具,执行node generateKeyPair.js命令。
从结果中拷贝生成的公私钥并保存。结果如右图所示:
在这里插入图片描述
在这里插入图片描述

商户证书上传与下载

上传商户证书
请登录华为支付商户平台,在“证书管理 >上传商户证书”模块进行商户证书公钥上传(生成方式及上传要求请参见商户证书生成)。
待上传公钥信息示例:
下载华为支付证书
通过“华为支付证书”模块进行华为支付证书下载,该证书用于校验华为支付给商户业务系统发送的信息,如支付结果信息等。

在这里插入图片描述
在这里插入图片描述

端侧应用配置

在HarmonyOS应用/元服务“entry/src/main/module.json5”文件中module的metadata节点下增加client_id和app_id属性配置。

在这里插入图片描述
在这里插入图片描述

云侧服务准备

华为支付服务提供了支付系统相关的一系列API接口。为减小API接口的接入工作量,华为支付服务提供了java版本对应的maven依赖用于云侧服务对接。
开发者可通过Maven集成来完成服务器开发环境的构建,以此来快速使用华为支付提供的API接口。
可下载示例代码支付-华为支付服务-服务端用以快速完成商户服务器接入。

单次支付业务流程

开发者通过接入Payment Kit单次支付,可以简便快捷的实现应用的支付能力。

  1. 商户客户端请求商户服务器创建商品订单。
  2. 商户服务器按照商户模型调用Payment Kit提供的直连商户预下单或平台类商户/服务商预下单接口获取预下单号(prepayId),然后组建orderStr返回给客户端。
  3. 商户客户端调用requestPayment接口调起Payment Kit客户端收银台。
  4. 用户在Payment Kit客户端收银台完成支付操作后,Payment Kit客户端会收到支付结果信息。
  5. Payment Kit客户端展示支付结果页,用户关闭支付结果页
  6. Payment Kit客户端会返回支付状态给商户客户端。
  7. 支付完成后,Payment Kit服务器会调用回调接口返回支付结果信息给商户服务器。
  8. 商户服务器收到支付结果回调响应后,使用SM2验签方式对支付结果进行验签。

在这里插入图片描述
在这里插入图片描述

单次支付开发步骤

步骤一:预下单(服务器开发)

开发者按照商户模型调用直连商户预下单或平台类商户/服务商预下单接口获取预支付ID(prepayId)。
为保证支付订单的安全性和可靠性需要对请求body和请求头PayMercAuth对象内的入参排序拼接进行签名。请参考排序拼接和签名示例代码。
构建orderStr。
商户服务器需要将客户端支付接口入参orderStr签名后返回给客户端。

在这里插入图片描述
在这里插入图片描述
步骤二:拉起华为支付收银台(端侧开发)

调用requestPayment接口拉起Payment Kit支付收银台。
当接口通过then()返回时,则表示当前订单支付成功。
当此次请求有异常时,可通过error.code获取错误码

在这里插入图片描述
步骤三:支付结果回调通知(服务器开发)

支付成功后Payment Kit服务器会调用开发者提供的回调接口,将支付信息返回给开发者的服务器,回调详细信息按商户模式请参见直连商户支付结果回调通知或平台类商户/服务商支付结果回调通知。

为保证信息合法性,商户服务器需要对返回的支付信息进行SM2验签,验签注意事项:
需直接使用通知的完整内容进行验签。
验签前需要对返回数据进行排序拼接,sign字段是签名值,排序拼接后的待验签内容需要排除sign字段。
验签公钥使用华为支付证书。
右侧为支付结果回调通知请求示例:

当开发者完成上述能力之后,可以调用诸如查询支付订单、申请退款、查询退款订单等API接口完成订单其他相关操作。
在这里插入图片描述

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

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

相关文章

【四轴】基于IIC通信读写MPU6050寄存器

1. 基本原理 在这篇【四轴】软件IIC通信的实现 – Dukis Blog博客中,我介绍了软件IIC的实现方式。而MPU6050,正是一种通过IIC进行通信的传感器外设。 1.1 什么是MPU6050 MPU6050 是 InvenSense 公司推出的一款6 轴惯性传感器模块,广泛应用于姿…

arkTS:使用ArkUI实现用户信息的持久化管理与自动填充(PersistentStorage)

arkUI:使用ArkUI实现用户信息的持久化管理与自动填充(PersistentStorage) 1 主要内容说明2 例子2.1 登录页2.1.1登陆页的相关说明2.1.1.1 持久化存储的初始化2.1.1.2 输入框2.1.1.3 记住密码选项2.1.1.4 登录按钮的逻辑2.1.1.5 注册跳转 2.1.…

基于SpringBoot+Vue的美妆购物网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

【SpringBoot+Vue】x-admin管理系统跟做

技术栈 前端技术说明Vue前端框架Vuex全局状态管理框架ElementUI前端UI框架Axios前端HTTP框架vue-element-admin项目脚手架 后端技术说明SpringBoot容器MVC框架MyBatisORM框架MyBatis-plusMyBatis增强工具Redis非关系型数据库 数据库准备 SET NAMES utf8mb4; SET FOREIGN_KE…

【Docker】Docker配置远程访问

配置Docker的远程访问,你需要按照以下步骤进行操作: 1. 在Docker宿主机上配置Docker守护进程监听TCP端口 Docker守护进程默认只监听UNIX套接字,要实现远程访问,需要修改配置以监听TCP端口。 ‌方法一:修改Docker服务…

LeetCode hot100(自用背诵、部分题目、非最优解)

点击题目可以跳转到LeetCode 哈希 两数之和 public int[] twoSum(int[] nums, int target) {int lengthnums.length;int[] ans new int[2];for (int i 0; i <length-1 ; i) {for (int j i1; j < length; j) {if(nums[i]nums[j]target){ans[0]i;ans[1]j;}}}return an…

Android -- 简易音乐播放器

Android – 简易音乐播放器 播放器功能&#xff1a;* 1. 播放模式&#xff1a;单曲、列表循环、列表随机&#xff1b;* 2. 后台播放&#xff08;单例模式&#xff09;&#xff1b;* 3. 多位置同步状态回调&#xff1b;处理模块&#xff1a;* 1. 提取文件信息&#xff1a;音频文…

基础Web安全|SQL注入

基础Web安全 URI Uniform Resource Identifier&#xff0c;统一资源标识符&#xff0c;用来唯一的标识一个资源。 URL Uniform Resource Locator&#xff0c;统一资源定位器&#xff0c;一种具体的URI&#xff0c;可以标识一个资源&#xff0c;并且指明了如何定位这个资源…

ESG研究报告白皮书与ESG治理报告合集(2020-2023年)

一.资料范围&#xff1a;&#xff08;1&#xff09;ESG白皮书及指南;&#xff08;2&#xff09;ESG研究报告,&#xff08;3&#xff09;ESG治理报告分析&#xff08;4&#xff09;上市公司ESG报告&#xff08;知名企业&#xff09; 二、资料用途&#xff1a;可以分析研究企业E…

WPF指示灯的实现方式

WPF指示灯的实现方式 样式 XAML <Button x:Name"Btn1" Width"25" Height"25" Grid.Row"0" Grid.Column"1" Margin"10 5 5 5 "><Button.Template><ControlTemplate TargetType"Button"…

初识QT第一天

思维导图 利用Qt尝试做出原神登陆界面 import sys from PyQt6.QtGui import QIcon, QPixmap, QMovie from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit# 封装原神窗口类 class Genshin(QWidget):# 构造函数def __init__(self):# 初始化父类…

【Linux】线程池设计 + 策略模式

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 线程池 1-1 ⽇志与策略模式1-2 线程池设计1-3 线程安全的单例模式1-3-1 什么是单例模式1-3-2 单例模式的特点1-3-3 饿汉实现⽅式和懒汉实现⽅式1-3-4 饿汉…

vim插件管理器vim-plug替代vim-bundle

文章目录 vim-plug与vim-bundle对比vim-plug安装vim-plug管理安装插件相关文章 vim-plug与vim-bundle对比 vim-plug 和 vim-bundle 都是 Vim 的插件管理器&#xff0c;但它们有一些关键的区别。以下是两者的主要对比&#xff1a; 易用性和简洁性 vim-plug: 易用性: vim-plug …

107.【C语言】数据结构之二叉树求总节点和第K层节点的个数

目录 1.求二叉树总的节点的个数 1.容易想到的方法 代码 缺陷 思考:能否在TreeSize函数内定义静态变量解决size的问题呢? 其他写法 运行结果 2.最好的方法:分而治之 代码 运行结果 2.求二叉树第K层节点的个数 错误代码 运行结果 修正 运行结果 其他写法 1.求二…

【代码随想录day48】【C++复健】739. 每日温度;496.下一个更大元素 I;503.下一个更大元素II

739. 每日温度 一顿操作猛如虎&#xff0c;一看击败5%。一眼顶针&#xff0c;鉴定为在存栈的时候把值和下标一起存了&#xff0c;所以导致了问题。 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<vector<…

vscode + conda + qt联合开发

安装vscode 安装conda 清华大学开源软件镜像(Anaconda下载)_清华大学镜像-CSDN博客 conda create新建一个环境&#xff0c;激活这个环境&#xff0c;然后安装pyside6 pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple 安装成功后输入 pip list查看是否安装…

第十一篇 绘图matplotlib.pyplot的使用

文章目录 摘要安装方法入门案例使用plt绘图使用ax绘图plt.figure参数plot参数案例一 绘制红色实心的点状图案例二 绘制红色的破折线图案例三 绘制两条线颜色总结设置标题、轴名称、图例使用plt实现绘图使用ax实现绘图legend()中loc设置刻度plt自定义刻度ax自定义刻度plt.title …

Unity-Particle System属性介绍(一)基本属性

什么是ParticleSystem 粒子系统是Unity中用于模拟大量粒子的行为的组件。每个粒子都有一个生命周期&#xff0c;包括出生、运动、颜色变化、大小变化和死亡等。粒子系统可以用来创建烟雾、火焰、水、雨、雪、尘埃、闪电和其他各种视觉效果。 开始 在项目文件下创建一个Vfx文件…

计算机的错误计算(一百七十二)

摘要 探讨 MATLAB 对于算式 的计算误差。 例1. 在 MATLAB 中计算 的值。 直接贴图吧&#xff1a; 这样&#xff0c;MATLAB 的输出中只有3位正确数字&#xff0c;有效数字的错误率为 (16-3)/16 81.25% . 因为16位的正确输出为 0.2971242332737277e-18&#xff08;ISReals…

Flink四大基石之CheckPoint(检查点) 的使用详解

目录 一、Checkpoint 剖析 State 与 Checkpoint 概念区分 设置 Checkpoint 实战 执行代码所需的服务与遇到的问题 二、重启策略解读 重启策略意义 代码示例与效果展示 三、SavePoint 与 Checkpoint 异同 操作步骤详解 四、总结 在大数据流式处理领域&#xff0c;Ap…