import com.chinaums.open.api.OpenApiCache;
import com.chinaums.open.api.OpenApiContext;
import com.chinaums.open.api.constants.ConfigBean;
import com.chinaums.open.api.internal.util.http.HttpTransport;
import java.util.UUID;
public class OpenApiSdkTest {
public static void main(String[] args) throws Exception{
String url = "/v1/selfserviceterminal/devicestatus/upload ";
//开发者ID
String appId = "平台分配";
//开发者秘钥
String appKey = "平台分配";
//实例化客户端
ConfigBean configBean = new ConfigBean();
OpenApiContext context = new OpenApiContext();
String request = "{\"NET_CODE\":\"\",
\"MER_NO\":\"\",
\"TERM_NO\":\"\",
\"FID\":\"\",
\"MID\":\"\",
\"SERIAL_NO\":\"\",
\"MASTER_VER\":\"\",
\"SERVICE_VER\":\"\",
\"APP_VER\":\"\",
\"TOTAL_STATUS\":\"\",
\"PRINTER_STATUS\":\"\",
\"RECEIPT_PRINTER_STATUS\":\"\",
\"CARD_STATE\":\"\",
\"OC_STATUS\":\"\",
\"INS_STATUS\":\"\",
\"MAC_STATUS\":\"\",
\"HE_STATUS\":\"\",
\"WP_TATUS\":\"\",
\"WP_CNT\":\"\",
\"RC_CNT\":\"\",
\"BOX1_STAT\":\"\",
\"BOX1_CUR\":\"\",
\"BOX1_PAR\":\"\",
\"BOX1_CNT\":\"\",
\"BOX2_STAT\":\"\",
\"BOX2_CUR\":\"\",
\"BOX2_PAR\":\"\",
\"BOX2_CNT\":\"\",
\"BOX3_STAT\":\"\",
\"BOX3_CUR\":\"\",
\"BOX3_PAR\":\"\",
\"BOX3_CNT\":\"\",
\"BOX4_STAT\":\"\",
\"BOX4_CUR\":\"\",
\"BOX4_PAR\":\"\",
\"BOX4_CNT\":\"\",
\"ALARM\":\"\",
\"COMM_STATUS\":\"\",
\"GPS\":\"\",
\"IC_STATUS\":\"\",
\"NC_STATUS\":\"\",
\"LOCK_STATUS\":\"\",
\"LAST_MONITOR_TIME\":\"\",
\"MONITOR_TIME\":\"\",
\"OC_ERROR\":\"\"}";
context.setStartTime(System.currentTimeMillis());
context.setRequestId(UUID.randomUUID().toString().replace("-", ""));
context.setOpenServUrl(url.split("/v")[0].concat("/"));
context.setApiServiceUrl(url);
context.setVersion(url.split("/")[3]);
context.setAppId(appId);
context.setAppKey(appKey);
context.setConfigBean(configBean);
context.setServiceCode(url.split("/v")[1].substring(1));
OpenApiCache.getCurrentToken(context);
System.out.println(HttpTransport.getInstance().doPost(context, request));
}
}
<?php
require_once "../utils/Log.php";
require_once "../utils/Tools.php";
require_once "../DefaultOpenApiClient.php";
class DataRequest
{
public $url = "";
public $serviceCode = "";
public $apiVersion ="";
public $needToken = true;
public $needDataTag = false;
public $data;
function __construct($data, $url)
{
$this->data = $data;
$apiVersion = preg_split("/[/]+/s",$url)[2];
$this->apiVersion = $apiVersion;
$serviceCode = strstr($url,$apiVersion);
$this->url = strstr($url,"/".$apiVersion,true);
$this->serviceCode = preg_replace("/^" . preg_quote($apiVersion, "/") . "/", "", $serviceCode);
}
}
class DataDemo{
public function main(){
$appid = "平台分配";
$appkey = "平台分配";
$url = "/v1/selfserviceterminal/devicestatus/upload ";
$data = json_encode(array("NET_CODE"=>"",
"MER_NO"=>"",
"TERM_NO"=>"",
"FID"=>"",
"MID"=>"",
"SERIAL_NO"=>"",
"MASTER_VER"=>"",
"SERVICE_VER"=>"",
"APP_VER"=>"",
"TOTAL_STATUS"=>"",
"PRINTER_STATUS"=>"",
"RECEIPT_PRINTER_STATUS"=>"",
"CARD_STATE"=>"",
"OC_STATUS"=>"",
"INS_STATUS"=>"",
"MAC_STATUS"=>"",
"HE_STATUS"=>"",
"WP_TATUS"=>"",
"WP_CNT"=>"",
"RC_CNT"=>"",
"BOX1_STAT"=>"",
"BOX1_CUR"=>"",
"BOX1_PAR"=>"",
"BOX1_CNT"=>"",
"BOX2_STAT"=>"",
"BOX2_CUR"=>"",
"BOX2_PAR"=>"",
"BOX2_CNT"=>"",
"BOX3_STAT"=>"",
"BOX3_CUR"=>"",
"BOX3_PAR"=>"",
"BOX3_CNT"=>"",
"BOX4_STAT"=>"",
"BOX4_CUR"=>"",
"BOX4_PAR"=>"",
"BOX4_CNT"=>"",
"ALARM"=>"",
"COMM_STATUS"=>"",
"GPS"=>"",
"IC_STATUS"=>"",
"NC_STATUS"=>"",
"LOCK_STATUS"=>"",
"LAST_MONITOR_TIME"=>"",
"MONITOR_TIME"=>"",
"OC_ERROR"=>""));
$reqiest = new DataRequest($data,$url);
$client = new DefaultOpenApiClient();
$content = $client->execute($reqiest,$appid,$appkey);
$obj = json_decode($content);
print_r($obj->errCode);
print_r($obj->errInfo);
}
}
$p = new DataDemo();
$p->main();
?>
# -*- coding: utf-8 -*-
from webapi.DefaultOpenApiClient import DefaultOpenApiClient
url = "/v1/selfserviceterminal/devicestatus/upload "
class DataRequest(object):
def __init__(self, data: dict) -> dict:
self.data = data
self.serviceCode = url[len(url.split("/v")[0])+len(url.split("/")[3])+1: len(url)]
self.apiVersion = url.split("/")[3]
self.needToken = True
self.needDataTag = True
appId="平台分配"
appKey="平台分配"
client = DefaultOpenApiClient(appId, appKey)
cls = DataRequest({\"NET_CODE\":\"\",
\"MER_NO\":\"\",
\"TERM_NO\":\"\",
\"FID\":\"\",
\"MID\":\"\",
\"SERIAL_NO\":\"\",
\"MASTER_VER\":\"\",
\"SERVICE_VER\":\"\",
\"APP_VER\":\"\",
\"TOTAL_STATUS\":\"\",
\"PRINTER_STATUS\":\"\",
\"RECEIPT_PRINTER_STATUS\":\"\",
\"CARD_STATE\":\"\",
\"OC_STATUS\":\"\",
\"INS_STATUS\":\"\",
\"MAC_STATUS\":\"\",
\"HE_STATUS\":\"\",
\"WP_TATUS\":\"\",
\"WP_CNT\":\"\",
\"RC_CNT\":\"\",
\"BOX1_STAT\":\"\",
\"BOX1_CUR\":\"\",
\"BOX1_PAR\":\"\",
\"BOX1_CNT\":\"\",
\"BOX2_STAT\":\"\",
\"BOX2_CUR\":\"\",
\"BOX2_PAR\":\"\",
\"BOX2_CNT\":\"\",
\"BOX3_STAT\":\"\",
\"BOX3_CUR\":\"\",
\"BOX3_PAR\":\"\",
\"BOX3_CNT\":\"\",
\"BOX4_STAT\":\"\",
\"BOX4_CUR\":\"\",
\"BOX4_PAR\":\"\",
\"BOX4_CNT\":\"\",
\"ALARM\":\"\",
\"COMM_STATUS\":\"\",
\"GPS\":\"\",
\"IC_STATUS\":\"\",
\"NC_STATUS\":\"\",
\"LOCK_STATUS\":\"\",
\"LAST_MONITOR_TIME\":\"\",
\"MONITOR_TIME\":\"\",
\"OC_ERROR\":\"\"})
response = client.execute(cls)
print(str(response.get("data")))
print(response.get("errCode"))
print(response.get("errInfo"))
print(response.get("resultCode"))
print(response.get("resultInfo"))
设备状态上送
URL
- 生产环境:
POST
https://api-mop.chinaums.com/v1/selfserviceterminal/devicestatus/upload
描述:上送当前设备状态,以便运维人员及时知晓
ContentType:application/json
请求头
名称 | 必填 | 描述 | 示例值 |
---|---|---|---|
Authorization | 是 | 认证内容 | OPEN-BODY-SIG AppId="****",Timestamp="20170606135700",Nonce="99930a147f5353dd8a8f29a5329f37e9",Signature="IPmdGHYCcfN+mto0/02zkwoUF1NT3YqPKaUykMaec1T=" |
请求参数
名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
NET_CODE | string | 是 | 3 | 定时状态报告 361 状态切换报告 362 故障信息报告 364 | |
MER_NO | string | 否 | 15 | 商户号 | |
TERM_NO | string | 否 | 8 | 终端编号 | |
FID | string | 是 | 50 | 厂商标识 | |
MID | string | 是 | 50 | 型号标识 | |
SERIAL_NO | string | 是 | 50 | 硬件序列号 | |
MASTER_VER | string | 否 | 100 | 主控版本 | |
SERVICE_VER | string | 否 | 500 | 服务版本 | |
APP_VER | string | 否 | 500 | 应用版本 | |
TOTAL_STATUS | string | 是 | 1 | 终端总状态 0:服务状态(正常) 1:业务管理状态 (处于系统参数设置状态、加钞状态等) 2:系统管理状态 (暂停服务状态) 9:故障状态 | |
PRINTER_STATUS | string | 否 | 1 | 流水打印机状态 0:正常 1:纸少 2:缺纸 3:卡纸 9:故障 | |
RECEIPT_PRINTER_STATUS | string | 否 | 1 | 凭条打印机状态 :正常 1:纸少 2:缺纸 3:卡纸 9:故障 | |
CARD_STATE | string | 否 | 1 | 磁卡读卡器状态 0:正常 9:故障 | |
OC_STATUS | string | 否 | 1 | 出钞模块状态 0:正常 1:无此模块 2:卡钞 3:至少一个钞箱故障或空 9:故障 | |
INS_STATUS | string | 否 | 1 | 保险门状态 0:正常(关) 1:正常(开) 9:异常 | |
MAC_STATUS | string | 否 | 1 | 机箱门状态 0:正常(关) 1:正常(开) 9:异常 | |
HE_STATUS | string | 否 | 1 | 硬件加密器状态 0:正常 9:异常 | |
WP_TATUS | string | 否 | 1 | 废钞箱状态 0:正常 1: 几乎满 2:满 9:异常 | |
WP_CNT | number | 否 | 10 | 废钞箱张数 | |
RC_CNT | number | 否 | 10 | 吞卡张数 | |
BOX1_STAT | string | 否 | 1 | 钞箱1状态 0:正常 1:钞少 2:缺钞 3:无钞箱 9:故障 | |
BOX1_CUR | string | 否 | 3 | 钞箱1币种 CNY 人民币 | |
BOX1_PAR | string | 否 | 10 | 钞箱1面额 | |
BOX1_CNT | number | 否 | 10 | 钞箱1张数 | |
BOX2_STAT | string | 否 | 1 | 钞箱2状态 0:正常 1:钞少 2:缺钞 3:无钞箱 9:故障 | |
BOX2_CUR | string | 否 | 3 | 钞箱2币种 | |
BOX2_PAR | string | 否 | 10 | 钞箱2面额 | |
BOX2_CNT | number | 否 | 10 | 钞箱2张数 | |
BOX3_STAT | string | 否 | 1 | 钞箱3状态 0:正常 1:钞少 2:缺钞 3:无钞箱 9:故障 | |
BOX3_CUR | string | 否 | 3 | 钞箱3币种 CNY 人民币 | |
BOX3_PAR | string | 否 | 10 | 钞箱3面额 | |
BOX3_CNT | number | 否 | 10 | 钞箱3张数 | |
BOX4_STAT | string | 否 | 1 | 钞箱4状态 0:正常 1:钞少 2:缺钞 3:无钞箱 9:故障 | |
BOX4_CUR | string | 否 | 3 | 钞箱4币种 | |
BOX4_PAR | string | 否 | 10 | 钞箱4面额 | |
BOX4_CNT | number | 否 | 10 | 钞箱4张数 | |
ALARM | string | 否 | 1 | 报警装置 0:安全 1:报警 9:故障状态 | |
COMM_STATUS | string | 否 | 1 | 通讯状态 0:电话线 1:网线 2:SIM卡 3:WIFI | |
GPS | string | 否 | 30 | GPS坐标 | |
IC_STATUS | string | 否 | 1 | IC卡读卡器状态 0:正常 9:故障 | |
NC_STATUS | string | 否 | 1 | 非接读卡器状态 0:正常 9:故障 | |
LOCK_STATUS | string | 否 | 1 | 电子密码锁状态 0:正常(关) 1:正常(开) 9:故障 | |
LAST_MONITOR_TIME | string | 否 | 20 | 终端上次发送状态时间 | |
MONITOR_TIME | string | 否 | 20 | 终端本次发送状态时间 | |
OC_ERROR | string | 否 | 200 | 出钞模块错误状态描述 |
响应示例
{
"respCode":"",
"respMsg":""
}
响应参数
名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
respCode | string | 是 | 64 | 响应代码 | |
respMsg | string | 是 | 64 | 响应结果 |