银联商务天满服务平台
Java PHP Python



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 响应结果

错误码