5 Star 3 Fork 5

华为移动服务 / hms-wallet-severdemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

华为钱包服务服务端示例代码

目录

简介

华为钱包服务(HUAWEI Wallet Kit)服务端示例代码介绍了如何调用华为钱包服务器接口。华为钱包服务器提供多个REST接口,支持六类卡券(会员卡、优惠券、礼品卡、登机牌、交通车票和活动门票)。您可以调用这些接口进行卡券添加、查询、更新等操作。 在使用此示例代码前,您需在华为开发者联盟上创建一个开发者账号,并在AppGallery Connect上创建一个应用。该应用仅表明您要申请使用华为钱包服务,并不一定是手机上的真实应用,因此即使您不打算开发端侧应用,也需要进行此操作。详情请参阅注册账号创建应用

环境要求

示例代码的运行环境为Maven和Oracle Java(1.8.0.211及以上版本)。

申请华为钱包服务

参照开通服务 申请华为钱包服务。

请注意在申请钱包服务的过程中需要创建一个服务号,该服务号即为passTypeIdentifier的值,后续将在配置示例代码中用到。

您在申请过程中还会创建一对RSA公私钥,请妥善保管。其中私钥用于后续对JWE进行签名 (详情请参阅 生成JWE). 公钥用于钱包服务器验签。

在设置完一类卡券的服务号之后,你就可以运行这个卡券对应的示例代码了。如果你想测试其他卡券,则需申请其他卡券的服务号。

配置参数

运行示例代码前,在”src\test\resources\release.config.properties”文件中配置如下参数:”gw.appid”, “gw.appid.secret”, “gw.tokenUrl”, “walletServerBaseUrl”, “servicePrivateKey”和“walletWebsiteBaseUrl”。

设置 "gw.appid" and "gw.appid.secret":

"gw.appid"和"gw.appid.secret"为应用的"APP ID"和"SecretKey"。登录AppGallery Connect,点击“我的应用”,选择目标应用,即可找到该应用的APP ID和SecretKey。

设置 "gw.tokenUrl"

将gw.tokenUrl设置为https://oauth-login.cloud.huawei.com/oauth2/v3/token,即获取REST接口认证token的地址。

设置 "walletServerBaseUrl":

"walletServerBaseUrl" 为REST接口请求的公共部分,格式为https://{walletkit_server_url}/hmspass。其中{walletkit_server_url}需要根据您的账号所属国家/地区自行替换,如下表:

国家/地区 walletkit_server_url
中国大陆 wallet-passentrust-drcn.cloud.huawei.com.cn
亚洲 wallet-passentrust-dra.cloud.huawei.asia
欧洲 wallet-passentrust-dre.cloud.huawei.eu
拉丁美洲 wallet-passentrust-dra.cloud.huawei.lat
俄罗斯 wallet-passentrust-drru.cloud.huawei.ru

设置 "servicePrivateKety"

将"servicePrivateKey"设置为您在申请华为钱包服务时生成的RSA私钥。您将用此参数对JWE进行签名。

设置 "walletWebsiteBaseUrl"

"walletWebsiteBaseUrl" 是华为钱包H5服务器地址,格式为https://{walletkit_website_url}/walletkit/consumer/pass/save。其中{walletkit_server_url}需要根据您的账号所属国家/地区自行替换,如下表:

国家/地区 walletkit_website_url
中国大陆 walletpass-drcn.cloud.huawei.com
亚洲 walletpass-dra.cloud.huawei.com
欧洲 walletpass-dre.cloud.huawei.com
拉丁美洲 walletpass-dra.cloud.huawei.com
俄罗斯 walletpass-drru.cloud.huawei.com

卡券模板和实例

一个模板代表一种卡券。同一模板下的实例会共享某些参数。例如,一个登机牌模板含有出发和抵达时间等信息,而一个登机牌实例则含有某乘客的姓名、座位号、登机顺序等信息。每一个卡券实例都有一个对应的模板。因此,您需要先创建一个卡券模板,然后才能创建卡券并进行其他操作。

所有卡券模板和实例的数据类型均为HwWalletObject。详情请参阅HwWalletObject Definition for more details.

在示例代码中,卡券模板和实例的入参均通过"src\test\resources\data"文件夹下的JSON文件传入。您可以自行修改JSON文件来生成您想要的卡券。

请把JSON文件中"passTypeIdentifier"的值设置为您在AppGallery Connect上设置的服务号。

编译Maven工程

设置完上述参数后,请将示例代码编译为Maven工程。将全部依赖部署完毕可能要花几分钟时间,具体取决于您的配置文件和网络状况。

示例方法

卡券模板示例方法

1. 创建一个卡券模板

华为钱包服务器提供REST接口用于创建卡券模板。例如,您可通过调用createLoyaltyModel添加会员卡模板到服务器数据库,具体请参阅创建会员卡模板。添加其他类型卡券方法类似。调用其他相关方法前须先创建卡券模板。

2. 查询单个卡券模板

华为钱包服务器提供REST接口用于根据模板ID查询卡券模板。例如,您可通过调用getLoyaltyModel查询会员卡模板,详情请参阅单个查询会员卡模板。查询其他类型卡券模板方法类似。

3. 查询卡券模板列表

如果您创建了多个同一卡券类型的模板(如金卡模板和钻石卡模板),您可通过调用相应接口查询模板列表。例如,可通过调用getLoyaltyModelList查询会员卡模板列表,详情请参阅批量查询会员卡模板。查询其他类型卡券模板列表方法类似。

