CYNOVO Kivvi Device SDK User Manual V2.1.9

CYNOVO%20KivviDeviceSDK%20user%20manual%20v2.1.9

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 31

DownloadCYNOVO Kivvi Device SDK User Manual V2.1.9
Open PDF In BrowserView PDF
CYNOVO Kivvi Payment Device
The third party applications interface
specification

V 2.1.9

CYNOVO, Inc.
2017/06/19

Version Infomation
Version

Date

Modify

Instructions

2.0.0

2016.06.22

吴娟(Joyce)

The first draft

2.0.1

2016.07.07

陈俊俊(George)

Improve the
instruction

interface

definition

and

2.0.2

2016.07.11

郁丽(Lucy)

Improve the
instruction

interface

definition

and

2.0.3

2016.07.28

陈俊俊(George)

"Search card", "trade request" and "EMV
trade" instructions to increase track data
encryption.

2.0.4

2016.10.28

陈俊俊(George)

Improving the key management system

2.0.5

2016.11.11

陈俊俊(George)

Increase the isbusy instructions and led
control;
Password input increase password-less
directly confirm the configuration parameters
noPinFormat;
Perfect apdu command function, support IC
card

2.0.6

2016.12.17

杨东林(Neil)

Increase pinFormat parameters in pinprocess
instructions "PLAIN_TEXT" plaintext password
valid values
Increase the qrcode optional parameters in
the instruction of payType, used for displaying
payment type LOGO in the middle of the qr
code

2.0.7

2017.01.03

陈俊俊(George)

Increase the
instructions

2.1.0

2017.03.09

朱广伟(Scott)

Bank card, EMV Instruction parameter part
redefined, increase support to the function of
electronic cash, including electronic cash
balance inquiries and transaction records
query function.

2.1.1

2017.03.13

朱勇敏(Eddard)

Add a serial port instructions

2.1.2

2017.03.23

杨东林(Neil)

Add the flow chart of how to load and use
MSSK and DUKPT

2.1.3

2017.03.24

朱广伟(Scott)

Transact command,add”transFlow”

2.1.4

2017.03.27

杨东林(Neil)

Add Key distribution management

2.1.5

2017.04.01

朱广伟(Scott)

Add load terminal param in load EMV
parameters part

2.1.6

2017.04.05

金晖(Martin)

Add digital signature capabilities fuction on

DUKPT

KSN

operating

small screen. The LOGO and carousel pictures
supports 256-color bitmap format. Add EMV
parameter configruation fuction.
2.1.7

2017.04.06

朱广伟(Scott)

Add “appId” for Load EMV Parameter

2.1.8

2017.04.17

朱勇敏(Eddard)

Add Printer busy command

2.1.9

2017.06.19

金晖(Martin)

Update instruction parameter configuration
instructions.
Add AppID assignment description.

1. Overview
These Interfaces are for CYNOVO smart terminal(Par6 and Par10)
,in Instruction
to develop upper layer application.

2. Class and Interface
2.1.

Result listener Interface class : KivviDeviceRespListener

public interface KivviDeviceRespListener {
void onResponse(KivviDeviceResp kivviDeviceResp);
}
Result class:KivviDeviceResp
Only have one member now:int ErrCode(*)
*About error message,please refer to 4th quarter : Error Message Definition.
2.2.

Device Class : KivviDevice
Prototype
definition

int Set(String key, Object value)

Function

Param Setting
key

Param name *

value

Param value。Only have 3 types are supported inclued String、int and byte[]

Param
Return

Error message

* About Param name,please refer to 2nd Param definition &Examples
Prototype
definition

int Action(String cmd [, final KivviDeviceRespListener listener])

Function

Do device action
cmd

Device Command

listener

asynchronous command result listener

Param
Return

Error message

Prototype
definition

Object Get(String key [, int exParam])

Function

Read result
key

Result data name

exParam

Extra Param(option)

Param

Return

Result data ObjectObject,if inexsistence Return null

Prototype
definition

String GetString(String key [, int exParam])

Function

Read String type result。
(Extension in Getmethod)
key

Result data name

exParam

Result data extra Param(optional)

Param
Return

Result data StringObject,if inexsitence Returnnull

Prototype
definition

byte[] GetByteArray(String key [, int exParam])

Function

Read byte[] type result。
(Extension in Getmethod)
key

Result data name

exParam

Result data extra Param(optional)

Param
Return

Result data byte[]Object,if inexsitence Return null

Prototype
definition

intGetInt(String key [, int exParam])

Function

Read int type result(Extension in Getmethod)
key

Result data name

exParam

Result data extra Param(optional)

Param
Return

Result data int Object,if inexsitence throw exception

Prototype
definition

boolean GetBool(String key [, int exParam])

Function

Read boolean type result(Extension in GetIntmethod)
key

Result data name

exParam

Result data extra Param(optional)

Param
Return

Result data boolean Object,if inexsitence throw exception

Prototype
definition

boolean Has(String key [, int exParam])

Function

Judge If there is key

Param

key

Result data name

exParam
Return

Result data extra Param(optional)

Visibal Returntrue,if inexsitence Returnfalse

3. Operational definition
3.1 Type of instruction
Instruction
Type
Card
operation

Instruction
definition
“card.”

Authority require

Function Introduction

KIVVI_CARD

Bank card and trade operation

PINPAD
operation

“pinpad.”

KIVVI_PINPAD

Pinpad operation like input key,data
encryption and decryption,MAC calculation
and so on

File Storage

“storage.”

KIVVI_STORAGE

File storage operation 、storage EMV Param、
clean EMV Param......

Screen
Display

“exscreen.”

KIVVI_EXSCREEN

Show QR code、show customer information

Basic
operation

“basic.”

At least include one of
above anthority

Get time ,set time , get version and so on

