SSK-串口数据交互文档-1.1.0
| 版本号 | 编辑者 | 更新时间 | 更新内容 |
|---|---|---|---|
| V1.0.0 | 陈浩 | 2024/10/14 | 创建 |
| V1.1.0 | 房杨平 | 2025/07/24 | 数据使 用JSON通信,废弃base参数模块, 适用于收款程序1.1.0或更高版本 |
功能描述
- 串口初始化:设置串口参数并打开串口与设备建立连接。
- 数据接收:通过回调接口接收从设备发送的数据。
- 数据发送:向外部设备发送数据。
SDK下载
- SDK下载地址: sxf-20251210-serial-port-v1.1.1.aar
- 源码下载地址: serial-sdk-demo-1.1.1.zip
接口介绍
注意: 这里所有的接口参数都以JSON的格式,所有的接口请求和响应都应该包含公共参数信息。
公共请求参数信息
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
api | String | 是 | 接口 |
requestId | String | 否 | 调用方唯一请求流水号 |
公共响应参数信息
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
code | String | 是 | 业务响应码,定义业务处理结果状态(见下方响应码说明) |
msg | String | 是 | 业务响应描述信息,用于说明响应码对应的具体结果 |
data | Object | 是 | 数据对象 |
├─ requestId | String | 否 | 原样返回请求中的流水号,用于请求-响应匹配校验 |
├─ api | String | 是 | 接口 |
├─ sn | String | 是 | 终端SN |
公共响应结构
{
"code": "00",
"msg": "SUCCESS",
"data": {
"requestId": "971dda25971dda25971dda25",
"sn": "SI00005958",
"api": "/sale",
"..."
}
}
响应码定义表
| 常量名 | 值 | 类型 | 说明 |
|---|---|---|---|
REQUEST | "04" | String | 表示请求已发出(待处理状态) |
CONFIRM | "03" | String | 请求确认收到(已接收未处理) |
PROCESSING | "02" | String | 请求正在处理中(异步处理) |
FAIL | "01" | String | 受理异常(业务失败) |
SUCCESS | "00" | String | 正常受理(业务成功) |
使用说明
初始化串口
serialService = SerialSDKService.getInstance(context);
serialService.setListener(this);
serialService.create("/dev/ttyS2", 9600);
serialService.open();
示例代码
以下是一个完整的示例代码,展示如何使用此 SDK:
public class MainActivity extends AppCompatActivity implements SerialListener {
private SerialSDKService serialService;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serialService = SerialSDKService.getInstance(context);
serialService.setListener(this);
serialService.create("/dev/ttyS2", 9600);
serialService.open();
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("api", "/sale");
jsonObject.put("orderAmount", amount);
jsonObject.put("paymentType", "01");
jsonObject.put("merchantSerialNo", UUID.randomUUID());
jsonObject.put("externalAdditionalData", "external data");
String jsonString = jsonObject.toString();
serialService.sendText(jsonString);
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
@Override
public void onDataReceived(String jsonString) {
try {
Log.i(TAG, "onDataReceived result: " + new JSONObject(jsonString));
JSONObject jsonObject = new JSONObject(jsonString);
String code = jsonObject.optString("code");
String msg = jsonObject.optString("msg");
if(code.equals("00")) {
JSONObject data = jsonObject.optJSONObject("data");
if (data != null) {
String api = data.optString("api");
String requestId = data.optString("requestId");
String sn = data.optString("sn");
Log.d("JSON", "api = " + api);
if (api.equals("/sale") && requestId.equals("requestId")) {
Log.i(TAG, "onDataReceived: Processing /sale return data");
}
}
}else {
Log.e(TAG, "onDataReceived: " + msg );
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(int errorCode, String errorMessage) {
Log.i(TAG, "onError: " + errorCode + " errorMessage:" + errorMessage);
}
@Override
protected void onDestroy() {
super.onDestroy();
serialService.close();
}
}
接口列表
签到
接口:/sign
请求参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
api | String | 是 | 接口 |
JAVA代码
JSONObject jsonObject = new JSONObject();
jsonObject.put("api", "/sign");
serialService.sendText(jsonObject.toString());
JSON
{
"api":"/sign",
}
响应参数
| 参数名 | 类型 | 描述 |
|---|---|---|
signStatus | String | 签到 状态 YES NO |
merchantNo | String | 商户号 |
defaultAmount | String | 预授权金额 |
showCardSwipeButton | String | 是否显示刷卡按钮 SHOW HIDE |
示例
{
"code":"00",
"msg":"SUCCESS",
"data":{
"api":"/sign",
"sn":"SI00005958",
"signStatus":"YES",
"merchantNo":"4276000064",
"defaultAmount":"45.00",
"showButton":"SHOW",
}
}