4. 全量更新卡券模板

华为钱包服务器提供REST接口用于根据模板ID全量更新卡券模板。例如,可通过调用fullUpdateLoyaltyModel全量更新会员卡模板,详情请参阅全量更新会员卡模板。全量更新其他类型卡券模板方法类似。

5. 局部更新卡券模板

华为钱包提供REST接口用于根据模板ID局部更新卡券模板。例如,可通过调用partialUpdateLoyaltyModel局部更新会员卡模板,详情请参阅局部更新会员卡模板。局部更新其他类型卡券模板方法类似。

6. 增加消息到卡券模板

华为钱包提供REST接口用于添加消息到卡券模板。例如,您可通过调用addMessageToLoyaltyModel添加消息到会员卡模板。详情请参阅会员卡模板增加message。添加消息到其他类型模板方法类似。卡券模板中messageList表示消息列表,最多支持十条消息。如果已添加的消息数量达到十条,继续添加将导致最早的消息被删除。

卡券实例示例方法

1. 新增一个卡券实例

华为钱包服务器提供REST接口用于新增卡券实例。例如,可通过调用createLoyaltyInstance新增会员卡实例到服务器数据库,详情请参阅新增会员卡实例。新增其他类型卡券实例方法类似。创建实例前,您需先创建该实例所属的模板。

2. 查询卡券实例

华为钱包服务器提供REST接口用于根据实例ID查询卡券实例。例如,可通过调用getLoyaltyInstance查询会员卡实例,详情可参阅查询会员卡实例。查询其他类型卡券方法类似。

3. 全量更新卡券实例

华为钱包服务器提供REST接口用于根据实例ID全量更新卡券实例。例如,可通过调用fullUpdateLoyaltyInstance全量更新会员卡实例,详情请参阅全量更新会员卡实例。全量更新其他类型卡券实例方法类似。

4. 局部更新卡券实例

华为钱包服务器提供REST接口用于根据实例ID局部更新卡券实例。例如,可通过调用partialUpdateLoyaltyInstance局部更新会员卡实例,详情请参阅局部更新会员卡实例。局部更新其他类型卡券实例方法类似。

5. 添加消息到卡券实例

华为钱包服务器提供REST接口用于添加消息到卡券实例。例如,可通过调用addMessageToLoyaltyInstance增加消息到某个会员卡实例,详情请参阅会员卡实例增加message。增加消息到其他类型卡券实例方法类似。messageList是卡券实例的一个属性,最多支持十条消息。如果已添加的消息达到十条,继续添加将导致最早的消息被删除。

6. 关联/去关联会员卡实例的优惠券实例

本接口仅适用于会员卡实例。可通过调用updateLinkedOffersToLoyaltyInstance为一个会员卡实例新增或删除关联的优惠券实例。详情请参阅关联/去关联优惠券实例。在调用此接口用于关联优惠券前,需确保想要关联的优惠券实例存在于钱包服务器中,否则客户端无法展示该优惠券。您要关联的优惠券可以属于其他应用。

生成JWE

您需要生成JWE字符串并发送到华为钱包H5服务器,从而将卡券与某个华为钱包用户绑定。 您可通过以下两种方式生成JWE。第一种方法: 生成包含完整卡券实例信息的JWE并发送到华为钱包H5服务器。此时您无需调用添加卡券实例接口。第二种方法:调用接口添加卡券实例到钱包服务器,生成仅含卡券实例ID信息的瘦JWE并发送到华为钱包H5服务器,从而将卡券实例与某个用户绑定。
本示例代码提供生成JWE和瘦JWE的方法供您参考。更多信息请参阅网页集成“添加到华为钱包”按钮领取卡券中“生成JWE并发送到华为服务器”和“生成瘦JWE并发送到华为服务器”部分。

验签

若您在申请华为钱包服务过程中设置了回调地址或NFC回调地址,您可接收到华为钱包服务器发送的通知请求。此类请求的请求头携带了签名,您需用华为提供的固定公钥验证该签名。您可参考示例代码中的verifySignature进行验签。详情请参阅回调接口公共定义

技术支持

如果您对HMS Core还处于评估阶段,可在Reddit社区获取关于HMS Core的最新讯息,并与其他开发者交流见解。

如果您对使用HMS示例代码有疑问,请尝试:

  • 开发过程遇到问题上Stack Overflow,在huawei-mobile-services标签下提问,有华为研发专家在线一对一解决您的问题。
  • 华为开发者论坛 HMS Core板块与其他开发者进行交流。

如果您在尝试示例代码中遇到问题,请向仓库提交issue,也欢迎您提交Pull Request

授权许可

华为钱包服务服务端示例代码经过Apache License, version 2.0授权许可.

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: You must give any other recipients of the Work or Derivative Works a copy of this License; and You must cause any modified files to carry prominent notices stating that You changed the files; and You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS

简介

华为钱包服务服务端示例代码介绍了如何调用华为钱包服务器接口。华为钱包服务器提供多个REST接口,支持六类卡券:会员卡、优惠券、礼品卡、登机牌、交通车票和活动门票 展开 收起
Java
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/hms-core/hms-wallet-severdemo.git
git@gitee.com:hms-core/hms-wallet-severdemo.git
hms-core
hms-wallet-severdemo
hms-wallet-severdemo
Java

搜索帮助