Printer
operation

“printer.”

KIVVI_PRINTER

Printer detection operation 、print operation

*Ps: When you using the instruction, you mast config the apply permissions in the
AndroidManifest.xml file, the code like :
“”
Example: config the screen display permissions.

3.2 Instruction List
Type

basicopera
tion

Instruction
name

Instruction

Suggestion
way

Function Introduction

Read version

"basic.cmd.version"

sequential
execution

Read all version

Time
operation

"basic.cmd.time"

sequential
execution

Read or set time

System
operation

"basic.cmd.system"

sequential
execution

System operation ,like reboot

Read BUSY
state

"basic.cmd.isbusy"

sequential
execution

If firmware is busy

LED contol

"basic.cmd.led"

sequential
execution

Control Led light

Search card

“card.cmd.search”

Bank Card
EMV trade

“card.cmd.emv_process”

asynchronous
execution
asynchronous
execution

remind and wait customer
search card
EMV trade request

asynchronous
execution

Bank card trade,remind and
wait customer search card or
input key

“card.cmd.issuer_process”

sequential
execution

EMV issuing bank data manage

Detect IC slot

“card.cmd.detect_ic_slot”

sequential
execution

Detect if IC slot has card

Mifare card
operation

"card.cmd.mifare"

sequential
execution

Mifare card authority and read
or write

APDUoperati
on

"card.cmd.apdu"

sequential
execution

APDU interact operation

Trade request

“card.cmd.transact”

Issuing bank
data manage

e-cash
off-line
balance
enquiry

PINPAD

File
Storage

e-cash off-line balance enquiry
"emv.cmd.balance"

sequential
execution

(please do
“card.cmd.search”Instruction
first)

"emv.cmd.log"

sequential
execution

IC card trace record(please do
“card.cmd.search”Instruction
first)

EMV
parameter
configuration

"emv.cmd.paramset"

sequential
execution

Config Country Code&Currency
Code

Load key

“pinpad.cmd.loadkey”

sequential
execution

Load KPK、master key、work key

Input key

“pinpad.cmd.pinprocess”

encryption
and
decryption

“pinpad.cmd.crypto”

sequential
execution

Test encryption and decryption
Function

Calculate
MAC

”pinpad.cmd.mac”

sequential
execution

Calculate MAC

Create
random

"pinpad.cmd.random"

sequential
execution

Create random

sensitive
information
confirm

"pinpad.cmd.confirm"

asynchronous
execution

Read /update
KSN

"pinpad.cmd.ksn"

sequential
execution

Read /update KSN

Digital
signature

"pinpad.mpr.handwrite"

sequential
execution

Sign your Name

Save file

“storage.mpw.write_file”

sequential
execution

Save file

Read file

“storage.mpr.read_file”

sequential
execution

Read file

IC card trace
record

asynchronous
execution

remind and wait customer
search card

sensitive information confirm
like balance

Screen
display

Print
operation

Delete file

“storage.cmd.delete_file”

sequential
execution

Delete file

Load
EMVParam

“storage.cmd.load_emvpara
ms”

sequential
execution

Load EMVParam

Save picture

“storage.mpw.load_bitmap”

sequential
execution

Save bitmap or logo

Stand by

“exscreen.cmd.idle”

sequential
execution

Exscreen stand by Logo

Show QR
code

“exscreen.cmd.qrcode”

sequential
execution

Exscreen show QR code

slide show

“exscreen.cmd.bitmap”

sequential
execution

Exscreen slide show

show
customer
message

“exscreen.cmd.custom_msg
”

sequential
execution

Exscreen show customer
message

Paper out test

“printer.cmd.paperout”

sequential
execution

Paper out test

Feed paper

“printer.cmd.feed”

sequential
execution

Feed paper

Print text

“printer.cmd.text”

sequential
execution

print text

print picture

“printer.cmd.photo”

sequential
execution

print picture

print QR code

“printer.cmd.qrcode”

sequential
execution

print QR code

print bar
code

“printer.cmd.obcode”

sequential
execution

print bar code

3.3 Instruction and Param details Introduction
Param name : the Param name that this Instruction can set or get
Type:
STR String; INT int; BIN byte[]
Length:the length of value,VAR is elongate
Default value:if not Set the Param value,use the default value
request:input form Param,before Action,can be setted
response:output Param,after Action,can be getted
3.3.1 Basic Operation
3.3.1.1 Read Version number
Instruction:"basic.cmd.version"
Parameter list:
Parameter

Type

Length
Request

NULL

Effective/Default
Value

Description

Response
“ret”

INT

4

“result”

STR

VAR

Error Description

"hwVer"

STR

VAR

"fwVer"

STR

VAR

Hardware Version
Number Version
Software

"serialNo"

STR

VAR

“KivviDeviceSN”

STR

VAR

“KivviDeviceHardwareVersion”

STR

VAR

“SdkVerison”

STR

VAR

"KivviDeviceVerison"

STR

VAR

"KivviDevicePlatform"

STR

VAR

Reference code:action/basic/ActionGetVersion.java

Error Code

Number
Financial Module
SN
Master Device SN
Master Device
Version
SDK Version
KivviDevice
Version
KivviDevice
Platform

3.3.1.2 Time Operation
Instruction:"basic.cmd.time"
Parameter list:
Parameter

Type

Length

Effective/Default Value

Description

Request
"operate"

STR

VAR

"datetime"

STR

19

"GET"(default)
"SET"

Read Time

“yyyy/mm/dd/hh/mm/ss”

Only ”SET” used

Set Time

Response
“ret”

INT

4

“result”

STR

VAR

"datetime"

STR

19

Error Code
Error Description
“yyyy/mm/dd/hh/mm/ss”

