SunmiPayHardwareService开发者文档

1. 概述

SunmiPaySDK是基于金融SP(secure processor)封装的金融SDK。SDK通过Android AIDL的方式对客户端提供接口,主要包含:基础信息模块、卡操作模块、EMV模块、密码键盘模块、安全模块、ETC模块、税控模块等。客户端集成SKD后可快速调用商米金融服务的接口,实现各种金融功能。

1.1 功能介绍

商米SunmiPaySDK各个模块功能如下:
(1)基础信息模块:提供获取/设置系统参数、蜂鸣器、LED灯等设备相关的接口
(2)卡模块:提供检卡、卡片APDU交互、卡片下电等接口,同时也提供Mifare、AT24C系列、SLE系列等卡的交互接口
(3)EMV模块:提供保存/删除 AID和Capk、启动EMV流程、获取/设置TLV等交易相关的接口
(4)密码键盘模块:提供输PIN相关的接口
(5)安全模块:提供保存密钥、加解密、计算Mac等密钥相关的接口,支持MKSK、Dukpt、SM2/RSA等密钥类型
(6)ETC模块:提供搜索OBU、ETC扣费等接口
(7)税控模块:提供税控数据交互的接口

1.2 SDK文件说明

名称功能备注
PayLib-release-x.x.x.aarAIDL接口编译后的aar包客户端App集成此包后可调用SDK的各个接口
PayLib-release-x.x.x-sources.jar提供PayLib-release-x.x.x.aar中类的源码客户端可以不集成
SUNMI PAY SDK V2 开发文档_x.x.x.docx中文版SDK接口文档,提供各个接口的功能说明 
SUNMI PAY SDK V2 Development Document_x.x.x.docx英文版SDK接口文档,提供各个接口的功能说明 
SunmiPaySdkTestDemo.rarSDKTestDemo源码,提供各SDK接口的使用示例 
SunmiSDKTestDemo_x.x.x_debug.apkSDK源码编译后生成的apk 

2. 环境信息

系统环境平台编译环境
Android 6.0及以上arm64, arm32Android studio

3. SDK整包获取链接

说明:在sdk整包中包含aar包、接口文档、演示demo和demo源码

3.1 导入SDK包

在Android Studio项目中将PayLib-release-x.x.x.aar放在libs目录中。

3.2 配置build.gradle文件

在build.gradle中文件中添加以下代码:


repositories {
        flatDir {
            dirs 'libs'
        }
}
dependencies {
    ......
compile(name: 'PayLib-release-x.x.x', ext: 'aar')
}

3.3 初始化SDK

参考以下方法绑定金融服务:

 /** bind PaySDK service */
    public void bindPaySDKService() {
        final SunmiPayKernel payKernel = SunmiPayKernel.getInstance();
        payKernel.initPaySDK(this, new SunmiPayKernel.ConnectCallback() {
            @Override
            public void onConnectPaySDK() {
                LogUtil.e(Constant.TAG, "onConnectPaySDK...");
                emvOptV2 = payKernel.mEMVOptV2;
                basicOptV2 = payKernel.mBasicOptV2;
                pinPadOptV2 = payKernel.mPinPadOptV2;
                readCardOptV2 = payKernel.mReadCardOptV2;
                securityOptV2 = payKernel.mSecurityOptV2;
                taxOptV2 = payKernel.mTaxOptV2;
                etcOptV2 = payKernel.mETCOptV2;
                printerOptV2 = payKernel.mPrinterOptV2;
                connectPaySDK = true;
            }

            @Override
            public void onDisconnectPaySDK() {
                LogUtil.e(Constant.TAG, "onDisconnectPaySDK...");
                connectPaySDK = false;
                emvOptV2 = null;
                basicOptV2 = null;
                pinPadOptV2 = null;
                readCardOptV2 = null;
                securityOptV2 = null;
                taxOptV2 = null;
                etcOptV2 = null;
                printerOptV2 = null;
                Utility.showToast(R.string.connect_fail);
            }
        });
    }