# hms-iap-serverdemo
**Repository Path**: mike-mei/hms-iap-serverdemo
## Basic Information
- **Project Name**: hms-iap-serverdemo
- **Description**: 华为应用内支付服务端示例代码,共提供了java, csharp, golang, nodejs, perl, php, python and ruby八种语言样例代码。介绍了华为应用内支付的服务端开发步骤,帮助您快速了解华为支付提供的服务端接口及其使用方法。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2021-09-01
- **Last Updated**: 2021-09-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 华为应用内支付服务服务端示例代码
[English](https://gitee.com/hms-core/hms-iap-serverdemo/blob/master/README.md) | 中文
## 目录
* [简介](#简介)
* [安装](#安装)
* [环境要求](#环境要求)
* [配置](#配置)
* [示例代码](#示例代码)
* [技术支持](#技术支持)
* [授权许可](#授权许可)
## 简介
示例代码里包含华为应用内支付服务服务端的接口,供开发者参考或使用。示例代码包如下。
AtDemo:AccessToken的示例代码。每个方法可以独立运行。
OrderService:OrderService的示例代码。每个方法可以独立运行。
SubscriptionService:SubscriptionService的示例代码。每个方法可以独立运行。
notification:notification的示例代码。每个方法可以独立运行。
## 安装
使用示例代码前,确认是否已安装Java环境。解压示例代码包。
将解压文件夹中的代码包拷贝到JAVAPATH指定路径下的工程目录中。刷新该项目,确保文件成功复制到目标目录。
## 环境要求
建议使用JDK 1.8及以上版本。
## 配置
为实现示例中的功能,开发者需要在AtDemo.java文件、OrderService.java文件、SubscriptionService.java文件和AppServer.java文件中配置相关参数。
AtDemo.java中的参数说明如下:
clientId:客户端ID,从应用信息中获取。
clientSecret:应用的安全接入键,从应用信息中获取。
tokenUrl:华为OAuth2.0服务获取token的地址,详见获取应用级AT。
Notification目录下的AppServer.java文件中的参数如下。
PUBLIC_KEY:RSA公钥。
首先要明确accountFlag的含义。如果InappPurchaseData中的accountFlag值为1,则表示该账户属于电信运营商(TOBTOC_SITE_URL),若该值不为1,则属于华为(TOC_SITE_URL)。对于OrderService和SubscriptionService,您需要选择合适的站点。TOC_SITE_URL:在不同的站点有不同的地址,开发者应选择接入最近的站点。TOBTOC_SITE_URL:电信运营商的站点。
## 示例代码
示例代码中,每个方法都调用了华为应用内支付服务服务器的接口。所用方法如下。
1). AtDemo: getAppAT()
该方法用于获取应用级AccessToken。
代码路径:src/main/java/com/example/demo/AtDemo.java
2). OrderService: verifyToken()
该方法用于校验支付结果中的purchaseToken,华为支付服务器确认支付结果的准确性。
地址:{rootUrl}/applications/purchases/tokens/verify。rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Order服务地址。
代码路径:src/main/java/com/example/demo/OrderService.java
3). OrderService: cancelledListPurchase()
该方法用于分页查询已取消或已退款的购买信息。
地址:{rootUrl}/applications/{apiVersion}/purchases/cancelledList。rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Order服务地址。
代码路径:src/main/java/com/example/demo/OrderService.java
4). SubscriptionService: getSubscription()
该方法用于校验已购订阅商品的信息,如获取其有效期、状态等。
地址:{rootUrl}/sub/applications/{apiVersion}/purchases/get。rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Subscription服务地址。
代码路径:src/main/java/com/example/demo/SubscriptionService.java
5). SubscriptionService: stopSubscription()
该方法用于取消已经订阅的商品,商品在有效期内仍然有效,但后续的续订会终止。
地址:{rootUrl}/sub/applications/{apiVersion}/purchases/stop。rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Subscription服务地址。
代码路径:src/main/java/com/example/demo/SubscriptionService.java
6). SubscriptionService: delaySubscription()
该方法用于为用户续订订阅产品,推迟订阅者的下一个结算日期。
地址:{rootUrl}/sub/applications/{apiVersion}/purchases/delay,rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Subscription服务地址。
代码路径:src/main/java/com/example/demo/SubscriptionService.java
7). SubscriptionService: returnFeeSubscription()
该方法用于将最新一次订阅退款给用户,不会取消订阅,在订阅到期之前一直有效,后续订阅也可正常进行。
地址:{rootUrl}/sub/applications/{apiVersion}/purchases/returnFee。rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Subscription服务地址。
代码路径:src/main/java/com/example/demo/SubscriptionService.java
8). SubscriptionService: withdrawSubscription()
该方法用于取消订阅,相当于执行returnFeeSubscription方法,订阅商品会立即取消,同时会终止后续续订。
地址:{rootUrl}/sub/applications/{apiVersion}/purchases/withdrawal。rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Subscription服务地址。
代码路径:src/main/java/com/example/demo/SubscriptionService.java
9). AppServer: dealNotification()
该方法用于处理订阅事件通知。
信息参数从订阅事件通知中获取。
代码路径:src/main/java/com/example/demo/notification/AppServer.java
10). OrderService: confirmPurchase()
商品发货后,调用该方法确认购买。
地址:{rootUrl}/applications/{apiVersion}/purchases/confirm。rootUrl在不同的站点有不同的地址,开发者应选择接入可访问的最近的Order服务地址。
代码路径:OrderService.java
## 技术支持
如果您对HMS Core还处于评估阶段,可在[Reddit社区](https://www.reddit.com/r/HuaweiDevelopers/)获取关于HMS Core的最新讯息,并与其他开发者交流见解。
如果您对使用HMS示例代码有疑问,请尝试:
- 开发过程遇到问题上[Stack Overflow](https://stackoverflow.com/questions/tagged/huawei-mobile-services),在`huawei-mobile-services`标签下提问,有华为研发专家在线一对一解决您的问题。
- 到[华为开发者论坛](https://developer.huawei.com/consumer/cn/forum/blockdisplay?fid=18) HMS Core板块与其他开发者进行交流。
如果您在尝试示例代码中遇到问题,请向仓库提交[issue](https://github.com/HMS-Core/hms-iap-serverdemo/issues),也欢迎您提交[Pull Request](https://github.com/HMS-Core/hms-iap-serverdemo/pulls)。
## 授权许可
华为应用内支付服务服务端示例代码经过[Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0)授权许可。