Reference code:action/basic/ActionGetTime.java 和 ActionSetTime.java
3.3.1.3 System Operation
Instruction:"basic.cmd.system"
Parameter list:
Parameter

Type

Length

Effective/Default Value

Description

Request
" operate"

STR

VAR

"reboot"

Reboot Financial Module

Response
“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference code:action/basic/ActionRebootPos.java
3.3.1.4 Read BUSY State
Instruction:"basic.cmd.isbusy"
Parameter list:
Parameter

Type

Length

Effective/Default
Value

Description

Request
NULL
Response
“ret”

INT

4

Error Code

“result”

STR

VAR

"isbusy"

INT

4

Error Description
0 for “Free”;1 for “Busy”

3.3.1.5 LED Control
Instruction:"basic.cmd.led"
Parameter list:
Parameter

Type

Length

Effective/Default Value

Description

Request
"led"

STR

VAR

" operate"

STR

VAR

"RED"、"GREEN"、"YELLOW"、
"BLUE" 、 "DRED"
and
"DGREEN"
Ps: devided by “|”
"ON""OFF"
on / off
Response

“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

3.3.2 Bank Card
3.3.2.1 Search Card
Command:"card.cmd.search"
Parameter:
Lengt
Parameter
Type
h
"cardType"

"trackMode"

STR

STR

VAR

VAR

Effective/Default Value

Description

Request
"MSR" or "IC" or "NFC" ,
separate by '|', Default:
"MSR|IC|NFC"

Card Type

"plain"(Default)

Plain of Track Data

"entype0"

Cipher of Track Data,
REF 6.2

"Unionpay"

Cipher
of
Track
Data(Unionpay ECB)

"MKSK"(Default)
"DUKPT"
"FIXED"
"JF"

Key Management Type

"keyMng"

STR

VAR

"appId"

INT

4

0x01~0x0F Default(0x01)

When track data need
encrypt

"timeout"

INT

4

10~120

Unit: Second

Default(60)

Response

"ret"

INT

4

"result"

STR

VAR

"cardType"

STR

VAR

"isICCard"

INT

4

0: Not IC Card; 1:IC Card

"cardType" must be "IC"

"nfcType"

STR

VAR

"typeA"、"typeB"、"M1"

"cardType" must be
"NFC"

"track1"

STR

Error Code
Error Description
"MSR"
"NFC"

or

"IC"

or

VAR

Track 1 Data;
"cardType" must be
"MSR"

"track2"

STR

VAR

Track 2 Data;
"cardType" must be
"MSR"

"track3"

STR

VAR

Track3 Data; "cardType"
must be "MSR"

VAR

Primary Account
Number; "cardType"
must be "MSR"

VAR

Expiration Date;
"cardType" must be
"MSR"

"pan"

"expDate"

"withIC"

STR

STR

INT

4

0: Card without IC; 1: Card
with IC

Card with IC ?;
"cardType" must be
"MSR"

Reference Code:action/card/ActionSearch.java
3.3.2.2 EMV Process
Command:"card.cmd.emv_process"
Parameter:
Parameter

Type

Length

Effective/Default Value

Description

Request
"amount"

"amountOther"

“transType”

STR

STR

INT

VAR

Amount
Auth(Optional)

VAR

Amount
Other(Optional
)

4

1.Consumption
2.Revocation
3.Return
4.Online Balance Query
5.Pre-authorization
6.Pre-Authorization revocation
7.Pre-Authorization Completion request

Transaction
type Code

8.Pre-Authorization Completion notice
9.Pre-Authorization Complete
revocation
11.E-Cash Balance Enquiry
12.E-Cash Deposit
13.E-Cash consumption
14.E-Cash non-specified account circle
15.E-Cash designated account deposit
"transFlow"

"keyMng"

"pinFormat"

"trackMode"

INT

STR

STR

STR

1:Complete Flow
2:Simple Flow(Just Get ICC Data From
Card)

Transaction
Flow

VAR

"MKSK"(Default)
"DUKPT"
"FIXED"
"JF"(Customer Definition)

Key
Management
Type

VAR

"FORMAT0"(Default)
"FORMAT1"
"FORMAT3"

PINBLOCK
Format

"plain"(Default)

Plain of Track
Data

"entype0"

Cipher of Track
Data,REF 6.2

"Unionpay"

Cipher of Track
Data(Unionpay
ECB)

4

VAR

"appId"

INT

4

0x01~0x0F Default(0x01)

"timeout"

INT

4

10~120

"pinMinLen"

INT

4

4~12 Default( 4)

PIN Minmum
Length

"pinMaxLen"

INT

4

4~12 Default( 12)

PIN Maxmum
Length

4

0: Not Force Online(Default)
1: Force Online

Force Online
Flag(REF:
If
transaction is
not Electronic
Cash,
this
param
must
set to 1)
Electronic Cash
Transaction
Flag
CVM
Flag

"isForceOnline"

INT

Default(60)

"isSupportEC"

INT

4

0: Not Electronic Cash(Default)
1: Electronic Cash Transaction

"isSupportCVM
"

INT

4

0: CVM NOT Executed
1: CVM Executed(Default)

Unit: Second

Execute

1: Input PIN Controlled by EMV
Kernel(Default)
"isUsePinpad"

"reqTagList"

INT

STR

4

0: Input PIN Controlled by Application,
The
Deveopler
must
call
"pinpad.cmd.pinprocess" command

Input
PIN
Controlled by
EMV Kernel or
User
Application
EMV Tag List,
Separate
by
'|'(Optional)

VAR
Response

"ret"

INT

4

Error Code

"result"

STR

VAR

Error
Description

"pan"

STR

VAR

Primary
Account
Number

"track2"

STR

VAR

Track 2 Data

"seqNo"

STR

2

Sequence
Number of IC
Card

"expDate"

