K2Mini双屏异显开发说明

K2mini是一个特殊的双屏自助终端设备,两块屏幕可以自由设置主副屏,您可以参考以下代码对设备副屏进行适配, 保障您的业务正常进行:

双屏功能:
双屏使用的是Presentation类来实现双屏异显:
首先是权限
创建一个类继承Presentation
publicclassTextDisplayextendsPresentation


获得真实存在的副屏

publicDisplaygetPresentationDisplays(){
DisplayManagermDisplayManager=(DisplayManager)get
SystemService(Context.DISPLAY_SERVICE);
displays=mDisplayManager.getDisplays();
for(inti=0;i‹displays.length;i++){
Log.e(TAG,“屏幕”+displays[i]);
if((displays[i].getFlags()&Display.FLAG_SECURE)!=0
&&(displays[i].getFlags()&Display.FLAG_SUPPORTS_PR
OTECTED_BUFFERS)!=0
&&(displays[i].getFlags()&Display.FLAG_PRESENTATION)
!=0){
Log.e(TAG,“第一个真实存在的副屏屏幕”+displays[i]);
returndisplays[i];
}
}
returnnull;
}

显示副屏

textDisplay=newTextDisplay(this,getPresentationDisplays());

textDisplay.show();

特殊说明:
如果希望主屏Activity返回桌面后,副屏View仍然显示,可
以使用如下代码完成:

getWindow()/*副屏的
Window*/.setType(WindowManager.LayoutParams.TYPE_SY
STEM_OVERLAY);

注意:普通应用添加此类型Window时,需要使用如下代码申请权限

if(!Settings.canDrawOverlays(this)){
Toast.makeText(this,"请同意显示窗口权限",To
ast.LENGTH_SHORT).show();
startActivity(newIntent(Settings.ACTION_MAN
AGE_OVERLAY_PERMISSION));
}

商米外置打印机开发说明

说明

商米支持的打印机主要分为两种形态,一种是商米一体机中内置的打印机,一种是外置独立的打印机。本文档主要针对外置打印机SDK进行说明。开发打印机程序之前,您需要对票据打印机的工作原理和ESC/POS指令集有一定的理解,才能理解票据排版所需的基本知识。

1、外置USB打印机

2、外置蓝牙打印机

3、局域网IP打印机

4、打印机SDK接口API说明

获取商户信息(非金融设备)

获取商户信息

Request

数据项数据类型(默认String)标识是否必填(M/C)说明适用范围
交易类型StringtransTypeM99-获取商户信息         非金融设备
应用IdStringappIdM应用包名,android APP程序packagename 

Response

数据项数据类型(默认String)标识是否必填(M/C)说明
交易结果返回码StringresultCodeMT00:成功非T00:失败, 见返回码定义(附录B)
交易类型StringtransTypeM99-获取商户信息
返回码描述StringresultMsgC 
商户号StringmerchantIdC
终端号StringterminalIdC
机型StringmodelC
支付能力ListpaymentTypeC商家支持的支付方式:
* face:支付宝人脸
* scan:B扫C
* qrcode:C扫B
商户名称StringmerchantNameC
门店名称StringstoreNameC

对接FAQ

判断能否使用商米支付

  • 检查包名:com.sunmi.payment 是否存在且可用
pm = context.getApplicationContext().getPackageManager();
applicationInfo = pm.getApplicationInfo("com.sunmi.payment",       MATCH_UNINSTALLED_PACKAGES);
return applicationInfo!=null&& applicationInfo.enabled;

收不到交易结果广播怎么办?

  • 原因:收不到交易结果广播主要原因是SaaS程序发送交易请求到收银台后程序奔溃或被人为关闭
  • 如何解决:
    • 应用再次启动,对于没有结果的订单,应该要有查询机制
    • 对接商米云端回调接口,交易结果最好以云端交易通知为最终结果

个别返回码、异常处理方案是什么?

  • 返回码为D01、D07、F01、F02、Q02、Q04、Q07、Q11、Q14、S01、S02、S03的交易需要设计一个状态不明的订单状态,可以在交易结果页放置一个查询按钮,点击后发起查询
  • D05表示交易已经成功,当作成功处理就可以了,这个返回码不用当异常处理
  • Q09表示重复请求,业务方自定义处理方式,不处理或者设计一个防止连续点击的机制都可以
  • 其他错误码:根据不同的错误码提示收银员和消费者对应的文案即可(见Excel)

目前没有支付撤销接口?

  • 退款接口即支付撤销也支持退货,调用方不需要区分直接调用即可。

用户发起10元的支付,收银台返回【网络超时】,但实际用户支付成功,如果用户支付成功,商米是否主动发起退款?建议业务方如何处理?

  • 商米不会主动发起退款,业务方可以调用云端的关单接口(正在开发中)关闭订单退回款项,也可以调用查询接口查明订单状态后做对应处理。
  • 支付时,通过广播拿到的支付结果到底有多精准?若是有广播拿到的结果是失败或者超时,但是客户那边已经扣款了,怎么处理此种情况?
  • 正常情况结果广播的到达率和准确率都是100%,除非在接到结果之前设备断电了,业务方可以调用云端的关单接口(正在开发中)关闭订单退回款项,也可以调用查询接口查明订单状态后做对应处理。

看到文档中对于消费、退款超时或者特殊情况出现的长短款有单笔查询的接口,但是,没有找到此接口。

有没有提供异步的通知结果呢?

