本文主要介绍使用支付宝开放平台服务端 SDK 快速接入 **AI订阅 **解决方案。
+ 商家自研:商家自助完成产品开通与接口调用。
+ 服务商代开发:暂不支持服务商代开发。
# 自研商家接入说明
## 创建应用
登录 [支付宝开放平台控制台](https://open.alipay.com/develop/manage),创建 移动应用。
**说明**:生成的应用唯一标识 APPID 可用于调用开放产品接口。
## 配置应用
在 **开发** > **开发设置** 中配置应用信息。

### 接口加签方式
**必填。**用于防止数据篡改,保障应用和支付宝交互的安全性,可查看 [接口加签方式](https://opendocs.alipay.com/common/02mriz.md)。
**说明**:若产品涉及 [资金支出的接口](https://opendocs.alipay.com/common/02kg66.md) 必须 [设置证书加签方式](https://opendocs.alipay.com/common/056zub.md?pathHash=91c49771)。

### 服务器 IP 白名单
**选填。**用于提高应用访问开放平台的安全性,避免因应用私钥泄漏等原因导致业务受损,保障用户资金安全,可查看 [服务器 IP 白名单](https://opendocs.alipay.com/common/02kg65.md)。

### 应用网关
**必填。**用于接收支付宝异步通知消息,需要传入 http(s) 公网可访问网页地址,可查看 [应用网关](https://opendocs.alipay.com/common/02qibh.md)。

### 接口内容加密方式
**选填。**用于加 / 解密 OpenAPI bizContent 报文内容,可大幅提升接口内容传输的安全性。可查看 [接口内容加密方式](https://opendocs.alipay.com/common/02mse3.md)。

### 授权回调地址
**选填**。**网页/移动应用** 指定的回调页面 URL,[用户信息授权](https://opendocs.alipay.com/open/02xtl7#%E5%85%B3%E4%BA%8E%20redirect_uri%20%E7%9A%84%E8%AF%B4%E6%98%8E.md) 成功后,将在该 URL 后携带授权码等信息并跳转至该页面。
**说明:**授权链接中配置的 redirect_uri 的值必须与此回调地址保持一致 (如:`https://www.alipay.com`) 。

### 订阅消息服务
**选填**。异步消息通知,用于提高应用 API 的调用效率。详情可查看 [主动推送服务(From 蚂蚁)](https://opendocs.alipay.com/common/02km9j.md)和 [消息回流服务(To 蚂蚁)](https://opendocs.alipay.com/common/02kiq0.md)。

## 上线应用
移动应用:需要手动上线。提交审核后,预计 1 个工作日的审核时间,请耐心等待,详细步骤可查看 [上线应用](https://opendocs.alipay.com/open/200/golive.md)。应用上线后,还需要完成开通产品才能在线上环境(生产环境)使用产品。
## 绑定商家账号
可选操作。在支付宝开放平台创建的应用归属于对应的开放平台账号。如果要在应用中使用支付和资金等相关产品,需要将应用和支付宝商家平台账号绑定,应用才可调用需要商家开通的产品,具体步骤可查看 [绑定应用](https://opendocs.alipay.com/open/0128wr.md)。
## 开通产品
**产品开通**:按要求填写并提交产品开通申请,提交后进入系统审核流程,审核通过结果将以短信通知到商户。商户也可点此查询 [产品开通情况](https://b.alipay.com/page/products-sign/dynlink/productSign/signManage.htm) 。
+ **注意**:若商家需要在网页版使用单笔支付能力,在开通产品时,需要勾选[电脑网站支付](https://b.alipay.com/page/product-workspace/product-detail/I1080300001000041203/newProductList?);
**代调用授权:**点击 [代调用授权操作指南](https://opendocs.alipay.com/pre-open/0jt7es.md),按照操作指南完成代调用授权。商户开发接入前,请务必完成此操作。
# 集成并配置 SDK
服务端 SDK 需要商家或服务商集成在服务端系统中,用于后续的服务端接口调用。
## 下载服务端 SDK
为了帮助开发者调用开放接口,支付宝提供了开放平台服务端 SDK,包含 Java、PHP、NodeJS、Python 和 .NET 五种语言,封装了签名与验签、HTTP 接口请求等基础功能。
**说明**:请先下载对应语言版本的最新版 [服务端 SDK](https://opendocs.alipay.com/common/02n6z6.md) 并引入开发工程。
## 接口调用配置
在 SDK 调用具体的接口前需要进行 alipayClient 对象初始化。alipayClient 对象只需要初始化一次,后续调用不同的接口都可以使用同一个 alipayClient 对象。
### 公钥模式加签
接口加签方式为 **公钥** 模式加签时 alipayClient 对象初始化的 Java 语言示例代码:
```java
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl(URL);
alipayConfig.setAppId(APP_ID);
alipayConfig.setPrivateKey(PRIVATE_KEY);
alipayConfig.setFormat("json");
alipayConfig.setCharset(CHARSET);
alipayConfig.setAlipayPublicKey(ALIPAY_PUBLIC_KEY);
alipayConfig.setSignType(SIGN_TYPE);
//构造client
AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
```
#### 关键参数说明
| **配置参数** | **示例值解释** | **获取方式/示例值** |
| --- | --- | --- |
| URL | 支付宝网关(固定)。 | `https://openapi.alipay.com/gateway.do` |
| APPID | APPID 即创建应用后生成。 | 获取可查看 [获取 APPID](https://opendocs.alipay.com/common/02nebp.md)。 |
| PRIVATE_KEY | 开发者私钥,由开发者自己生成。 | 获取可查看 [接口加签方式](https://opendocs.alipay.com/common/02mriz.md)。 |
| FORMAT | 参数返回格式,只支持 JSON(固定)。 | JSON |
| CHARSET | 编码集,支持 GBK/UTF-8。 | 开发者根据实际工程编码配置。 |
| ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成。 | 获取详情可查看 [接口加签方式](https://opendocs.alipay.com/common/02mriz.md)。 |
| SIGN_TYPE | 生成签名字符串所使用的签名算法类型,目前支持 RSA2 算法。 | RSA2 |
### 公钥证书模式加签
接口加签方式为 **公钥证书** 模式加签时,alipayClient 对象初始化的 Java 语言示例代码如下:
**注意:**若使用 **公钥证书** 模式进行加签,需额外引入如下 JAR 包:
+ [bcprov-jdk15on](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on)
+ [commons-logging](https://mvnrepository.com/artifact/commons-logging/commons-logging)
+ [fastjson](https://mvnrepository.com/artifact/com.alibaba/fastjson)
```java
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(URL);
certAlipayRequest.setAppId(APPID);
certAlipayRequest.setPrivateKey(PRIVATE_KEY);
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset(CHARSET);
certAlipayRequest.setSignType(SIGN_TYPE);
certAlipayRequest.setCertPath(app_cert_pathAPP_CERT_PATH);
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
certAlipayRequest.setRootCertPath(alipay_root_cert_path );
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
// 提交数据至支付宝时请使用
alipayClient.certificateExecute(request);
```
#### 关键参数说明
| **配置参数** | **示例值解释** | **获取方式/示例值** |
| --- | --- | --- |
| URL | 支付宝网关(固定)。 | `https://openapi.alipay.com/gateway.do` |
| APPID | APPID 即创建应用后生成。 | 获取可查看 [获取 APPID](https://opendocs.alipay.com/common/02nebp.md)。 |
| PRIVATE_KEY | 开发者私钥,由开发者自己生成。 | 获取可查看 [接口加签方式](https://opendocs.alipay.com/common/02mriz.md)。 |
| FORMAT | 参数返回格式,只支持 JSON(固定)。 | JSON |
| CHARSET | 编码集,支持 GBK/UTF-8。 | 开发者根据实际工程编码配置。 |
| SIGN_TYPE | 生成签名字符串所使用的签名算法类型,目前支持 RSA2 算法。 | RSA2 |
| app_cert_path | 应用公钥证书文件本地路径。 | 获取详情可查看 [接口加签方式](https://opendocs.alipay.com/common/02mriz.md)。 |
| alipay_cert_path | 支付宝公钥证书文件本地路径。 | 获取详情可查看 [接口加签方式](https://opendocs.alipay.com/common/02mriz.md)。 |
| alipay_root_cert_path | 支付宝根证书文件本地路径。 | 获取详情可查看 [接口加签方式](https://opendocs.alipay.com/common/02mriz.md)。 |