STR

VAR

Expiration Date

"pinBlock"

BIN

8

"pinpadResult"

STR

VAR

"cvmType"

STR

VAR

"OK": Cal Pinblock Succ
"FAIL": Cal Pinblock Fail
"USER CANCEL": User Cancel
"TIMEOUT": Enter PIN Timeout
"NO PIN": User NOT Enter PIN, Just
Press "ENTER"

Pinpad Result

"ONLINE_PIN"

Online PIN

"SIGN"

Signature

"REQUEST: Indicate The Transaction Is
Online
"emvDataType"

STR

VAR

"CONFIRM: Indicate The Transaction is
Offline

EMV Data Type

"REVERSAL": Indicate The Transaction
Should Be Reversal
"emvData"

VAR

B
I
N

Reference Code:action/card/ActionEmvProc.java
3.3.2.3 Transaction
Command:"card.cmd.transact"
Parameter:

EMVData(Field
55)

Parameter

Type

Lengt
h

Effective/Default Value

Description

Request

"amount"

STR

VAR

Amount Auth(Optional)

"amountOther"

STR

VAR

Amount Other(Optional)

“transType”

“transFlow”

"cardType"

"keyMng"

"pinFormat"

"trackMode"

"appId"

INT

INT

STR

STR

STR

STR

INT

4

1.Consumption
2.Revocation
3.Return
4.Online Balance Query
5.Pre-authorization
6.Pre-Authorization revocation
7.Pre-Authorization
Completion request
8.Pre-Authorization
Completion notice
9.Pre-Authorization Complete
revocation
11.E-Cash Balance Enquiry
12.E-Cash Deposit
13.E-Cash consumption
14.E-Cash non-specified
account circle
15.E-Cash designated account
deposit

4

1:Complete process
2:Streamline processes
(Chip card only read card
number and other parameters)

VAR

"MSR" or "IC" or "NFC" ,
separate by '|' , Default:
"MSR|IC|NFC"

VAR

"MKSK"(DDefault)
"DUKPT"
"FIXED"
"JF"

Key Management Type

VAR

"FORMAT0"(Default)
"FORMAT1",
"FORMAT3"
“PLAIN_TEXT”

PINBLOCK Format

"plain"(Default)

Plain of Track Data

"entype0"

Cipher of Track Data,
REF 6.2

"Unionpay"

Cipher
of
Track
Data(Unionpay ECB)

VAR

4

0x01~0x0F Default(0x01)

"timeout"

INT

4

10~120

Default(60)

Unit: Second

"msrPinProc"

INT

4

0:NotEnter PIN
1:Enter PIN

Whether Enter PIN after
Swipe Card

"pinMinLen"

INT

4

4~12 Default is 4

PIN Minmum Length

"pinMaxLen"

INT

4

4~12 Default is 12

PIN Maxmum Length

"allowFallback"

INT

4

0:not allowed
1:allowed

Allow Fallback Flag

"isForceOnline"

INT

4

0: Not Force Online(Default)
1: Force Online

Force Online Flag(REF: If
transaction
is
not
Electronic Cash, this
param must set to 1)

"isSupportEC"

INT

4

0: Not Electronic Cash(Default)
1: Electronic Cash Transaction

Electronic
Transaction Flag

"isSupportCVM"

INT

4

0: CVM NOT Executed
1: CVM Executed(Default)

CVM Execute Flag

Cash

1: Input PIN Controlled by EMV
Kernel(Default)
"isUsePinpad"

INT

4

"reqTagList"

STR

VAR

0: Input PIN Controlled by
Application, The Deveopler
must
call
"pinpad.cmd.pinprocess"
command

Input PIN Controlled by
EMV Kernel or User
Application

EMV Tag List, Separate
by '|'(Optional)
Response

"ret"

INT

4

"result"

STR

VAR

"cardType"

STR

VAR

"pan"

STR

VAR

Primary
Number

"track1"

STR

VAR

Track 1 Data

"track2"

STR

VAR

Track 2 Data

"track3"

STR

VAR

Track 3 Data

"seqNo"

STR

2

"expDate"

STR

VAR

"pinBlock"

BIN

8

"pinpadResult"

STR

VAR

Error Code
Error Description
"MSR" or "IC" or "NFC"

Card Type
Account

Sequence Number of IC
Card
Expiration Date
PIN BLOCK
"OK": Cal Pinblock Succ
"FAIL": Cal Pinblock Fail
"USER CANCEL": User Cancel
"TIMEOUT": Enter PIN Timeout
"NO PIN": User NOT Enter PIN,
Just Press "ENTER"

Pinpad Result

"cvmType"

"emvDataType"

STR

STR

VAR

VAR

"ONLINE_PIN"

Online PIN

"SIGN"

Signature

"REQUEST:
Indicate
Transaction Is Online

The

"CONFIRM:
Indicate
Transaction is Offline

The

EMV Data Type

"REVERSAL": Indicate The
Transaction Should Be Reversal
"emvData"

BIN

VAR

EMVData(Field 55)

Reference Code:action/card/ActionTransact.java
3.3.2.4 Issuer Data Process
Command:"card.cmd.issuer_process"
Parameter:
Lengt
Parameter
Type
Effective/Default Value
h
Request

"respCode"

STR

Description

2

Response Code From
Acquire, When SUCC,
usually is "00", When
FAIL, other code

"issuerData"

BIN

VAR

Data
From
Issuer,
Sometimes Include Script
of 71, 72

"reqTagList"

STR

VAR

EMV Tag List, Separate by
'|'(Optional)
Response

"ret"

INT

4

"result"

STR

VAR

Error Code
Error Description
"REQUEST": Indicate The
Transaction Is Online

"emvDataType"

STR

VAR

"CONFIRM": Indicate The
Transaction is Offline

