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.aar | AIDL接口编译后的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.rar | SDKTestDemo源码,提供各SDK接口的使用示例 | |
SunmiSDKTestDemo_x.x.x_debug.apk | SDK源码编译后生成的apk |
2. 环境信息
系统环境 | 平台 | 编译环境 |
Android 6.0及以上 | arm64, arm32 | Android 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);
}
});
}