目前的支付超时是120秒,正常来讲,哪怕用户没事,等120秒也会有些焦躁,那么怎么可以取消当前进行的支付,重新发起支付呢?

  • 商米会提供关单接口(正在开发中)
  • 可以不使用默认的轮训模式不用等待120秒,参考 交易是否轮询

接口返回错误码Q09请求正在处理中,这种情况,再发起支付是不是无法发起交易了?

  • 需要等到前一笔交易返回,收银台只允许同时进行一笔交易

Q09请求正在处理中,这种情况为什么没有流水号

  • 这个只是告知调用方有正在进行的交易,这次请求不算一笔交易

交易失败为什么有的有交易号,有的没有交易号呢?

  • 如果是终端判断失败,请求没有发送到云端,就不会有交易号。

交易金额/实付金额/优惠金额 具体业务定义

  • 交易金额指的是商户当笔交易的收款金额,在调用支付接口时传入
  • 实付金额是指支付通道方在活动期间补贴消费者一定优惠金额后,消费者的实际付款金额,在交易完成由后返回
  • 优惠金额即支付通道在活动期间的补贴金额,在交易完成由后返回

版本变更

序号版本号变更内容时间变更人员
1V1.0初稿2018-06-26李龙涛
2V1.0.1初版2018-08-21李龙涛
3V1.0.2初版2018-09-01李龙涛
4V1.0.3修改结算与查询接口增加批量查询接口2018-09-20李龙涛
5V1.0.4错误码整理2018-10-15李龙涛
6V1.0.6增加错误码消费和退款接口增加是否展示交易结果页的参数删除一些不必要的描述修改系统结构图增加快速接入的导航2018-11-20李龙涛
7V1.0.71. 提供jar包的调用方式与相关说明2. 消费与退款接口增加config参数,配置参数统一放到config参数下3.增加processDisplay 字段 控制,交易流程的UI显示4. 修改showResult 名称为resultDisplay,但兼容老字段showResult2018-12-03李龙涛
8V1.0.8优化文档描述2018-12-20李龙涛
9V1.0.9优化文档描述2018-12-30李龙涛
9V1.0.10优化文档描述2019-01-02李龙涛
10V1.0.12消费、退款、预授权、预授权完成、查询接口增加businessId参数(系统业务订单号参数)2019-04-15李龙涛
11V1.0.141.增加 取消交易 接口2.常见问题增加对接常见问题解答3.jar包升级增加调用回调(兼容老接口)4.增加重连机制的描述和代码样例2019-07-17李龙涛
12V1.0.15增加主屏同步显示刷脸界面功能的描述2019-09-03李少文
13V1.0.18增加回调的调用方式,更新jar和javaDoc,增加二合一的调用方式说明;删除config参数下processDisplay和resultDisplay字段,功能任然保留兼容以前的;删除payCode参数功能任然保留兼容以前的2020-02-21刘成

电子标签(UHF-RFID)

面向大量的仓储盘存,出入库统计处理等场景,商米针对相应的场景,提供了L2k-UHF外接RFID的底座。

开发资源

在项目模块下添加依赖:

dependencies {
// UHF
implementation ‘com.sunmi:rfidlibrary:1.1.2’
}

(旧)集成参考Demo:

(新)集成参考Demo:

接口文档及集成说明

电子发票介绍

一、商米电子发票产品介绍

商米电子发票为SaaS软件提供一站式的商户电子发票解决方案,发票电子化、抛开繁琐的纸票管理,顾客自助扫码,无须人工介入。

支持航信与百旺税控设备,提供托管、税控盒子、PC电脑3种安装方案,满足商户多样化需求。SaaS软件可通过调用商米电子发票app,完成开票服务。仅需一次对接开发,即可便捷实用电子发票服务。

商米电子发票对接文档 APP对接版(仅支持商米设备:支持T系列、D系列、S系列、V系列、P系列、L系列、M系列;当前仅支持中国大陆地区开电子发票服务)

电子发票接入对接人:王长海 13585856752

电子发票产品介绍

一、商米电子发票产品介绍

商米电子发票为SaaS软件提供一站式的商户电子发票解决方案,发票电子化、抛开繁琐的纸票管理,顾客自助扫码,无须人工介入。

支持航信与百旺税控设备,提供托管、税控盒子、PC电脑3种安装方案,满足商户多样化需求。SaaS软件可通过调用商米电子发票app,完成开票服务。仅需一次对接开发,即可便捷实用电子发票服务。

商米电子发票对接文档 APP对接版(仅支持商米设备:支持T系列、D系列、S系列、V系列、P系列、L系列、M系列;当前仅支持中国大陆地区开电子发票服务)

电子发票接入对接人:王长海 13585856752

产品介绍

商米收银管家产品介绍

商米收银管家为SaaS软件提供一站式的支付解决方案。可受理微信、支付宝、支付宝人脸、银联钱包等扫码或刷脸支付方式。商米收银管家已对接多条支付通道。商米收银管家已适配商米全部机型。SaaS软件可通过调用商米收银管家,完成支付。仅需一次对接开发,即可便捷使用多条支付通道。

以下为相关开发文档和SDK,请根据实际调试设备下载使用

1)商米支付终端对接文档(非金融机型:支持T系列、D系列、S系列、X系列、K系列、H系列、V系列、M系列、L系列的机型;金融机型: 支持P1-4G、P2lite和P2机型 )

2)商米收银管家云对云接口(目前支持查询、退款、微信小程序公众号支付和支付回调操作)

商米收银管家-业务对接FAQ

商米收银管家-技术对接FAQ