EMVData Type

"REVERSAL": Indicate The
Transaction Should Be
Reversal
"emvData"

BIN

VAR

EMV Data(Field 55)

Reference Code:action/card/ActionEmvIssuerProc.java
3.3.2.5 IC Card Detect
Command:"card.cmd.detect_ic_slot"
Parameter:
Lengt
Parameter
Type
Effective/Default Value
h
Request

Description

"isICCard"

INT

0: Test it When not Power
On
1: Test it When Power On

4

IC Card Test

Response
"ret"

INT

4

Error Code

"result"

STR

VAR

"cardInSlot"

INT

4

0: Card NOT In Slot
1: Card In Slot

Whether Card Is In Slot

"isICCard"

INT

4

0: Card Is Not IC
1: Card Is IC

Whether Card is IC Card

Error Description

Reference Code:action/card/ActionIcslot.java
3.3.2.6 Mifare Card
Command:"card.cmd.mifare"
Parameter:
Lengt
Parameter
Type
h

"operate"

STR

VAR

"block"

INT

4

"authKeyType"

STR

4

"authKey"

BIN

Effective/Default Value

Description

Request
"AUTH"

Authorization

"INCREASE"

Increasement

"DECREASE"

Decresement

"READ"

Read Data

"WRITE"

Write Data
Block Index

“KeyA”

When
"AUTH"

"operate"

is

6

When
"AUTH"

"operate"

is
is
or
is

“KeyB”

"num"

INT

4

When
"operate"
"INCREASE"
"DECREASE"

"data"

BIN

VAR

When
"operate"
"WRITE"
Response

"ret"

INT

4

Error Code

"result"

STR

VAR

Error Description

"data"

BIN

VAR

When
"READ"

"operate"

Reference Code:action/card/ActionMifare*.java
3.3.2.7 APDU
Command:"card.cmd.apdu"
Parameter:
Lengt
Parameter
Type
h

Effective/Default Value

Description

is

Request
"cardType"

"operate"

STR

STR

VAR

"IC"
"NFC"(Default)

"OPEN"

When Card Type is "IC":
Power On Card; When
Card Type is "NFC": Field
On

"CLOSE"

When Card Type is "IC":
Power Off Card; When
Card Type is "NFC": Field
Off

"EXCHANGE"(Default)

Exchange APDU

VAR

"data"

BIN

VAR

"timeout"

INT

4

APDU of Request
10~120

Default value: 60

Unit: Second

Response
"ret"

INT

4

Error Code

"result"

STR

VAR

Error Description

"data"

BIN

VAR

APDU of Response

Reference Code:action/card/ActionNfcApdu.java
3.3.2.8 Get Offline Balance
Command:"emv.cmd.balance"
Parameter:
Parameter

Type

Lengt
h

Effective/Default Value

Description

Request
NULL
Response

"ret"
"data"

INT

4

Error Code

ASCII

12

Offline Balance of IC Card

Reference Code:action/card/ActionEmvBalance.java
3.3.2.9 Get Transaction Log
Command:"emv.cmd.log"
Parameter:
Parameter

Type

Lengt
h

Effective/Default Value

Description

Request
NULL
Response

"ret"

INT

4

"data"

BIN

VAR

Transaction Log of IC Card

"logCount"

INT

4

Transaction Log Count of
IC Card(>= 0 && <= 10)

Reference Code:action/card/ActionEmvLog.java

Error Code

3.3.2.10 Configuration parameters of EMV
Command:" emv.cmd.paramset "
Parameter

Type

Length

Effective/Default Value

Description

Request
NULL
Response
"ret"

INT

4

Error Code

Reference Code:action/emv/ActionStoreEmvParams.java
Note:This command can only set country code(9F1A) and currency code(5F2A) by customer
screen.
3.3.3 PINPAD Operation
3.3.3.1 Load keys
Instruction:”pinpad.cmd.loadkey”
Parameter
"appId"
"keyMng"

Type
INT
STR

Lengt
h

Effective/Default Value

4

0x01~0x0F default: 0x01

VAR

Description

Request
"MKSK"
"DUKPT"
"FIXED"

(default)

"KPK"

key manage type
Key protect key

"MASTER_KEY"
"keyType"

STR

VAR

"PIN_KEY"
"MAC_KEY"
"TD_KEY"

“format”

STR

VAR

"INIT_KEY"

Just for DUKPT

"plain"

Plain text

"EnByTK"

Encrypted
terminal key

"EnByKPK"

Encrypted by KPK

"EnByMK"

Encrypted
Master key

by

by

Key
data
format

"TR31"
“key”

BIN

8/16

“checkValue”

BIN

4

“ksn”

BIN

VAR

Key data
Check value (optional)
Just for DUKPT
Response

“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference Code : action/pinpad/ActionLoadKpk.java 、 ActionLoadMkey.java
ActionLoadWkey.java

和

MK/SK load key process:

With TK,KPK

Load KPK

Set( keyType , KPK );
Set( format , EnByTK );

Set( keyType , KPK );
Set( format , Plain );

With KPK,with
TK

No KPK,no TK

Set( keyType ,MASTER_KEY);
Set( format , EnByKPK );

Set( keyType ,MASTER_KEY);
Set( format , EnByKPK );

Set( keyType , MASTER_KEY );
Set( format , EnByTK );

Set( keyType , MASTER_KEY );
Set( format , Plain );

Load MasterKey

Load KPK

With KPK,no TK

*Introductions:Following processes are owned by all green boxes:
1、Set( appId , i);
2、Set( key ,F.HexStringToByteArray(KeyData));
3、Action( pinpad.cmd.loadkey )
PS:1、The i at appId is number 1 to 5
2、Action must after all Set
3、KeyData is 8 or 16 bytes key
4、check Value is 4 bytes these are 8 bytes 0 which is encrypted by
Cleartext work-key

