# 简介
To 蚂蚁的消息主要是用于外部商家将数据回流至蚂蚁,如用户位置信息。回流数据一般具有数据量比较大、实时性要求不高、并且对蚂蚁内部业务处理结果无需强感知等特点。
**注意:**若商家需强感知蚂蚁内部业务处理结果,如交易是否创建成功、交易是否支付成功等场景,切勿使用开放平台 To 蚂蚁的消息接口,针对这种业务需求,请走开放平台同步 OpenAPI 接口。若商家自己无法确定自己的业务场景该使用开放平台哪种服务接口,请联系支付宝技术支持进行评估。
# 使用方法
## To 蚂蚁消息服务接入流程与 OpenAPI 接口服务接入流程基本保持一致,流程图如下。入驻支付宝开放平台
开放平台入驻流程详情可查看 [平台入驻](https://opendocs.alipay.com/open/00hqwq)。
## 开通消息服务
### 应用开通消息服务
在上述步骤创建应用过程中,开发者需要基于自身业务场景添加对应的功能。同样,若开发者需要开通消息服务,则需添加包含该消息服务的功能至自己的功能列表中,若功能需要签约,则开发者需走功能签约流程。 举例说明如下:
### 应用订阅消息
添加完功能后,针对消息服务,开发者还需完成 **主动订阅 **操作。
进入应用详情页,点击左侧 **消息服务 **菜单,进入消息服务管理页面,在 **To 蚂蚁 **标签页具体接口操作列中点击 **订阅**。
## 发送消息
从通讯协议上,开放平台 **To 蚂蚁消息服务** 目前提供了两种接入方式,https 以及 WebSocket 长连接,开发者可以在订阅消息接口时进行选择 **接入方式**。
### https 接入
针对 **To 蚂蚁消息服务**,开发者可直接通过开放平台对外提供的 [SDK](https://opendocs.alipay.com/open/54/103419) 访问服务,调用方式与同步 OpenAPI 接口调用方式基本一致。
**注意:**开发者访问 **To 蚂蚁消息服务**,需访问 **开放平台入口消息网关域名 gateway,请根据对应接口文档选择新老域名:**
- 老域名地址:https://openasyncapi.alipay.com/gateway.do
- 新域名地址:https://openmq.alipay.com/message.do
#### 普通公钥加签方式
请求示例
```javascript
AlipayClient alipayClient = new DefaultAlipayClient("gateway","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayOpenAppOpenapiPreheatPublishRequest request = new AlipayOpenAppOpenapiPreheatPublishRequest();
AlipayOpenAppOpenapiPreheatPublishResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
```
响应示例
```javascript
{
"alipay_open_app_openapi_preheat_publish_response":{
"code":"10000",
"msg":"Success"
}
,"sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
```
#### 公钥证书加签方式
请求示例
```java
//构造client
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
// 开放平台入口消息网关域名
certAlipayRequest.setServerUrl(gateway);
// 应用APPID
certAlipayRequest.setAppId(app_id);
// 应用私钥
certAlipayRequest.setPrivateKey(privateKey);
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset(charset);
certAlipayRequest.setSignType(sign_type);
// 应用公钥证书路径
certAlipayRequest.setCertPath(app_cert_path);
// 支付宝公钥证书路径
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
// 支付宝根证书路径
certAlipayRequest.setRootCertPath(alipay_root_cert_path);
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayOpenAppOpenapiPreheatPublishRequest request = new AlipayOpenAppOpenapiPreheatPublishRequest();
AlipayOpenAppOpenapiPreheatPublishResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
```
响应示例
```json
{
"alipay_open_app_openapi_preheat_publish_response": {
"code": "10000",
"msg": "Success"
},
"alipay_cert_sn": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // 不参与签名
"sign": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
```
### WebSocket
除了原有的 http(s) 来发送 **To 蚂蚁消息 **外,开放平台还提供了 WebSocket 长连接的接入方案,保持长连接针对量大的消息投递性能更优。详情可查看 [WebSocket长连接接入](https://opendocs.alipay.com/common/02kiq1)。
# FAQ
## To 蚂蚁消息接口和同步 OpenAPI 接口有什么区别?
To 蚂蚁消息接口主要应用于需将数据回流至蚂蚁的场景,这种数据一般具有数据量比较大,实时性要求不高,并且对蚂蚁内部业务处理结果无需强感知等特点。 入口消息网关收到外部商家的请求后,将请求内容封装成消息投递到蚂蚁内部的消息集群后,立即将 **消息投递结果 **返回给外部商家,**该结果并不代表蚂蚁内部业务系统是否已正确处理了该笔请求**,处理链路图如下:而同 OpenAPI 接口的返回内容,是蚂蚁内部业务系统的真实处理结果,处理链路图如下: