设备心跳数据上报接口用于上传设备在线情况,开发者可在设备在线状态变更或定时策略上传心跳数据。
适用于不带SDK机具,是否需要上传行为数据需跟业务方确认,带SDK直连设备由SDK自动上报,不需要走云端行为数据上传API。
1. 应用开发者根据设备在线状态,构建心跳上报数据
2. 通过支付宝SDK,AlipayCommerceDataSendRequest服务接口,上传心跳数据。
快速接入文档参考《蚂蚁平台快速接入》。
alipay-sdk-JAVA-3.3.93.ALL 及更新版本
alipay-sdk-NET-3.2.71.ALL及更新版本
alipay-sdk-PHP-3.3.93.ALL及更新版本
| 参数 | 参数名称 | 参数类型 | 参数详细说明 | 是否可空 | 样例 |
|---|---|---|---|---|---|
| scene_code | 场景标识 | String(100) | 场景标识,支付宝提供,本场景下固定写法iot_heartbeat_event | 不可空 | iot_heartbeat_event |
| op_code | 操作码 | String(64) | 用于标识操作类型,本场景下固定写法data_send | 不可空 | data_send |
| channel | 来源渠道 | String(32) | 场景数据来源渠道,本场景下固定写法iot_cloud | 不可空 | iot_cloud |
| version | 版本 | String(32) | 场景数据类型版本,本场景下固定写法2.0 | 不可空 | 2.0 |
| op_data | 操作数据 | JSON | 心跳日志,以json格式传输,具体传输内容见下表 | 不可空 | {“device_sn”:“No.37924724”,“supplier_sn”:“2088934837483”} |
op_data
| 参数 | 参数名称 | 参数类型 | 参数详细说明 | 是否可空 | 样例 |
|---|---|---|---|---|---|
| supplier_sn | 设备供应商id | String(32) | 设备供应商ID,需提前向BD获取 | 不可空 | 2088934837483 |
| device_sn | 设备sn | String(32) | 设备sn,来源于设备硬件标识 | 不可空 | SN28372484_GUD |
| biz_tid | 设备统一id | String(64) | 设备统一id,暂时无法获取 | 可空 | olidjwe839238jdehbs21239dfds |
| log_version | 日志版本 | String(8) | 日志版本 | 不可空 | 1 |
| os_version | 设备操作系统(或程序)、版本号 | String(32) | 设备操作系统(或程序)、版本号 | 可空 | linux_v2.6 |
| net_type | 网络类型 | String(16) | 网络类型,可选项: [2G,3G,4G,WIRED,BT,OTHER,NONE] 2G — 2G网路 3G — 3G网路 4G — 4G网路 WIFI-wifi无线网络 WIRED — 有线网络 BT — 蓝牙 OTHER — 其他 NONE — 无 |
不可空 | 2G |
| biz_time | 事件发生时间 | String(32) | 事件发生时间,格式要求为yyyy-MM-dd HH:mm:ss.SSS | 不可空 | 2018-09-11 12:22:22.323 |
| poi | 位置信息 | String(64) | 位置信息 | 可空 | xx学校图书馆 |
| online_status | 在线状态 | String(16) | 在线状态 可选项:[ONLINE,OFFLINE] ONLINE - 在线 OFFLINE - 离线 |
不可空 | ONLINE |
| signal_intensity | 信号强度 | String(8) | 信号强度 可选项:[H,M,L] H - 强 M - 中 L - 弱 |
可空 | H |
@Test
public void heartbeatlog() throws AlipayApiException {
//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient("//openapi.sit.dl.alipaydev.com/gateway.do", APPID, privateKey, "json", "GBK", publicKey, "RSA");
AlipayCommerceDataSendRequest request = new AlipayCommerceDataSendRequest();
request.setBizContent("{\n" +
" \"scene_code\": \"data_send\",\n" +
" \"op_code\": \"heartbeat_send\",\n" +
" \"channel\": \"iot_cloud\",\n" +
" \"version\": \"2.0\",\n" +
" \"op_data\": [\n" +
" {\n" +
" \"supplier_sn\": \"1\",\n" +
" \"device_sn\": \"20219837\",\n" +
" \"biz_tid\": \"2018029312\",\n" +
" \"log_version\": \"1\",\n" +
" \"os_version\": \"linux\",\n" +
" \"net_type\": \"2G\",\n" +
" \"biz_time\": \"2017-11-11 12:22:22.243\",\n" +
" \"poi\":\"xx地点\",\n" +
" \"online_status\": \"ONLINE\",\n" +
" \"signal_intensity\": \"H\"\n" +
" }\n" +
" ]\n" +
" }");
AlipayCommerceDataSendResponse response = alipayClient.execute(request);
if(response.isSuccess()) {
System.out.println("调用成功");
}else{
System.out.println("调用失败");
}
}
//实例化客户端
IAopClient client = new DefaultAopClient("//openapi.sit.dl.alipaydev.com/gateway.do", APPID, privateKey, "json", "1.0", "RSA",publicKey,"GBK",false);
AlipayCommerceDataSendRequest request= new AlipayCommerceDataSendRequest();
request.BizContent="{\n" +
" \"scene_code\": \"iot_heartbeat_event\",\n" +
" \"op_code\": \"data_send\",\n" +
" \"channel\": \"iot_cloud\",\n" +
" \"version\": \"2.0\",\n" +
" \"op_data\": [\n" +
" {\n" +
" \"supplier_sn\": \"1\",\n" +
" \"device_sn\": \"20219837\",\n" +
" \"biz_tid\": \"2018029312\",\n" +
" \"log_version\": \"1\",\n" +
" \"os_version\": \"linux\",\n" +
" \"net_type\": \"2G\",\n" +
" \"biz_time\": \"2017-11-11 12:22:22.243\",\n" +
" \"poi\":\"xx地点\",\n" +
" \"online_status\": \"ONLINE\",\n" +
" \"signal_intensity\": \"H\"\n" +
" }\n" +
" ]\n" +
" }";
AlipayCommerceDataSendResponse response=client.execute(request);
Console.WriteLine(response.Body);
$aop = new AopClient ();
$aop->gatewayUrl = '//openapi.sit.dl.alipaydev.com/gateway.do';
$aop->appId = APPID;
$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';
$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='GBK';
$aop->format='json';
$request = new AlipayCommerceDataSendRequest ();
$request->setBizContent("{" .
" \"scene_code\": \"iot_heartbeat_event\"," .
" \"op_code\": \"data_send\"," .
" \"channel\": \"iot_cloud\"," .
" \"version\": \"2.0\"," .
" \"op_data\": [" .
" {" .
" \"supplier_sn\": \"1\"," .
" \"device_sn\": \"20219837\"," .
" \"biz_tid\": \"2018029312\"," .
" \"log_version\": \"1\"," .
" \"os_version\": \"linux\"," .
" \"net_type\": \"2G\"," .
" \"biz_time\": \"2017-11-11 12:22:22.243\"," .
" \"poi\":\"xx地点\"," .
" \"online_status\": \"ONLINE\"," .
" \"signal_intensity\": \"H\"" .
" }" .
" ]" .
" }");
$result = $aop->execute ($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
echo "成功";
} else {
echo "失败";
}
<!--http请求原文,url必须经过转义后进行POST请求-->
POST //openapi.sit.dl.alipaydev.com/gateway.do?biz_content={"channel":"iot_cloud","op_code":"heartbeat_send","op_data":[{"biz_tid":"2018029312","biz_time":"2017-11-11 12:22:22.243","device_sn":"20219837","log_version":"1","net_type":"2G","online_status":"ONLINE","os_version":"linux","poi":"xx地点","signal_intensity":"H","supplier_sn":"1"}],"scene_code":"iot_heartbeat_event","version":"2.0"}&sign=CtDTp80gm3x9E/OzCcdfY1fCnRJ3EIZpusyVMFvk1nEnvxeteJD1nrzKfzciVFt463OBiB93YiSCDjfkB3RFMyCKfAqfT0RZ6Ig/gYy2PPWgelLL0dOLTgvEHQdZFf+IY2i1aJa6uEjWu7nmvL7R+sYRyXl1MlCgEwgYhbmU73I=×tamp=2018-09-20 20:57:37&sign_type=RSA&charset=UTF-8&app_id=2014060600164699&method=alipay.commerce.data.send&version=1.0