Load workKey
Set( KeyType , PIN_KEY );
Set( keyType ,TD_KEY);
Set( keyType , MAC_KEY );
Set( format , EnByMK );
Set( checkValue ,F.HexStringToByteArray(checkValue));

DUKPT load key process:
DUKPT
Load init_key and KSN

Check current KSN

Set( appId ,i);
Set( operate , GET );
Action( pinpad.cmd.ksn );

Set( appId ,i);
Set( keyMng , DUKPT );
Set( keyType , INIT_KEY );
Set( format , plain );
Set( key ,F.HexStringToByteArray(dbgDMK));
Set( ksn ,F.HexStringToByteArray(dbgKSN));
Action( pinpad.cmd.loadkey );

Update KSN

Set( appId ,i);
Set( operate , UPDATE );
Action( pinpad.cmd.ksn );

INIT_KEY and KSN create
OutPut_Key1

Update KSN

OutPut_Key1 create
Work_Key1

OutPut_Key1
OutPut_Key1 and new
KSN create next
OutPut_Key2

Repeat oprattions of dotted box ,create every
new Work_key by init KSN and derived
OutPut_Key

OutPut_Key2 create
Work_Key2

3.3.3.2 Password input
Instruction:”pinpad.cmd.pinprocess”
Parameter

Type

Lengt
h

Effective/Default Value

Description

Request

“pan”

STR

VAR

(optional)

"amount"

STR

VAR

(optional)

"keyMng"

"pinFormat"

STR

STR

VAR

"MKSK"
"DUKPT"
"FIXED"

(default)

VAR

"FORMAT0" (default)
"FORMAT1",
"FORMAT3",
”PLAIN_TEXT”

PINBLOCK format

Return pinblock or all
zero when no password
inputted

key manage type

"noPinFormat",

STR

VAR

"ZERO" (default) 8bytes
0x00
"PINBLOCK"

"appId"

INT

4

0x01~0x0F (default 0x01)

"timeout"

INT

4

10~120

"pinMinLen"

INT

4

4~12 (default 4)

Password min length

"pinMaxLen"

INT

4

4~12 (default 12)

Password max length

(default 60)

(seconds)

Response
“ret”

INT

4

“result”

STR

VAR

“pinBlock”

BIN

8

Error Code
Error Description

Reference Code:action/pinpad/ActionGetPin.java
3.3.3.3 Encrypt and Decrypt
Instruction:”pinpad.cmd.crypto”
Lengt
Parameter
Type
h
“operate”

STR

VAR

"algorithm"

STR

VAR

"padding"
"appId"

STR
INT

VAR
4

"keyMng"

STR

VAR

"keyType"

STR

4

"data"

BIN

VAR

Effective/Default Value

Description

Request
"ENCRYPT"、"DECRYPT"
"DES_ECB"

algorithm

“NULL”

No padding

“M1”

Padding with 0x00

“M2”

Padding with 80 00[n]

0x01~0x0F (default 0x01)
"MKSK"
"DUKPT"
"FIXED"

(default)
key manage type

default "TD_KEY"
Data length < 3K bytes
Response

“ret”

INT

4

Error Code

“result”

STR

VAR

Error Description

“data”

BIN

VAR

result

Reference Code:action/pinpad/ActionTestCrypt.java
3.3.3.4 MAC calculate
Instruction:”pinpad.cmd.mac”
Parameter

Type

Lengt
h

Effective/Default Value

Description

Request
"X99"

“macType”

STR

VAR

"ECB"
"Unionpay_ECB"

“keyMng”

STR

VAR

"appId"

INT

4

“data”

BIN

VAR

"MKSK"
"DUKPT"
"FIXED"

(default)
key manage type

0x01~0x0F (default 0x01)
Data length < 3K bytes
Response

“ret”

INT

4

“result”

STR

VAR

“mac”

BIN

8/16

Error Code
Error Description

Reference Code:action/pinpad/ActionCaculateMac.java
3.3.3.5 Random generate
Instruction:”pinpad.cmd.random”
Parameter
“length”

Type
INT

Lengt
h

Effective/Default Value

Description

Request

4

need length (1~3072)
Response

“ret”

INT

4

Error Code

“result”

STR

VAR

Error Description

“data”

BIN

VAR

result

Reference Code:action/pinpad/ActionGetRandom.java
3.3.3.6 Get and update KSN (Just for DUKPT)
Instruction:”pinpad.cmd.ksn”
Lengt
Parameter
Type
h
“operate”

STR

VAR

"appId"

INT

4

Effective/Default Value

Description

Request
"GET" (default)
"UPDATE"
0x01~0x0F (default 0x01)
Response

“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

“ksn”

BIN

VAR

Current KSN value

Reference Code:action/pinpad/ActionGetKsn.java 和 action/pinpad/ActionUpdateKsn.java
3.3.3.7 Digital signature
Instruction:” pinpad.mpr.handwrite”
Parameter

Type

Length

Effective/Default Value

Description

Request
none
Response
“ret”

INT

4

“result”

STR

VAR

“fileLen”

INT

4

Error Code
Error Description
Bmp File Lenth

Reference Code:action/pinpad/ActionHandWrite.java

3.3.3.8 Message Confirm
Instruction:”pinpad.cmd.confirm”
Lengt
Parameter
Type
Effective/Default Value
h
Request

Description

“dataType”

STR

VAR

"BALANCE"

“data”

STR

VAR

Display content

“data2”

STR

VAR

When datatype is “TEXT”,
the message will display at
second line.

"timeout"

INT

4

10~120

(default 60)

(seconds)

Response
“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference Code:action/pinpad/ActionDispBalance.java
3.3.4 File storage
3.3.4.1 Save the file
Instruction:”storage.mpw.write_file”
Parameters list:
Parameter

Type

Length

Effective/Default Value

Description

Request
“fileType”

STR

VAR

“CERT”, “TEXT”, “BIN”

File type

“fileName”

STR

VAR

Within the limit of 63 bytes
in length

File name

"filePath"

STR

VAR

File path

“fileData”

BIN

VAR

File data
Response

“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

* “filePath” and ”fileData” mast have one of them.
Reference code:action/storage/ActionStoreFile.java 和 ActionStoreFile2.java
3.3.4.2 Read the file
Instruction:”storage.mpr.read_file”
Parameters list:
Parameter

type

length

Effective/Default Value

Description

Request
“fileType”

STR

VAR

“CERT”, “TEXT”, “BIN”

File type

“fileName”

STR

VAR

Within the limit of 63 bytes
in length

File name

Response
“ret”

INT

4

Error code

“result”

STR

VAR

Error Description

“fileData”

BIN

VAR

File data

Reference code:action/storage/ActionReadFile.java
3.3.4.3 Delete the file
Instruction:”storage.cmd.delete_file”
Parameters list:
Parameter

type

length

Effective/Default Value

Description

Request
“fileType”

STR

VAR

“CERT”, “TEXT”, “BIN”, “ALL”

File type

“fileName”

STR

VAR

Within the limit of 63 bytes
in length

File name

Response
“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

* when “fileType” and ”fileName” are both set to ”ALL”,it will delete all files(Initialization
file storage area)
Reference code:action/storage/ActionDeleteFile.java

3.3.4.4 Save the picturesBitmap)
Instruction:”storage.mpw.load_bitmap”
Parameters list:
Parameter

type

length

Effective/Default Value

Description

Request
“type”

STR

VAR

“NORMAL”(default)

The
regular
pictures

“LOGO”

The standby logo

carousel

Picture index,it only be
needed when the
“type” is set to
“NORMAL”.

“index”

INT

4

"filePath"

STR

VAR

File path

“fileData”

BIN

VAR

File data
Response

“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

* “filePath” and ”fileData” mast have one of them.
Reference code:action/storage/ActionStoreBitmap.java 和 ActionStoreLogo.java
3.3.4.5 Load EMV parameters
Instruction:”storage.cmd.load_emvparams”
Parameters list:
Parameter

type

length

Effective/Default Value

Description

Request
“operate”

STR

VAR

"appId"

INT

4

“type”

STR

VAR

"data"

BIN

VAR

“ADD” (default)

Load parameters

“CLEAN”

Clear parameters

0x01~0x0F Default(0x01)

app use
appId

independent

"TERM", "AID", "CAPK",
Parameter Type
"CARD", "CERT"
it only be needed when
"operate" is set to
"ADD".
Response

“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

Reference code:action/storage/ActionStoreEmvParams.java
Note: When “type” is “TERM”, User can config the terminal parameters such as country
code(9F1A), currency code(5F2A), terminal capability(9F33),
Example:”9F1A0208405F2A0208409F3303E0E8C0”
3.3.5 Screen Display
3.3.5.1 Display Stand-by Logo
Instruction:”exscreen.cmd.idle”
Parameter list:
Parameter

Type

Length

Effective/Default Value

Description

Request
NULL
Response
“ret”

INT

4

Error Code

“result”

STR

VAR

Error Description

Reference code:action/exscreen/ActionDisplayIdle.java
3.3.5.2 Display carousel Pictures
Instruction:”exscreen.cmd.bitmap”
Parameter list:
Parameter

Type

Length

Effective/Default Value

Description

Request
“interval”

INT

4

Default : 5s

Interval time (s)

“beginIdx”

INT

4

The Starting picture

“palyNum”

INT

4

Number of Pictures
Response

“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference code:action/exscreen/ActionImageCarousel.java
3.3.5.3 Display Customer data
Instruction:”exscreen.cmd.custom_msg”
Parameter list:
Parameter

Type

Length

Effective/Default Value

Description

Request
“data”

BIN

Customer data,line feed
by ’&’

VAR
Response

“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference code:action/exscreen/ActionDisplayCustomMsg.java
3.3.5.4 Display QR code
Instruction:”exscreen.cmd.qrcode”
Parameter list:
Parameter

Type

Length

Effective/Default Value

Description

Request
“data”
“payType”

BIN
STR

UTF8 format String

VAR
VAR

“ALIPAY”: AliPay Logo
“WECHATPAY”:
Wechat
Logo

Optional Field

Response
“ret”

INT

4

“result”

STR

VAR

Reference code:action/exscreen/ActionDisplayQR.java
3.3.6

Print operation

Error Code
Error Description

3.3.6.1 Out of paper checks
Instruction:”printer.cmd.paperout”
Parameters list:
Parameter

Type

Length

Effective/Default Value

Description

Request
none
Response
“ret”

INT

4

Error code

“result”

STR

VAR

Error description

Reference Code:action/printer/ActionPrintCheckpaper.java
3.3.6.2 Print text
Instruction:”printer.cmd.text”
Parameters list:
Parameter

type

Length

Effective/Default Value

Description

Request
“data”

STR

VAR

“size”

INT

4

“fonttype”

INT

4

Print content
Greater than 0,defalue is 24

Font size

android.graphics.Typeface.NORMAL(default)
android.graphics.Typeface.BOLD

Normal

android.graphics.Typeface.ITALIC

Ltalic

android.graphics.Typeface.BOLD_ITALIC

Bold<alic

Bold

“linegap”

INT

4

Greater than 0,defalue is 6

Line spacing

“leftmargin”

INT

4

Greater than or equal to 0, default is 0

The left margin
of page

“rightmargin”

INT

4

Greater than or equal to 0, default is 0

The right margin
of page

“typeface”

STR

VAR

Eg:”/mnt/sdcard/kaiti.ttf”(optional)

The custom font
file path

Response
“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

Reference Code:action/printer/ActionPrintText.java
3.3.6.3 Paper feed
Instruction:”printer.cmd.feed”
Parameters list:
parameter

type

length

Effective/Default Value

Description

Request
"lines"

INT

4

Paper feed lines
Response

“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

Reference Code:action/printer/ActionPrintText.java
3.3.6.4 Print OB code
Instruction:”printer.cmd.obcode”
Parameters list:
parameter

type

length

Effective/Default Value

Descripton

Request
“data”

STR

VAR

Print content
Response

“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

Reference Code:action/printer/ActionPrintObcode.java
3.3.6.5 Print QR codes
Instruction:”printer.cmd.qrcode”
Parameters list:
Parameter

Type

Length

Effective/Default Value

Description

Request
“data”

STR

VAR

Print content
Response

“ret”

INT

4

“result”

STR

VAR

Error code
Error Description

Reference Code:action/printer/ActionPrintQrcode.java
3.3.6.6 Print pictures
Instruction:”printer.cmd.photo”

Parameters list:
Parameter

Type

Length

Effective/Default Value

Description

Request
“data”

Bitmap

VAR

Picture data
Response

“ret”

INT

4

“result”

STR

VAR

Error code
Error description

Reference Code:action/printer/ActionPrintPhoto.java
3.3.6.7 Printer busy
Instruction: ”printer.cmd.busy”

Parameters list:
Parameter

Type

Length

Effective/Default Value

Description

Request
Response
“ret”

INT

4

Error code

“result”

STR

VAR

Error description

Reference Code:action/printer/ActionPrintBusy.java
3.3.7 Serial Operation
3.3.7.1 Open Serial
Instruction:"usbserial.cmd.serialopen"
Parameter

“serialconfig”

Typ
e

Length

STR

VAR

Effective/Default Value

Description

Request
eg:"115200,n,8,1"( Optional Field
)

Serial init param(Baud rate,check
code,data bits,stop bit)

Response
“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference code:action/serial/ActionOpen.java
3.3.7.2 Close Serial
Instruction:"usbserial.cmd.serialclose"
Parameter

Typ
e

Length

Effective/Default Value

Description

Request

NULL
Response
“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference code:action/serial/ActionClose.java
3.3.7.3 Receive Data
Instruction:"usbserial.cmd.serialrx"
Typ
e

Length

maxDataLen

INT

4

>0,<=1024

Max data Length

Timeout_ms

INT

4

>0,<=10000
Response

Reading data Timeout (ms)

“ret”

INT

4

“result”

STR

VAR

Error Description

"data"

BIN

VAR

Receive data

Parameter

Effective/Default Value

Description

Request

Error Code

Reference code:action/serial/ActionRx.java
3.3.7.4 Send Data
Instruction:"usbserial.cmd.serialtx"
Typ
e

Length

data

BIN

VAR

dataLen

INT

4

Parameter

Effective/Default Value

Description

Request
Sending data
>0,<=>1024

Length of sending data

Response
“ret”

INT

4

“result”

STR

VAR

Error Code
Error Description

Reference code:action/serial/ActionTx.java

4. Error message define
Define

Value(HEX)

Value

Introduction

(DEC)

KV.RET.OK

0x00

0

success

KV.RET.DATA_ERROR

0x10

16

Communicate data error

KV.RET.CMD_ERROR

0x11

17

Instruction error

KV.RET.PARAM_ERR

0x12

18

Param error

KV.RET.FAILED

0x20

32

Instruction done failed

KV.RET.BUSY

0x21

33

Doing another Instruction

KV.RET.PROCESSING

0x22

34

Instruction is doing

KV.RET.TIMEOUT

0x23

35

Instruction doing wait timeout

KV.RET.CANCELED

0x24

36

Customer stop operation

KV.RET.EMV_FAILED

0x30

48

EMV error

KV.RET.COMMUNICATE_ERROR

0x40

64

Communicate failed

KV.RET.DEVICE_ERROR

0x50

80

Device abnormal

KV.RET.OPEN_FAILED

0x51

81

Device open failed

5. Keys distribution and management rules
This is used to illustrate the Kivvi payment terminals (Par6, Par10), each application (App)
key distribution and use of the rules.
5.1 Keys amount
Kivvi payment terminals (Par6, Par10)include 15 keys independent of each other
5.2 Keys allocation rules
5.2.1 Keys mutual independence
Keys are divided by each App, each App uses it self’s keys.
5.2.2 keys number of each App
Each app include 0-5 keys. If it has one key ,the app ID is “1”.If it has two keys, the app ID are

“1” and “2”,and so on.
5.2.3 The initial position of Keys
If an app include at least one key, the number of app ID begin with “1”,different app uses
different key even if they have same app ID.
5.2.4 Permissions and key Assignments
It must add pinpad action permissions first when you want get the appId distribution.
Premission Fetch code :




Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.7
Linearized                      : No
Page Count                      : 31
Language                        : zh-CN
Tagged PDF                      : Yes
XMP Toolkit                     : 3.1-701
Producer                        : Microsoft® Word 2016
Creator                         : Hai Wang
Creator Tool                    : Microsoft® Word 2016
Create Date                     : 2017:06:20 10:50:44+08:00
Modify Date                     : 2017:06:20 10:50:44+08:00
Document ID                     : uuid:8FA703EA-27E6-4E6E-A096-CC805CF85F60
Instance ID                     : uuid:8FA703EA-27E6-4E6E-A096-CC805CF85F60
Author                          : Hai Wang
EXIF Metadata provided by EXIF.tools

Navigation menu