@urovotest/urovosdk-docs-mcp 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +176 -0
  2. package/docs/00-overview.md +37 -0
  3. package/docs/01-integration/android-permissions.md +22 -0
  4. package/docs/01-integration/quickstart-zh.md +54 -0
  5. package/docs/02-reference/emv/emv-api.md +3308 -0
  6. package/docs/02-reference/emv/emv-appendix.md +112 -0
  7. package/docs/02-reference/emv/emv-callback.md +1155 -0
  8. package/docs/02-reference/emv/emv-enum.md +324 -0
  9. package/docs/02-reference/error-codes.md +59 -0
  10. package/docs/02-reference/general/beeper.md +160 -0
  11. package/docs/02-reference/general/devicemanager.md +460 -0
  12. package/docs/02-reference/general/insertcardreader.md +307 -0
  13. package/docs/02-reference/general/install-manager.md +202 -0
  14. package/docs/02-reference/general/led-light.md +144 -0
  15. package/docs/02-reference/general/magcardreader.md +191 -0
  16. package/docs/02-reference/general/pinpad.md +3309 -0
  17. package/docs/02-reference/general/printer.md +1410 -0
  18. package/docs/02-reference/general/psam2.md +55 -0
  19. package/docs/02-reference/general/rfcardreader.md +1090 -0
  20. package/docs/02-reference/general/scanner-custom.md +196 -0
  21. package/docs/02-reference/general/scanner.md +214 -0
  22. package/docs/02-reference/general/sdk-log-output-management.md +124 -0
  23. package/docs/02-reference/general/serial-port-deprecated-suggest-using-module-14-serialtool.md +406 -0
  24. package/docs/02-reference/general/serial-port.md +326 -0
  25. package/docs/02-reference/general/sle4428-4436-4442.md +1890 -0
  26. package/docs/02-reference/general/system-manager.md +212 -0
  27. package/docs/02-reference/module-index.md +30 -0
  28. package/docs/02-reference/source-emv_sdk.md +3927 -0
  29. package/docs/02-reference/source-general_sdk.md +8978 -0
  30. package/docs/02-reference/undocumented/kiosk-lock-task.md +92 -0
  31. package/docs/03-demo/activity-map.md +27 -0
  32. package/docs/api-registry.json +4733 -0
  33. package/docs/search-index.json +2688 -0
  34. package/docs/source/emv_sdk.md +3927 -0
  35. package/docs/source/general_sdk.md +8978 -0
  36. package/docs/source/kiosk_lock_task.md +86 -0
  37. package/package.json +36 -0
  38. package/src/launch.js +22 -0
  39. package/src/lib/check-update.js +92 -0
  40. package/src/lib/create-mcp-server.js +90 -0
  41. package/src/lib/docs-tools.js +206 -0
  42. package/src/server.js +10 -0
@@ -0,0 +1,3927 @@
1
+ # Urovo EMV Kernel SDK API Knowledge Base
2
+
3
+ Source document: `User guide of EMV kernel library API_V2.4.104.pdf`
4
+ Demo project: `UrovoPosSdkDemo`
5
+ Generated: 2026-05-13
6
+ Chunking rule: split on `^### `; each `###` section is intended to describe one EMV API, callback, enum, or FAQ entry.
7
+
8
+ ### EMV API / startKernel
9
+
10
+ - Source section: `1.01`
11
+
12
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
13
+
14
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
15
+
16
+
17
+
18
+ Purpose:
19
+ EMV process.
20
+
21
+
22
+ Signature/prototype:
23
+ ```java
24
+ void startKernel(Hashtable<String,Object>transParams)
25
+ ```
26
+
27
+
28
+ Parameters:
29
+ See below Hashtablekeystable.
30
+
31
+
32
+ Return value:
33
+ None
34
+
35
+
36
+ Usage notes:
37
+ onRequestSetAmount
38
+ startEmvHashtableKeys1/2
39
+ TransactionSettings
40
+ • emvOption: Indicatewhether toforcetransactiongo online, seeEmvOption
41
+ enumeration.
42
+ • checkCardMode:Indicatewhich checkcardmodetouse, seeCheckCardMode
43
+ enumeration.
44
+ • transactionType: Indicatethetype of financialtransaction(eg:00-goods,
45
+ 01-cash,09-cashback, 20--refund)
46
+ • amount:Thetransactionamount. (e.g. "0.01")
47
+ • cashbackAmount:Thecashbackamount.
48
+ • amountEx:Thetransactionamount. (e.g. "001")
49
+ • cashbackAmountEx:Thecashbackamount.
50
+ • currencyCode:The3-digits transactioncurrencycode (e.g. "840" for USD).
51
+ • checkCardTimeout: Indicatethecheckcardtimeout, insecond.
52
+ • isEnterAmtAfterReadRecord:thisflagistrue,youneedtoentertheamountinthe
53
+ onRequestSetAmount callback
54
+ • FallbackSwitch: enableor disable thefallbackfunction 0-disable 1-enable
55
+ • supportDRL: true -Terminal support DRL for Visa, false-Terminel not support
56
+ DRLforVisa.
57
+ •enableBeeper: true - enable beeper when card read successful , false - disable
58
+ beeper when cardreadsuccessful.
59
+ •enableTapSwipeCollision: true - endable Tap/Swipe card collision check, false -
60
+ disableTap/Swipe cardcollision check.
61
+ •DisableCheckMSRFormat: true - Disable check MSR format ,false - Check MSR
62
+ format
63
+ •NeedFallBackTryTimes: (eg:1,2,3…) How many times does it take to fallback after
64
+ thecardreading fails.
65
+ •DisableCheckMSRFormat: true - check the magnetic stripe Format, false - Don`t
66
+
67
+ check
68
+ Mag StripeFormat.
69
+ • enableEncMagStripe: true - Return Encrypt magnetic stripe, false - Return
70
+ Plaintext magnetic stripe
71
+ •MSRKeyIndex: (1-4) DUKPTkey indexfor encrypted magneticstripe
72
+ •forceInputPIN: true - Force input of online PIN, valid for contactless. Note: This
73
+ functioncannot beusedfor L2authentication
74
+
75
+
76
+ Simplified example:
77
+ ```java
78
+ Hashtable<String, Object> data = new Hashtable<>();
79
+ data.put("checkCardMode", ContantPara.CheckCardMode.SWIPE_OR_INSERT_OR_TAP);
80
+ data.put("emvOption", ContantPara.EmvOption.START);
81
+ data.put("amount", "0");
82
+ data.put("cashbackAmount", "0");
83
+ data.put("checkCardTimeout", "30");
84
+ data.put("transactionType", "00");
85
+ data.put("currencyCode", "156");
86
+ emv.updateTerminalParamters(ContantPara.CardSlot.ICC, "9F3303E0F8C85F2A0201569F1A020156");
87
+ emv.updateTerminalParamters(ContantPara.CardSlot.PICC, "9F3303E0F8C85F2A0201569F1A020156");
88
+ emv.startKernel(data);
89
+ ```
90
+
91
+
92
+ Source details:
93
+ ```text
94
+ Declare: void startKernel(Hashtable<String,Object>transParams)
95
+ Start the transaction with specified CheckCardMode,go through all the
96
+ Description:
97
+ EMV process.
98
+ Parameters: See below Hashtablekeystable.
99
+ Return: None
100
+ Remark: onRequestSetAmount
101
+ startEmvHashtableKeys1/2
102
+ TransactionSettings
103
+ • emvOption: Indicatewhether toforcetransactiongo online, seeEmvOption
104
+ enumeration.
105
+ • checkCardMode:Indicatewhich checkcardmodetouse, seeCheckCardMode
106
+ enumeration.
107
+ • transactionType: Indicatethetype of financialtransaction(eg:00-goods,
108
+ 01-cash,09-cashback, 20--refund)
109
+ • amount:Thetransactionamount. (e.g. "0.01")
110
+ • cashbackAmount:Thecashbackamount.
111
+ • amountEx:Thetransactionamount. (e.g. "001")
112
+ • cashbackAmountEx:Thecashbackamount.
113
+ • currencyCode:The3-digits transactioncurrencycode (e.g. "840" for USD).
114
+ • checkCardTimeout: Indicatethecheckcardtimeout, insecond.
115
+ • isEnterAmtAfterReadRecord:thisflagistrue,youneedtoentertheamountinthe
116
+ onRequestSetAmount callback
117
+ • FallbackSwitch: enableor disable thefallbackfunction 0-disable 1-enable
118
+ • supportDRL: true -Terminal support DRL for Visa, false-Terminel not support
119
+ DRLforVisa.
120
+ •enableBeeper: true - enable beeper when card read successful , false - disable
121
+ beeper when cardreadsuccessful.
122
+ •enableTapSwipeCollision: true - endable Tap/Swipe card collision check, false -
123
+ disableTap/Swipe cardcollision check.
124
+ •DisableCheckMSRFormat: true - Disable check MSR format ,false - Check MSR
125
+ format
126
+ •NeedFallBackTryTimes: (eg:1,2,3…) How many times does it take to fallback after
127
+ thecardreading fails.
128
+ •DisableCheckMSRFormat: true - check the magnetic stripe Format, false - Don`t
129
+
130
+ check
131
+ Mag StripeFormat.
132
+ • enableEncMagStripe: true - Return Encrypt magnetic stripe, false - Return
133
+ Plaintext magnetic stripe
134
+ •MSRKeyIndex: (1-4) DUKPTkey indexfor encrypted magneticstripe
135
+ •forceInputPIN: true - Force input of online PIN, valid for contactless. Note: This
136
+ functioncannot beusedfor L2authentication
137
+ ```
138
+
139
+ ### EMV API / abortKernel
140
+
141
+ - Source section: `1.02`
142
+
143
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
144
+
145
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
146
+
147
+
148
+
149
+ Purpose:
150
+ Declare: public void abortKernel ()
151
+
152
+
153
+ Signature/prototype:
154
+ ```java
155
+ public void abortKernel ()
156
+ ```
157
+
158
+
159
+ Simplified example:
160
+ ```java
161
+ if (emv != null) {
162
+ emv.abortKernel();
163
+ }
164
+ ```
165
+
166
+
167
+ Source details:
168
+ ```text
169
+ Declare: public void abortKernel ()
170
+ Description: abortKernel,stopcheckcard,stopseephonecheckcard
171
+ Parameters: none
172
+ Return:
173
+ Remark:
174
+ ```
175
+
176
+ ### EMV API / setAmountEx
177
+
178
+ - Source section: `1.03`
179
+
180
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
181
+
182
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
183
+
184
+
185
+
186
+ Purpose:
187
+ storethevaluesand
188
+ IfthefunctionreturnFalse, thetransactionshould beterminate
189
+ • amount :Thetransactionamount.
190
+
191
+
192
+ Signature/prototype:
193
+ ```java
194
+ cashbackAmount)
195
+ ```
196
+
197
+
198
+ Parameters:
199
+ • cashbackAmount :The cashbackamount.
200
+ True-Amountvalues areset.
201
+
202
+
203
+ Return value:
204
+ False- Failed toset values.
205
+
206
+
207
+ Usage notes:
208
+ OnlyuseinonRequestSetAmount
209
+
210
+
211
+ Simplified example:
212
+ ```java
213
+ public void onRequestSetAmount() {
214
+ emv.setAmountEx(100L, 0L);
215
+ }
216
+ ```
217
+
218
+
219
+ Source details:
220
+ ```text
221
+ public Boolean setAmountEx(String amount, String
222
+ Declare:
223
+ cashbackAmount)
224
+ Set theamount,cashbackamountin responseto
225
+ onRequestSetAmount.
226
+ Thisfunction canbe calledbefore atransaction.TheAPI will
227
+ Description:
228
+ storethevaluesand
229
+ IfthefunctionreturnFalse, thetransactionshould beterminate
230
+ • amount :Thetransactionamount.
231
+ Parameters: • cashbackAmount :The cashbackamount.
232
+ True-Amountvalues areset.
233
+ Return:
234
+ False- Failed toset values.
235
+ Remark: OnlyuseinonRequestSetAmount
236
+ ```
237
+
238
+ ### EMV API / sendConfirmCardnoResult
239
+
240
+ - Source section: `1.04`
241
+
242
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
243
+
244
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
245
+
246
+
247
+
248
+ Purpose:
249
+ Confirmthecardnumberisright,callatonRequestConfirmCardno()
250
+
251
+
252
+ Signature/prototype:
253
+ ```java
254
+ void sendConfirmCardnoResult(Booleanisconfirm)
255
+ ```
256
+
257
+
258
+ Parameters:
259
+ True false
260
+
261
+
262
+ Return value:
263
+ None
264
+
265
+
266
+ Usage notes:
267
+ None
268
+
269
+
270
+ Source details:
271
+ ```text
272
+ Declare: void sendConfirmCardnoResult(Booleanisconfirm)
273
+
274
+ Description: Confirmthecardnumberisright,callatonRequestConfirmCardno()
275
+ Parameters: True false
276
+ Return: None
277
+ Remark: None
278
+ ```
279
+
280
+ ### EMV API / selectApplication
281
+
282
+ - Source section: `1.05`
283
+
284
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
285
+
286
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
287
+
288
+
289
+
290
+ Purpose:
291
+ onRequestSelectApplication.
292
+ TheAppshould prompt thecustomerfor anapplication to
293
+ continuethe
294
+ transaction.
295
+
296
+
297
+ Signature/prototype:
298
+ ```java
299
+ voidselectApplication(int index)
300
+ ```
301
+
302
+
303
+ Parameters:
304
+ Theindex oftheapplication selected.
305
+
306
+
307
+ Return value:
308
+ None
309
+
310
+
311
+ Usage notes:
312
+ onRequestSelectApplication
313
+
314
+
315
+ Source details:
316
+ ```text
317
+ Declare: voidselectApplication(int index)
318
+ Anchip cardmaysupportmultiple payment applications.The list
319
+ ofApplications
320
+ IDssupportedbythecardanddevice isreturnedin
321
+ Description: onRequestSelectApplication.
322
+ TheAppshould prompt thecustomerfor anapplication to
323
+ continuethe
324
+ transaction.
325
+ Parameters: Theindex oftheapplication selected.
326
+ Return: None
327
+ Remark: onRequestSelectApplication
328
+ ```
329
+
330
+ ### EMV API / sendFinalConfirmResult
331
+
332
+ - Source section: `1.06`
333
+
334
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
335
+
336
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
337
+
338
+
339
+
340
+ Purpose:
341
+ inresponsetoonRequestFinalConfirm.
342
+ • isConfirmed: Indicate theconfirmation result.True- Confirm
343
+
344
+
345
+ Signature/prototype:
346
+ ```java
347
+ void sendFinalConfirmResult(boolean isConfirmed)
348
+ ```
349
+
350
+
351
+ Parameters:
352
+ tocontinue thetransaction. False- Cancel thetransaction.
353
+
354
+
355
+ Return value:
356
+ None
357
+
358
+
359
+ Usage notes:
360
+ onRequestFinalConfirm
361
+
362
+
363
+ Source details:
364
+ ```text
365
+ Declare: void sendFinalConfirmResult(boolean isConfirmed)
366
+ Sendthefinal confirmationtoproceedor cancelthetransaction
367
+ Description:
368
+ inresponsetoonRequestFinalConfirm.
369
+ • isConfirmed: Indicate theconfirmation result.True- Confirm
370
+ Parameters:
371
+ tocontinue thetransaction. False- Cancel thetransaction.
372
+ Return: None
373
+ Remark: onRequestFinalConfirm
374
+ ```
375
+
376
+ ### EMV API / sendOnlineProcessResult
377
+
378
+ - Source section: `1.07`
379
+
380
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
381
+
382
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
383
+
384
+
385
+
386
+ Purpose:
387
+ bOnlineResult
388
+ • true: go online success
389
+ • false: goonline fail(unable togoonline)
390
+
391
+ Aset of transaction resultsinTag-Length-Value format.
392
+ Thefollowing tagsareusually returnedtothecard:
393
+ • Tag8A:AuthorisationResponseCode (Mandatory)
394
+ • Tag89:Authorisation Code
395
+
396
+
397
+ Signature/prototype:
398
+ ```java
399
+ void sendOnlineProcessResult(BooleanbOnlineResult, String tlv)
400
+ ```
401
+
402
+
403
+ Parameters:
404
+ • Tag91: IssuerAuthentication Data
405
+ • Tag71: Issuer ScriptTemplate1
406
+ • Tag72: Issuer ScriptTemplate2
407
+ Example:
408
+ String tlv= "8A02303091083132333435363738"
409
+
410
+
411
+ Return value:
412
+ None
413
+
414
+
415
+ Usage notes:
416
+ onRequestOnlineProcess
417
+
418
+
419
+ Simplified example:
420
+ ```java
421
+ public void onRequestOnlineProcess(String cardTlvData, String dataKsn) {
422
+ String issuerTlv = "8A023030"; // approval response code 00
423
+ emv.sendOnlineProcessResult(issuerTlv);
424
+ }
425
+ ```
426
+
427
+
428
+ Source details:
429
+ ```text
430
+ Declare: void sendOnlineProcessResult(BooleanbOnlineResult, String tlv)
431
+ Sendbacktheonline processresulttothecardin responseto
432
+ onRequestOnlineProcess.Toterminatethetransaction, sendnull
433
+ oremptystring as result.
434
+ Description:
435
+ bOnlineResult
436
+ • true: go online success
437
+ • false: goonline fail(unable togoonline)
438
+
439
+ Aset of transaction resultsinTag-Length-Value format.
440
+ Thefollowing tagsareusually returnedtothecard:
441
+ • Tag8A:AuthorisationResponseCode (Mandatory)
442
+ • Tag89:Authorisation Code
443
+ Parameters: • Tag91: IssuerAuthentication Data
444
+ • Tag71: Issuer ScriptTemplate1
445
+ • Tag72: Issuer ScriptTemplate2
446
+ Example:
447
+ String tlv= "8A02303091083132333435363738"
448
+ Return: None
449
+ Remark: onRequestOnlineProcess
450
+ ```
451
+
452
+ ### EMV API / ProcOnlinePinAgain
453
+
454
+ - Source section: `1.08`
455
+
456
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
457
+
458
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
459
+
460
+
461
+
462
+ Purpose:
463
+ Ifyounotsupportbypass,youcancallthisapi,restartpopuppinpad
464
+
465
+
466
+ Signature/prototype:
467
+ ```java
468
+ public void ProcOnlinePinAgain()
469
+ ```
470
+
471
+
472
+ Parameters:
473
+ None
474
+
475
+
476
+ Return value:
477
+ None
478
+
479
+
480
+ Usage notes:
481
+ Useinonlinepin
482
+
483
+
484
+ Source details:
485
+ ```text
486
+ Declare: public void ProcOnlinePinAgain()
487
+ Description: Ifyounotsupportbypass,youcancallthisapi,restartpopuppinpad
488
+ Parameters: None
489
+ Return: None
490
+ Remark: Useinonlinepin
491
+ ```
492
+
493
+ ### EMV API / sendPinEntry
494
+
495
+ - Source section: `1.09`
496
+
497
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
498
+
499
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
500
+
501
+
502
+
503
+ Purpose:
504
+ Tell Userhasenteredonline pin
505
+
506
+
507
+ Signature/prototype:
508
+ ```java
509
+ void sendPinEntry()
510
+ ```
511
+
512
+
513
+ Return value:
514
+ None
515
+
516
+
517
+ Usage notes:
518
+ Useinonlinepin
519
+
520
+
521
+ Source details:
522
+ ```text
523
+ Declare: void sendPinEntry()
524
+ Description: Tell Userhasenteredonline pin
525
+ Parameters:
526
+ Return: None
527
+ Remark: Useinonlinepin
528
+ ```
529
+
530
+ ### EMV API / bypassPinEntry
531
+
532
+ - Source section: `1.10`
533
+
534
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
535
+
536
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
537
+
538
+
539
+
540
+ Purpose:
541
+ thecarddoes not acceptbypassing, thetransactionwill be
542
+ aborted.
543
+
544
+
545
+ Signature/prototype:
546
+ ```java
547
+ void bypassPinEntry()
548
+ ```
549
+
550
+
551
+ Parameters:
552
+ None
553
+
554
+
555
+ Return value:
556
+ None
557
+
558
+
559
+ Usage notes:
560
+ Useinonlinepin
561
+
562
+
563
+ Source details:
564
+ ```text
565
+ Declare: void bypassPinEntry()
566
+ Bypass thePINentrystepinresponsetoonRequestPinEntry If
567
+ Description: thecarddoes not acceptbypassing, thetransactionwill be
568
+ aborted.
569
+ Parameters: None
570
+ Return: None
571
+ Remark: Useinonlinepin
572
+ ```
573
+
574
+ ### EMV API / cancelPinEntry
575
+
576
+ - Source section: `1.11`
577
+
578
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
579
+
580
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
581
+
582
+
583
+
584
+ Purpose:
585
+ thecarddoes not acceptbypassing, thetransactionwill be
586
+ aborted.
587
+
588
+
589
+ Signature/prototype:
590
+ ```java
591
+ void cancelPinEntry()
592
+ ```
593
+
594
+
595
+ Parameters:
596
+ None
597
+
598
+
599
+ Return value:
600
+ None
601
+
602
+
603
+ Usage notes:
604
+ Useinonlinepin
605
+
606
+
607
+ Source details:
608
+ ```text
609
+ Declare: void cancelPinEntry()
610
+ CancelthePINentry stepin responsetoonRequestPinEntry If
611
+ Description: thecarddoes not acceptbypassing, thetransactionwill be
612
+ aborted.
613
+ Parameters: None
614
+ Return: None
615
+ Remark: Useinonlinepin
616
+ ```
617
+
618
+ ### EMV API / updateTerminalParamters
619
+
620
+ - Source section: `1.12`
621
+
622
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
623
+
624
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
625
+
626
+
627
+
628
+ Purpose:
629
+ issupportedand allow toupdate.
630
+ ContantPara.CardSlot.ICC: UpdateICCTerminalParamters
631
+ ContantPara.CardSlot.PICC:UpdatePICCTerminal Paramters
632
+ ContantPara.CardSlot.UNKNOW:UpdateICCandPICC
633
+
634
+
635
+ Signature/prototype:
636
+ ```java
637
+ cardSlot,String tlv)
638
+ ```
639
+
640
+
641
+ Parameters:
642
+ TerminalParamters.
643
+ Aterminal configurationparameterinTag-Length-Value format.
644
+ See below tablefor thelist of tags.
645
+
646
+
647
+ Return value:
648
+ True-updatesuccess,False-updatefailed
649
+
650
+
651
+ Usage notes:
652
+ Tag Format Length describe
653
+ 9F1A n3 2 bytes Terminal Country
654
+ Code.
655
+ 9F01 n12 6 bytes Transaction
656
+ CurrencyCode.
657
+ 5F36 b 1 byte Transaction
658
+ Currency
659
+ Exponent.
660
+ 9F4E ans0-40 Variable 0-40 Merchant Name
661
+ andLocation.
662
+ 9F16 Ans0-15 Variable0-15 bytes MerchantIdentifier.
663
+ 9F1C An0-8 Variable 0-8 bytes Terminal
664
+ Identification.
665
+ 9F33 b 3 bytes Terminal
666
+ Capabilities.
667
+
668
+ (default: E0F8C8)
669
+ 9F35 n2 1 byte TerminalType.
670
+ (default: 22)
671
+ 9F40 b 5 byte Additional Terminal
672
+ Capabilities
673
+ 9F15 n4 2 byte Merchant Category
674
+ Code
675
+ DF02 b 1 byte Ramdom
676
+ TransactionSwitch
677
+ DF03 b 1 byte Exception File
678
+ CheckSwitch
679
+ DF04 b 1 byte SupportSM
680
+ DF05 b 1 byte Valocity Check
681
+ enable
682
+ DF7F b 5-17 byte Terminals prioritize
683
+ AID (PURE/VCCS
684
+ kernel)
685
+
686
+
687
+ Simplified example:
688
+ ```java
689
+ String terminalTlv = "9F3303E0F8C85F2A0201569F1A020156";
690
+ emv.updateTerminalParamters(ContantPara.CardSlot.UNKNOW, terminalTlv);
691
+ ```
692
+
693
+
694
+ Source details:
695
+ ```text
696
+ Boolean updateTerminalParamters (ContantPara.CardSlot
697
+ Declare:
698
+ cardSlot,String tlv)
699
+ Updateaterminal configurationparameter,provided thatthetag
700
+ Description:
701
+ issupportedand allow toupdate.
702
+ ContantPara.CardSlot.ICC: UpdateICCTerminalParamters
703
+ ContantPara.CardSlot.PICC:UpdatePICCTerminal Paramters
704
+ ContantPara.CardSlot.UNKNOW:UpdateICCandPICC
705
+ Parameters: TerminalParamters.
706
+ Aterminal configurationparameterinTag-Length-Value format.
707
+ See below tablefor thelist of tags.
708
+ Return: True-updatesuccess,False-updatefailed
709
+ Remark:
710
+ Tag Format Length describe
711
+ 9F1A n3 2 bytes Terminal Country
712
+ Code.
713
+ 9F01 n12 6 bytes Transaction
714
+ CurrencyCode.
715
+ 5F36 b 1 byte Transaction
716
+ Currency
717
+ Exponent.
718
+ 9F4E ans0-40 Variable 0-40 Merchant Name
719
+ andLocation.
720
+ 9F16 Ans0-15 Variable0-15 bytes MerchantIdentifier.
721
+ 9F1C An0-8 Variable 0-8 bytes Terminal
722
+ Identification.
723
+ 9F33 b 3 bytes Terminal
724
+ Capabilities.
725
+
726
+ (default: E0F8C8)
727
+ 9F35 n2 1 byte TerminalType.
728
+ (default: 22)
729
+ 9F40 b 5 byte Additional Terminal
730
+ Capabilities
731
+ 9F15 n4 2 byte Merchant Category
732
+ Code
733
+ DF02 b 1 byte Ramdom
734
+ TransactionSwitch
735
+ DF03 b 1 byte Exception File
736
+ CheckSwitch
737
+ DF04 b 1 byte SupportSM
738
+ DF05 b 1 byte Valocity Check
739
+ enable
740
+ DF7F b 5-17 byte Terminals prioritize
741
+ AID (PURE/VCCS
742
+ kernel)
743
+ ```
744
+
745
+ ### EMV API / updateCAPK
746
+
747
+ - Source section: `1.13`
748
+
749
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
750
+
751
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java and UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/TestEmv.java`
752
+
753
+
754
+
755
+ Purpose:
756
+ UpdateaCertificateAuthorityPublic Key objectin thedevice.
757
+ TheCAPKobjecttobeupdated.Theobjectcontainsthelocation
758
+ oftheCAPK in thedevice, theRID, index, modulus,exponent
759
+ andthechecksumof theCAPK, all
760
+ datainhex stringformat.
761
+ Rid:Identify public keyof certification center
762
+ Index:Identifypublic keyofcertificationcentertogetherwithRID
763
+ Exponent: Public keyexponent
764
+ Modulus:Module value of public key
765
+ Checksum:Toverifypublic keyof certificationcenter
766
+
767
+
768
+ Signature/prototype:
769
+ ```java
770
+ Hashtable<String,String>capkParams)
771
+ ```
772
+
773
+
774
+ Parameters:
775
+ Toremove aCAPK entry at thespecifiedlocation, set withthe
776
+ following values:
777
+ • RID (5bytes) = "A000000004"
778
+ • Index(1byte) = "01"
779
+ • Exponent (1byte or 3bytes) = "03"
780
+ • Modulus (Nbytes) ="00"
781
+ • Size (2bytes) (not use)
782
+ • Checksum (20bytes) = SHA-1[RID|| Index|| Modulus ||
783
+ Exponent]
784
+
785
+
786
+ Return value:
787
+ True-updatesuccess False-updatefailed
788
+
789
+
790
+ Usage notes:
791
+ Mandatory: RID&Index&Exponent&Modulus
792
+
793
+
794
+ Simplified example:
795
+ ```java
796
+ Hashtable<String, String> capk = new Hashtable<>();
797
+ capk.put("RID", "A000000003");
798
+ capk.put("Index", "08");
799
+ capk.put("Exponent", "03");
800
+ capk.put("Modulus", "...");
801
+ capk.put("Checksum", "...");
802
+ boolean ok = emv.updateCAPK(ContantPara.Operation.ADD, capk);
803
+ ```
804
+
805
+
806
+ Source details:
807
+ ```text
808
+ Boolean updateCAPK(ContantPara.Operation operation,
809
+ Declare:
810
+ Hashtable<String,String>capkParams)
811
+ Description: UpdateaCertificateAuthorityPublic Key objectin thedevice.
812
+ TheCAPKobjecttobeupdated.Theobjectcontainsthelocation
813
+ oftheCAPK in thedevice, theRID, index, modulus,exponent
814
+ andthechecksumof theCAPK, all
815
+ datainhex stringformat.
816
+ Rid:Identify public keyof certification center
817
+ Index:Identifypublic keyofcertificationcentertogetherwithRID
818
+ Exponent: Public keyexponent
819
+ Modulus:Module value of public key
820
+ Checksum:Toverifypublic keyof certificationcenter
821
+ Parameters:
822
+ Toremove aCAPK entry at thespecifiedlocation, set withthe
823
+ following values:
824
+ • RID (5bytes) = "A000000004"
825
+ • Index(1byte) = "01"
826
+ • Exponent (1byte or 3bytes) = "03"
827
+ • Modulus (Nbytes) ="00"
828
+ • Size (2bytes) (not use)
829
+ • Checksum (20bytes) = SHA-1[RID|| Index|| Modulus ||
830
+ Exponent]
831
+ Return: True-updatesuccess False-updatefailed
832
+
833
+ Remark: Mandatory: RID&Index&Exponent&Modulus
834
+ ```
835
+
836
+ ### EMV API / updateAID
837
+
838
+ - Source section: `1.14`
839
+
840
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
841
+
842
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java and UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/TestEmv.java`
843
+
844
+
845
+
846
+ Purpose:
847
+ modifyingtheAID infowithupdateAID command.
848
+
849
+ Hashtablekeys
850
+ • CardType: "IcCard"
851
+ • aid:Application Identifier (AID).
852
+ • appVersion:Application VersionNumber.
853
+ • contactTACDefault: IdentifytheAcquirer'sconditionsto
854
+ rejecttransactionswhen thetransactionis able tobecompleted
855
+ online but theterminal lackssuchcapability.
856
+ • contactTACDenial:IdentifytheAcquirer's conditionsfor not
857
+ tryinganyonline processingi.e. rejectionof transactions.
858
+ • contactTACOnline:IdentifytheAcquirer's conditionsfor
859
+ online transactions
860
+ • defaultTDOL:TransactionCertificateData ObjectList
861
+ (TDOL).
862
+ • defaultDDOL: DynamicDataAuthenticationDataObjectList
863
+ (DDOL). DDOLused forestablishmentof internalcertification
864
+ commandwhen thereis no DDOLin thecard.
865
+ • terminalFloorLimit: ContactTerminal Floor Limit. The
866
+ lowest offlinelimit allowed at theterminalin ICcardpurchase
867
+ •AppSelIndicator:application selectindicator 00-party
868
+ match,01-fullmatch,default 00
869
+ • AcquirerIdentifier:Acquirer Identifier.
870
+
871
+
872
+ Signature/prototype:
873
+ ```java
874
+ Hashtable<String,String>aidParams)
875
+ ```
876
+
877
+
878
+ Parameters:
879
+ • TerminalCapabilities: terminal Capabilities 9F33
880
+ • terminalCountryCode:terminal countrycode9F1A
881
+ • ThresholdValue:Value used in terminal risk management for
882
+ random transaction selection. Present if the Combination
883
+ supportsRandom TransactionSelection (EMV Mode only)
884
+ Eg:"000000002000"
885
+ • TargetPercentage: Present if the Combination supports Random
886
+ TransactionSelection(EMVModeonly)
887
+ Eg:"00"
888
+ •MaxTargetPercentage:Value used in terminal risk management for
889
+ random transaction selection - present if the Combination supports
890
+ RandomTransactionSelection(EMVModeonly)
891
+ Eg:"00"
892
+ HashtableValues
893
+ • Datain hex stringformat.
894
+ Example:
895
+ b8Statuscheckingsupported
896
+ b7RFU
897
+ b6transactionlimitcheckingsupported
898
+ b5contactlessfloorlimitcheckingsupported
899
+ b4contactlesscvmlimitcheckingsupported
900
+ b3zeroamountcheckingsupported
901
+ b2zeroamountcheckingoption1supported
902
+ b1RFU
903
+ b8Statuscheckingsupported
904
+ b7RFU
905
+ b6transactionlimitcheckingsupported
906
+ b5contactlessfloorlimitcheckingsupported
907
+ b4contactlesscvmlimitcheckingsupported
908
+ b3zeroamountcheckingsupported
909
+ b2zeroamountcheckingoption1supported
910
+ b1RFU
911
+ b8Statuscheckingsupported
912
+ b7RFU
913
+ b6transactionlimitcheckingsupported
914
+ b5contactlessfloorlimitcheckingsupported
915
+ b4contactlesscvmlimitcheckingsupported
916
+ b3zeroamountcheckingsupported
917
+ b2zeroamountcheckingoption1supported
918
+ b1RFU
919
+
920
+
921
+ Return value:
922
+ True-updatesuccess False-updatefailed
923
+
924
+
925
+ Simplified example:
926
+ ```java
927
+ Hashtable<String, String> aid = new Hashtable<>();
928
+ aid.put("CardType", "IcCard");
929
+ aid.put("aid", "A0000000031010");
930
+ aid.put("appVersion", "008C");
931
+ aid.put("terminalCountryCode", "0156");
932
+ boolean ok = emv.updateAID(ContantPara.Operation.ADD, aid);
933
+ ```
934
+
935
+
936
+ Source details:
937
+ ```text
938
+ boolean updateAID(ContantPara.Operationoperation,
939
+ Declare:
940
+ Hashtable<String,String>aidParams)
941
+ UpdatetheAIDinfo.
942
+ Description:
943
+ modifyingtheAID infowithupdateAID command.
944
+
945
+ Hashtablekeys
946
+ • CardType: "IcCard"
947
+ • aid:Application Identifier (AID).
948
+ • appVersion:Application VersionNumber.
949
+ • contactTACDefault: IdentifytheAcquirer'sconditionsto
950
+ rejecttransactionswhen thetransactionis able tobecompleted
951
+ online but theterminal lackssuchcapability.
952
+ • contactTACDenial:IdentifytheAcquirer's conditionsfor not
953
+ tryinganyonline processingi.e. rejectionof transactions.
954
+ • contactTACOnline:IdentifytheAcquirer's conditionsfor
955
+ online transactions
956
+ • defaultTDOL:TransactionCertificateData ObjectList
957
+ (TDOL).
958
+ • defaultDDOL: DynamicDataAuthenticationDataObjectList
959
+ (DDOL). DDOLused forestablishmentof internalcertification
960
+ commandwhen thereis no DDOLin thecard.
961
+ • terminalFloorLimit: ContactTerminal Floor Limit. The
962
+ lowest offlinelimit allowed at theterminalin ICcardpurchase
963
+ •AppSelIndicator:application selectindicator 00-party
964
+ match,01-fullmatch,default 00
965
+ • AcquirerIdentifier:Acquirer Identifier.
966
+ Parameters: • TerminalCapabilities: terminal Capabilities 9F33
967
+ • terminalCountryCode:terminal countrycode9F1A
968
+ • ThresholdValue:Value used in terminal risk management for
969
+ random transaction selection. Present if the Combination
970
+ supportsRandom TransactionSelection (EMV Mode only)
971
+ Eg:"000000002000"
972
+ • TargetPercentage: Present if the Combination supports Random
973
+ TransactionSelection(EMVModeonly)
974
+ Eg:"00"
975
+ •MaxTargetPercentage:Value used in terminal risk management for
976
+ random transaction selection - present if the Combination supports
977
+ RandomTransactionSelection(EMVModeonly)
978
+ Eg:"00"
979
+ HashtableValues
980
+ • Datain hex stringformat.
981
+ Example:
982
+ b8Statuscheckingsupported
983
+ b7RFU
984
+ b6transactionlimitcheckingsupported
985
+ b5contactlessfloorlimitcheckingsupported
986
+ b4contactlesscvmlimitcheckingsupported
987
+ b3zeroamountcheckingsupported
988
+ b2zeroamountcheckingoption1supported
989
+ b1RFU
990
+ b8Statuscheckingsupported
991
+ b7RFU
992
+ b6transactionlimitcheckingsupported
993
+ b5contactlessfloorlimitcheckingsupported
994
+ b4contactlesscvmlimitcheckingsupported
995
+ b3zeroamountcheckingsupported
996
+ b2zeroamountcheckingoption1supported
997
+ b1RFU
998
+ b8Statuscheckingsupported
999
+ b7RFU
1000
+ b6transactionlimitcheckingsupported
1001
+ b5contactlessfloorlimitcheckingsupported
1002
+ b4contactlesscvmlimitcheckingsupported
1003
+ b3zeroamountcheckingsupported
1004
+ b2zeroamountcheckingoption1supported
1005
+ b1RFU
1006
+
1007
+ Return: True-updatesuccess False-updatefailed
1008
+ Remark:
1009
+ ```
1010
+
1011
+ ### EMV API / updateExceptFile
1012
+
1013
+ - Source section: `1.15`
1014
+
1015
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1016
+
1017
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1018
+
1019
+
1020
+
1021
+ Purpose:
1022
+ Updateblacklist tokernel
1023
+ Mode:0-Add
1024
+ 1-Delete
1025
+ 2-Modify
1026
+
1027
+
1028
+ Signature/prototype:
1029
+ ```java
1030
+ boolean updateExceptFile(int mode,String ExceptTLV)
1031
+ ```
1032
+
1033
+
1034
+ Parameters:
1035
+ 3-Clear
1036
+ ExceptTLV:
1037
+ tag5A+tag5F34
1038
+ eg:5A0852364979362037965F340101
1039
+
1040
+
1041
+ Return value:
1042
+ None
1043
+
1044
+
1045
+ Usage notes:
1046
+ IfyouwantnotsupportExceptfilecheck,don`tupdateanyblacklist
1047
+
1048
+
1049
+ Source details:
1050
+ ```text
1051
+ Declare: boolean updateExceptFile(int mode,String ExceptTLV)
1052
+ Description: Updateblacklist tokernel
1053
+ Mode:0-Add
1054
+ 1-Delete
1055
+ 2-Modify
1056
+ Parameters:
1057
+ 3-Clear
1058
+ ExceptTLV:
1059
+ tag5A+tag5F34
1060
+ eg:5A0852364979362037965F340101
1061
+ Return: None
1062
+ Remark: IfyouwantnotsupportExceptfilecheck,don`tupdateanyblacklist
1063
+ ```
1064
+
1065
+ ### EMV API / LogOutEnable
1066
+
1067
+ - Source section: `1.16`
1068
+
1069
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1070
+
1071
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1072
+
1073
+
1074
+
1075
+ Purpose:
1076
+ Enableor disablecontact/contactlesstransactionlog
1077
+ 0-disable
1078
+
1079
+
1080
+ Signature/prototype:
1081
+ ```java
1082
+ voidLogOutEnable(int enable)
1083
+ ```
1084
+
1085
+
1086
+ Parameters:
1087
+ 1-enable
1088
+
1089
+
1090
+ Return value:
1091
+ None
1092
+ adbpull/sdcard/UROPE/Trace.txt….
1093
+
1094
+
1095
+ Usage notes:
1096
+ adbpull/sdcard/UROPE/TraceCL.txt….
1097
+ adbpull/sdcard/UROPE/ICCMD.log…
1098
+
1099
+
1100
+ Simplified example:
1101
+ ```java
1102
+ emv.LogOutEnable(BuildConfig.DEBUG ? 1 : 0); // disable in production
1103
+ ```
1104
+
1105
+
1106
+ Source details:
1107
+ ```text
1108
+ Declare: voidLogOutEnable(int enable)
1109
+ Description: Enableor disablecontact/contactlesstransactionlog
1110
+ 0-disable
1111
+ Parameters:
1112
+ 1-enable
1113
+ Return: None
1114
+ adbpull/sdcard/UROPE/Trace.txt….
1115
+ Remark: adbpull/sdcard/UROPE/TraceCL.txt….
1116
+ adbpull/sdcard/UROPE/ICCMD.log…
1117
+ ```
1118
+
1119
+ ### EMV API / sendOfflinePINVerifyResult
1120
+
1121
+ - Source section: `1.17`
1122
+
1123
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1124
+
1125
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1126
+
1127
+
1128
+
1129
+ Purpose:
1130
+ Androdos 8.0,other versionnot use this,offlinepinverify
1131
+ bykernel)
1132
+ (-198) //Returncodeerror
1133
+ (-202) //ICcommand failed
1134
+ (-192) //PINBLOCKED
1135
+
1136
+
1137
+ Signature/prototype:
1138
+ ```java
1139
+ boolean sendOfflinePINVerifyResult(int iResult)
1140
+ ```
1141
+
1142
+
1143
+ Parameters:
1144
+ (-199) //user cancel or Pinpadtimeout
1145
+ (1) //bypass
1146
+ (0) //success
1147
+
1148
+
1149
+ Return value:
1150
+ 0-success
1151
+
1152
+
1153
+ Usage notes:
1154
+ CallthisincallbackonRequestOfflinePINVerify
1155
+
1156
+
1157
+ Source details:
1158
+ ```text
1159
+ Declare: boolean sendOfflinePINVerifyResult(int iResult)
1160
+ Sendoffline pinverifyresult tokernel(thisapi use in
1161
+ Description: Androdos 8.0,other versionnot use this,offlinepinverify
1162
+ bykernel)
1163
+ (-198) //Returncodeerror
1164
+ (-202) //ICcommand failed
1165
+ (-192) //PINBLOCKED
1166
+ Parameters:
1167
+ (-199) //user cancel or Pinpadtimeout
1168
+ (1) //bypass
1169
+ (0) //success
1170
+ Return: 0-success
1171
+
1172
+ Remark: CallthisincallbackonRequestOfflinePINVerify
1173
+ ```
1174
+
1175
+ ### EMV API / getIssuerScriptResult
1176
+
1177
+ - Source section: `1.18`
1178
+
1179
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1180
+
1181
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1182
+
1183
+
1184
+
1185
+ Purpose:
1186
+ GetScriptResult
1187
+
1188
+
1189
+ Signature/prototype:
1190
+ ```java
1191
+ booleangetIssuerScriptResult()
1192
+ ```
1193
+
1194
+
1195
+ Parameters:
1196
+ none
1197
+
1198
+
1199
+ Return value:
1200
+ 0-getsuccessifsuccesswillcallbackonReturnIssuerScriptResult
1201
+
1202
+
1203
+ Usage notes:
1204
+ CallthisincallbackonReturnIssuerScriptResult
1205
+
1206
+
1207
+ Source details:
1208
+ ```text
1209
+ Declare: booleangetIssuerScriptResult()
1210
+ Description: GetScriptResult
1211
+ Parameters: none
1212
+ Return: 0-getsuccessifsuccesswillcallbackonReturnIssuerScriptResult
1213
+ Remark: CallthisincallbackonReturnIssuerScriptResult
1214
+ ```
1215
+
1216
+ ### EMV API / getEmvAIDDetail
1217
+
1218
+ - Source section: `1.19`
1219
+
1220
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1221
+
1222
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1223
+
1224
+
1225
+
1226
+ Purpose:
1227
+ Declare: public List<EmvAidData> getEmvAIDDetail()
1228
+
1229
+
1230
+ Signature/prototype:
1231
+ ```java
1232
+ public List<EmvAidData> getEmvAIDDetail()
1233
+ ```
1234
+
1235
+
1236
+ Parameters:
1237
+ none
1238
+
1239
+
1240
+ Usage notes:
1241
+ Donotcallduringthetransaction
1242
+
1243
+
1244
+ Source details:
1245
+ ```text
1246
+ Declare: public List<EmvAidData> getEmvAIDDetail()
1247
+ ReturnallAidparamters,seetheEmvAidData.class
1248
+ Description:
1249
+ Parameters: none
1250
+ Return:
1251
+ Remark: Donotcallduringthetransaction
1252
+ ```
1253
+
1254
+ ### EMV API / getNfcAIDDetail
1255
+
1256
+ - Source section: `1.20`
1257
+
1258
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1259
+
1260
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1261
+
1262
+
1263
+
1264
+ Purpose:
1265
+ Declare: public List<ContactlessAidData> getNfcAIDDetail()
1266
+
1267
+
1268
+ Signature/prototype:
1269
+ ```java
1270
+ public List<ContactlessAidData> getNfcAIDDetail()
1271
+ ```
1272
+
1273
+
1274
+ Parameters:
1275
+ none
1276
+
1277
+
1278
+ Usage notes:
1279
+ Donotcallduringthetransaction
1280
+
1281
+
1282
+ Source details:
1283
+ ```text
1284
+ Declare: public List<ContactlessAidData> getNfcAIDDetail()
1285
+ ReturnallAidparamters,seetheContactlessAidData.class
1286
+ Description:
1287
+ Parameters: none
1288
+ Return:
1289
+ Remark: Donotcallduringthetransaction
1290
+ ```
1291
+
1292
+ ### EMV API / getCAPKDetail
1293
+
1294
+ - Source section: `1.21`
1295
+
1296
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1297
+
1298
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1299
+
1300
+
1301
+
1302
+ Purpose:
1303
+ public List<CAPK> getCAPKDetail(ContantPara.CardSlot
1304
+
1305
+
1306
+ Signature/prototype:
1307
+ ```java
1308
+ cardSlot)
1309
+ ```
1310
+
1311
+
1312
+ Parameters:
1313
+ none
1314
+
1315
+
1316
+ Usage notes:
1317
+ Donotcallduringthetransaction
1318
+
1319
+
1320
+ Source details:
1321
+ ```text
1322
+ public List<CAPK> getCAPKDetail(ContantPara.CardSlot
1323
+ Declare:
1324
+ cardSlot)
1325
+ ReturnallCAPKparamters,seetheCAPK.class
1326
+ Description:
1327
+ Parameters: none
1328
+ Return:
1329
+ Remark: Donotcallduringthetransaction
1330
+ ```
1331
+
1332
+ ### EMV API / getAIDList
1333
+
1334
+ - Source section: `1.22`
1335
+
1336
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1337
+
1338
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1339
+
1340
+
1341
+
1342
+ Purpose:
1343
+ Declare: public List<String> getAIDList(ContantPara.CardSlot cardSlot)
1344
+
1345
+
1346
+ Signature/prototype:
1347
+ ```java
1348
+ public List<String> getAIDList(ContantPara.CardSlot cardSlot)
1349
+ ```
1350
+
1351
+
1352
+ Parameters:
1353
+ none
1354
+
1355
+
1356
+ Usage notes:
1357
+ Donotcallduringthetransaction
1358
+
1359
+
1360
+ Source details:
1361
+ ```text
1362
+ Declare: public List<String> getAIDList(ContantPara.CardSlot cardSlot)
1363
+ ReturnallAID
1364
+ Description:
1365
+ Parameters: none
1366
+ Return:
1367
+ Remark: Donotcallduringthetransaction
1368
+ ```
1369
+
1370
+ ### EMV API / getCAPKList
1371
+
1372
+ - Source section: `1.23`
1373
+
1374
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1375
+
1376
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1377
+
1378
+
1379
+
1380
+ Purpose:
1381
+ Key: RID
1382
+
1383
+
1384
+ Signature/prototype:
1385
+ ```java
1386
+ getCAPKList(ContantPara.CardSlot cardSlot)
1387
+ ```
1388
+
1389
+
1390
+ Parameters:
1391
+ Index
1392
+
1393
+
1394
+ Return value:
1395
+ List
1396
+
1397
+
1398
+ Usage notes:
1399
+ Donotcallduringthetransaction
1400
+
1401
+
1402
+ Source details:
1403
+ ```text
1404
+ public List<Hashtable<String,String>>
1405
+ Declare:
1406
+ getCAPKList(ContantPara.CardSlot cardSlot)
1407
+ ReturnallCAPK
1408
+ Description:
1409
+ Key: RID
1410
+ Parameters:
1411
+ Index
1412
+ Return: List
1413
+ Remark: Donotcallduringthetransaction
1414
+ ```
1415
+
1416
+ ### EMV API / getTlvByTagLists
1417
+
1418
+ - Source section: `1.24`
1419
+
1420
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1421
+
1422
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1423
+
1424
+
1425
+
1426
+ Purpose:
1427
+ GettheTLVstring basedontag
1428
+
1429
+
1430
+ Signature/prototype:
1431
+ ```java
1432
+ public String getTlvByTagLists(List<String>TagList)
1433
+ ```
1434
+
1435
+
1436
+ Parameters:
1437
+ TagList:All tags
1438
+
1439
+
1440
+ Return value:
1441
+ TLVdatastring
1442
+
1443
+
1444
+ Usage notes:
1445
+ none
1446
+
1447
+
1448
+ Source details:
1449
+ ```text
1450
+ Declare: public String getTlvByTagLists(List<String>TagList)
1451
+ Description: GettheTLVstring basedontag
1452
+ Parameters: TagList:All tags
1453
+ Return: TLVdatastring
1454
+ Remark: none
1455
+ ```
1456
+
1457
+ ### EMV API / getEMVLibVers
1458
+
1459
+ - Source section: `1.25`
1460
+
1461
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1462
+
1463
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1464
+
1465
+
1466
+
1467
+ Purpose:
1468
+ Getemvso version
1469
+
1470
+
1471
+ Signature/prototype:
1472
+ ```java
1473
+ public String getEMVLibVers(ContantPara.CardSlot cardSlot)
1474
+ ```
1475
+
1476
+
1477
+ Parameters:
1478
+ none
1479
+
1480
+
1481
+ Return value:
1482
+ Versionstring
1483
+
1484
+
1485
+ Usage notes:
1486
+ none
1487
+
1488
+
1489
+ Source details:
1490
+ ```text
1491
+ Declare: public String getEMVLibVers(ContantPara.CardSlot cardSlot)
1492
+ Description: Getemvso version
1493
+ Parameters: none
1494
+ Return: Versionstring
1495
+ Remark: none
1496
+ ```
1497
+
1498
+ ### EMV API / getEMVjarVers
1499
+
1500
+ - Source section: `1.26`
1501
+
1502
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1503
+
1504
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1505
+
1506
+
1507
+
1508
+ Purpose:
1509
+ Getemvjar version
1510
+
1511
+
1512
+ Signature/prototype:
1513
+ ```java
1514
+ public String getEMVjarVers()
1515
+ ```
1516
+
1517
+
1518
+ Parameters:
1519
+ none
1520
+
1521
+
1522
+ Return value:
1523
+ Versionstring
1524
+
1525
+
1526
+ Usage notes:
1527
+ none
1528
+
1529
+
1530
+ Source details:
1531
+ ```text
1532
+ Declare: public String getEMVjarVers()
1533
+ Description: Getemvjar version
1534
+ Parameters: none
1535
+ Return: Versionstring
1536
+ Remark: none
1537
+ ```
1538
+
1539
+ ### EMV API / getValByTag
1540
+
1541
+ - Source section: `1.27`
1542
+
1543
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1544
+
1545
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1546
+
1547
+
1548
+
1549
+ Purpose:
1550
+ Get onecontactor contactlesstagvalue
1551
+
1552
+
1553
+ Signature/prototype:
1554
+ ```java
1555
+ public String getValByTag(int tag)
1556
+ ```
1557
+
1558
+
1559
+ Parameters:
1560
+ tag(e.g. 0x57)
1561
+
1562
+
1563
+ Return value:
1564
+ Returntagvaluewithstring
1565
+
1566
+
1567
+ Usage notes:
1568
+ none
1569
+
1570
+
1571
+ Simplified example:
1572
+ ```java
1573
+ String aid = emv.getValByTag(0x84);
1574
+ ```
1575
+
1576
+
1577
+ Source details:
1578
+ ```text
1579
+ Declare: public String getValByTag(int tag)
1580
+ Description: Get onecontactor contactlesstagvalue
1581
+ Parameters: tag(e.g. 0x57)
1582
+ Return: Returntagvaluewithstring
1583
+ Remark: none
1584
+ ```
1585
+
1586
+ ### EMV API / setContext
1587
+
1588
+ - Source section: `1.28`
1589
+
1590
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1591
+
1592
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1593
+
1594
+
1595
+
1596
+ Purpose:
1597
+ Setcontext,soemvcancallUIandpinpadhandleoffliepin
1598
+
1599
+
1600
+ Signature/prototype:
1601
+ ```java
1602
+ public void setContext(Context context)
1603
+ ```
1604
+
1605
+
1606
+ Usage notes:
1607
+ Useinandroid5.1or6.0
1608
+
1609
+
1610
+ Simplified example:
1611
+ ```java
1612
+ EmvNfcKernelApi emv = EmvNfcKernelApi.getInstance(context);
1613
+ emv.setContext(context);
1614
+ emv.setListener(listener);
1615
+ ```
1616
+
1617
+
1618
+ Source details:
1619
+ ```text
1620
+ Declare: public void setContext(Context context)
1621
+ Description: Setcontext,soemvcancallUIandpinpadhandleoffliepin
1622
+ Parameters:
1623
+ Return:
1624
+ Remark: Useinandroid5.1or6.0
1625
+ ```
1626
+
1627
+ ### EMV API / SetTLV
1628
+
1629
+ - Source section: `1.29`
1630
+
1631
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1632
+
1633
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1634
+
1635
+
1636
+
1637
+ Purpose:
1638
+ Set onecontacttagdata
1639
+ tag(e.g. 0x95)
1640
+
1641
+
1642
+ Signature/prototype:
1643
+ ```java
1644
+ public int SetTLV(int tag,byte[]value, int valueLen)
1645
+ ```
1646
+
1647
+
1648
+ Parameters:
1649
+ value: tagvalue hex
1650
+ valueLen:lengthofvalue
1651
+ 0:success
1652
+
1653
+
1654
+ Return value:
1655
+ Other:failed
1656
+
1657
+
1658
+ Usage notes:
1659
+ Onlyusefor contact
1660
+
1661
+
1662
+ Source details:
1663
+ ```text
1664
+ Declare: public int SetTLV(int tag,byte[]value, int valueLen)
1665
+ Description: Set onecontacttagdata
1666
+ tag(e.g. 0x95)
1667
+ Parameters: value: tagvalue hex
1668
+ valueLen:lengthofvalue
1669
+ 0:success
1670
+ Return:
1671
+ Other:failed
1672
+ Remark: Onlyusefor contact
1673
+ ```
1674
+
1675
+ ### EMV API / getMstripFlag
1676
+
1677
+ - Source section: `1.30`
1678
+
1679
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1680
+
1681
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1682
+
1683
+
1684
+
1685
+ Purpose:
1686
+ Note:VISAnotsupportMstripmode
1687
+
1688
+
1689
+ Signature/prototype:
1690
+ ```java
1691
+ public int getMstripFlag ()
1692
+ ```
1693
+
1694
+
1695
+ Parameters:
1696
+ 0 Mchip(EMVmode)
1697
+
1698
+
1699
+ Return value:
1700
+ 1 Mstrip(Master/Amex)
1701
+ 4 JCBlegacymode
1702
+
1703
+
1704
+ Usage notes:
1705
+ 8 DiscoverZIPmode
1706
+
1707
+
1708
+ Source details:
1709
+ ```text
1710
+ Declare: public int getMstripFlag ()
1711
+ CheckthecontactlesscardisEMVmodeorMagstripmode
1712
+ Description:
1713
+ Note:VISAnotsupportMstripmode
1714
+ Parameters:
1715
+ 0 Mchip(EMVmode)
1716
+ Return:
1717
+ 1 Mstrip(Master/Amex)
1718
+ 4 JCBlegacymode
1719
+ Remark:
1720
+ 8 DiscoverZIPmode
1721
+ ```
1722
+
1723
+ ### EMV API / CheckCardIsOut
1724
+
1725
+ - Source section: `1.31`
1726
+
1727
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1728
+
1729
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1730
+
1731
+
1732
+
1733
+ Purpose:
1734
+ transaction ,Otherwise,itwillcauseakernelcardreadingconflict,
1735
+
1736
+
1737
+ Signature/prototype:
1738
+ ```java
1739
+ public boolean CheckCardIsOut(long ms)
1740
+ ```
1741
+
1742
+
1743
+ Parameters:
1744
+ milliseconds
1745
+
1746
+
1747
+ Return value:
1748
+ True:ifcardisremovedduringtimeout False:cardnotremoved
1749
+ call it at ContantPara.CheckCardResult.NEED_FALLBACK or
1750
+
1751
+
1752
+ Usage notes:
1753
+ ContantPara.CheckCardResult.NOT_ICC or
1754
+ ContantPara.TransactionResult.ICC_CARD_REMOVED
1755
+
1756
+
1757
+ Source details:
1758
+ ```text
1759
+ Declare: public boolean CheckCardIsOut(long ms)
1760
+ Check IC card is removed from device , but this api can`t call during
1761
+ Description:
1762
+ transaction ,Otherwise,itwillcauseakernelcardreadingconflict,
1763
+ Parameters: milliseconds
1764
+ Return: True:ifcardisremovedduringtimeout False:cardnotremoved
1765
+ call it at ContantPara.CheckCardResult.NEED_FALLBACK or
1766
+ Remark: ContantPara.CheckCardResult.NOT_ICC or
1767
+ ContantPara.TransactionResult.ICC_CARD_REMOVED
1768
+ ```
1769
+
1770
+ ### EMV API / CheckCardIsOutDuringTrans
1771
+
1772
+ - Source section: `1.32`
1773
+
1774
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1775
+
1776
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1777
+
1778
+
1779
+
1780
+ Purpose:
1781
+ thePINpad forcontacttransaction ,Otherwise,itwill causeakernel
1782
+ cardreadingconflict
1783
+
1784
+
1785
+ Signature/prototype:
1786
+ ```java
1787
+ public boolean CheckCardIsOutDuringTrans(long ms)
1788
+ ```
1789
+
1790
+
1791
+ Parameters:
1792
+ milliseconds
1793
+
1794
+
1795
+ Return value:
1796
+ True:ifcardisremovedduringtimeout False:cardnotremoved
1797
+
1798
+
1799
+ Usage notes:
1800
+ UseininputPINflow,whenthecardremoved
1801
+
1802
+
1803
+ Source details:
1804
+ ```text
1805
+ Declare: public boolean CheckCardIsOutDuringTrans(long ms)
1806
+ Check IC card is removed from device , this api can only call during Pop
1807
+ Description: thePINpad forcontacttransaction ,Otherwise,itwill causeakernel
1808
+ cardreadingconflict
1809
+ Parameters: milliseconds
1810
+ Return: True:ifcardisremovedduringtimeout False:cardnotremoved
1811
+ Remark: UseininputPINflow,whenthecardremoved
1812
+ ```
1813
+
1814
+ ### EMV API / GetField55ForSAMA
1815
+
1816
+ - Source section: `1.33`
1817
+
1818
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1819
+
1820
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1821
+
1822
+
1823
+
1824
+ Purpose:
1825
+ Getfiled55forSAMA
1826
+
1827
+
1828
+ Signature/prototype:
1829
+ ```java
1830
+ public String GetField55ForSAMA()
1831
+ ```
1832
+
1833
+
1834
+ Parameters:
1835
+ null
1836
+
1837
+
1838
+ Return value:
1839
+ TLV
1840
+
1841
+
1842
+ Usage notes:
1843
+ Callitatgoonlinecallback
1844
+
1845
+
1846
+ Source details:
1847
+ ```text
1848
+ Declare: public String GetField55ForSAMA()
1849
+ Description: Getfiled55forSAMA
1850
+ Parameters: null
1851
+ Return: TLV
1852
+ Remark: Callitatgoonlinecallback
1853
+ ```
1854
+
1855
+ ### EMV API / getDeviceType()
1856
+
1857
+ - Source section: `1.34`
1858
+
1859
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1860
+
1861
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1862
+
1863
+
1864
+
1865
+ Purpose:
1866
+ GetDeviceTypeforContactless
1867
+
1868
+
1869
+ Signature/prototype:
1870
+ ```java
1871
+ public int getDeviceType()
1872
+ ```
1873
+
1874
+
1875
+ Parameters:
1876
+ null
1877
+
1878
+
1879
+ Return value:
1880
+ 0-Realcard, other-MobilePhone
1881
+ Call it at go online callback, If the kernel cannot determine, the default
1882
+
1883
+
1884
+ Usage notes:
1885
+ realcard
1886
+
1887
+
1888
+ Source details:
1889
+ ```text
1890
+ Declare: public int getDeviceType()
1891
+ Description: GetDeviceTypeforContactless
1892
+ Parameters: null
1893
+ Return: 0-Realcard, other-MobilePhone
1894
+ Call it at go online callback, If the kernel cannot determine, the default
1895
+ Remark:
1896
+ realcard
1897
+ ```
1898
+
1899
+ ### EMV API / getField55ForJIO()
1900
+
1901
+ - Source section: `1.34`
1902
+
1903
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1904
+
1905
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1906
+
1907
+
1908
+
1909
+ Purpose:
1910
+ Getfiled55forRelience
1911
+
1912
+
1913
+ Signature/prototype:
1914
+ ```java
1915
+ public Hashtable<String,String> getField55ForJIO(int KeySetNum)
1916
+ ```
1917
+
1918
+
1919
+ Parameters:
1920
+ KeySetNum--DUKPTKeySetNum
1921
+
1922
+
1923
+ Return value:
1924
+ Hashtable: KEY/VALUE:EMVDATA KSN TRACKDATA
1925
+
1926
+
1927
+ Usage notes:
1928
+ Callitatgoonlinecallback
1929
+
1930
+
1931
+ Source details:
1932
+ ```text
1933
+ Declare: public Hashtable<String,String> getField55ForJIO(int KeySetNum)
1934
+ Description: Getfiled55forRelience
1935
+ Parameters: KeySetNum--DUKPTKeySetNum
1936
+ Return: Hashtable: KEY/VALUE:EMVDATA KSN TRACKDATA
1937
+ Remark: Callitatgoonlinecallback
1938
+ ```
1939
+
1940
+ ### EMV API / GetL1Version
1941
+
1942
+ - Source section: `1.35`
1943
+
1944
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1945
+
1946
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1947
+
1948
+
1949
+
1950
+ Purpose:
1951
+ GetL1Versionofdevice
1952
+
1953
+
1954
+ Signature/prototype:
1955
+ ```java
1956
+ cardSlot)
1957
+ ```
1958
+
1959
+
1960
+ Parameters:
1961
+ cardSlot-ICCorPICC
1962
+
1963
+
1964
+ Return value:
1965
+ Hashtable: KEY/VALUE:IFMHardwareSoftwarePCD
1966
+
1967
+
1968
+ Usage notes:
1969
+ SubjecttotheL1certificate
1970
+
1971
+
1972
+ Source details:
1973
+ ```text
1974
+ public Hashtable<String,String> GetL1Version(ContantPara.CardSlot
1975
+ Declare:
1976
+ cardSlot)
1977
+ Description: GetL1Versionofdevice
1978
+ Parameters: cardSlot-ICCorPICC
1979
+ Return: Hashtable: KEY/VALUE:IFMHardwareSoftwarePCD
1980
+ Remark: SubjecttotheL1certificate
1981
+ ```
1982
+
1983
+ ### EMV API / getNFCLibVers
1984
+
1985
+ - Source section: `1.36`
1986
+
1987
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
1988
+
1989
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
1990
+
1991
+
1992
+
1993
+ Purpose:
1994
+ GetKernelnameandVersion
1995
+ KernelID - 02-Master 03-Visa 04-Amex 05-JCB 06-Discover 0D-Rupay
1996
+
1997
+
1998
+ Signature/prototype:
1999
+ ```java
2000
+ public String getNFCLibVers(byteKernelID)
2001
+ ```
2002
+
2003
+
2004
+ Parameters:
2005
+ 2D-PURE
2006
+
2007
+
2008
+ Return value:
2009
+ NameandVersion
2010
+
2011
+
2012
+ Usage notes:
2013
+ SubjecttotheL2certificate
2014
+
2015
+
2016
+ Source details:
2017
+ ```text
2018
+ Declare: public String getNFCLibVers(byteKernelID)
2019
+ Description: GetKernelnameandVersion
2020
+ KernelID - 02-Master 03-Visa 04-Amex 05-JCB 06-Discover 0D-Rupay
2021
+ Parameters:
2022
+ 2D-PURE
2023
+ Return: NameandVersion
2024
+ Remark: SubjecttotheL2certificate
2025
+ ```
2026
+
2027
+ ### EMV API / updateCAPK
2028
+
2029
+ - Source section: `1.37`
2030
+
2031
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2032
+
2033
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java and UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/TestEmv.java`
2034
+
2035
+
2036
+
2037
+ Purpose:
2038
+ UpdateaCertificateAuthorityPublic Key objectin thedevice.
2039
+ TheCAPKobjecttobeupdated.Theobjectcontainsthelocation
2040
+ oftheCAPK in thedevice, theRID, index, modulus,exponent
2041
+ andthechecksumof theCAPK, all
2042
+ datainhex stringformat.
2043
+ cardSlot:
2044
+ ContantPara.CardSlot.ICC,ContantPara.CardSlot.PICCor
2045
+ ContantPara.CardSlot.UNKNOWN
2046
+ Rid:Identify public keyof certification center
2047
+ Index:Identifypublic keyofcertificationcentertogetherwithRID
2048
+ Exponent: Public keyexponent
2049
+
2050
+
2051
+ Signature/prototype:
2052
+ ```java
2053
+ ContantPara.Operationoperation, Hashtable<String,String>
2054
+ capkParams)
2055
+ ```
2056
+
2057
+
2058
+ Parameters:
2059
+ Modulus:Module value of public key
2060
+ Checksum:Toverifypublic keyof certificationcenter
2061
+ Toremove aCAPK entry at thespecifiedlocation, set withthe
2062
+ following values:
2063
+ • RID (5bytes) = "A000000004"
2064
+ • Index(1byte) = "01"
2065
+ • Exponent (1byte or 3bytes) = "03"
2066
+ • Modulus (Nbytes) ="00"
2067
+ • Size (2bytes) (not use)
2068
+ • Checksum (20bytes) = SHA-1[RID|| Index|| Modulus ||
2069
+ Exponent]
2070
+
2071
+
2072
+ Return value:
2073
+ True-updatesuccess False-updatefailed
2074
+
2075
+
2076
+ Usage notes:
2077
+ Mandatory: RID&Index&Exponent&Modulus
2078
+
2079
+
2080
+ Simplified example:
2081
+ ```java
2082
+ Hashtable<String, String> capk = new Hashtable<>();
2083
+ capk.put("RID", "A000000003");
2084
+ capk.put("Index", "08");
2085
+ capk.put("Exponent", "03");
2086
+ capk.put("Modulus", "...");
2087
+ capk.put("Checksum", "...");
2088
+ boolean ok = emv.updateCAPK(ContantPara.Operation.ADD, capk);
2089
+ ```
2090
+
2091
+
2092
+ Source details:
2093
+ ```text
2094
+ Boolean updateCAPK(ContantPara.CardSlot cardSlot,
2095
+ Declare:
2096
+ ContantPara.Operationoperation, Hashtable<String,String>
2097
+
2098
+ capkParams)
2099
+ Description: UpdateaCertificateAuthorityPublic Key objectin thedevice.
2100
+ TheCAPKobjecttobeupdated.Theobjectcontainsthelocation
2101
+ oftheCAPK in thedevice, theRID, index, modulus,exponent
2102
+ andthechecksumof theCAPK, all
2103
+ datainhex stringformat.
2104
+ cardSlot:
2105
+ ContantPara.CardSlot.ICC,ContantPara.CardSlot.PICCor
2106
+ ContantPara.CardSlot.UNKNOWN
2107
+ Rid:Identify public keyof certification center
2108
+ Index:Identifypublic keyofcertificationcentertogetherwithRID
2109
+ Exponent: Public keyexponent
2110
+ Parameters:
2111
+ Modulus:Module value of public key
2112
+ Checksum:Toverifypublic keyof certificationcenter
2113
+ Toremove aCAPK entry at thespecifiedlocation, set withthe
2114
+ following values:
2115
+ • RID (5bytes) = "A000000004"
2116
+ • Index(1byte) = "01"
2117
+ • Exponent (1byte or 3bytes) = "03"
2118
+ • Modulus (Nbytes) ="00"
2119
+ • Size (2bytes) (not use)
2120
+ • Checksum (20bytes) = SHA-1[RID|| Index|| Modulus ||
2121
+ Exponent]
2122
+ Return: True-updatesuccess False-updatefailed
2123
+ Remark: Mandatory: RID&Index&Exponent&Modulus
2124
+ ```
2125
+
2126
+ ### EMV API / updateContactAID_TLV
2127
+
2128
+ - Source section: `1.38`
2129
+
2130
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2131
+
2132
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java and UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/TestEmv.java`
2133
+
2134
+
2135
+
2136
+ Purpose:
2137
+ UpdateContactAIDParameters,UseTLVString
2138
+
2139
+ AIDTLV
2140
+ Tag:
2141
+ M:
2142
+ 9F06:AID
2143
+ 9F09:TerminalApplicationVersion(eg:0001)
2144
+ DF11:TAC-Default(eg:0000000000)
2145
+ DF12:TAC-Online(eg:DC4004F800)
2146
+ DF13:TAG-Denial(eg:0000000000)
2147
+ DF14:DefaultDDOL(eg:9F3704)
2148
+ 9F1B:TerminalFloorLimit(eg:00000000)
2149
+ O:
2150
+ DF01: Application Select Indicator (eg:00-Partial Match 01-Full
2151
+ Match)
2152
+ DF02:TerminalApplicationPriority(eg:00-0F)
2153
+ DF22:DefaultTDOL(eg:9F0206)
2154
+ DF15:ThresholdValue(eg:000000002000)
2155
+ DF16:MaxTargetPercentage(eg:00)
2156
+ DF17:TargetPercentage(eg:00)
2157
+ 9F01:AcquirerID(eg:303030313131)
2158
+ 9F33:TerminalCapabilities(eg:E0F8C8)
2159
+ 9F1A:TerminalCountryCode(eg:0356)
2160
+
2161
+
2162
+ Signature/prototype:
2163
+ ```java
2164
+ public boolean updateContactAID_TLV(String TLV)
2165
+ ```
2166
+
2167
+
2168
+ Parameters:
2169
+ DF23:TerminalFloorLimitCheck(eg:01or00)
2170
+ 5F2A:TransactionCurrencyCode(eg:0156)
2171
+ 5F36:TransactionCurrencyCodeExponent(eg:02)
2172
+ DF24:ApplicationDefaultLabel(eg:4D617374657243617264)
2173
+ 9F16:MerchantID(eg:123456789012345123456789012345)
2174
+ 9F1C:TerminalID(eg:3132333435363738)
2175
+ 9F15:MerchantCategoryCode(eg:1122)
2176
+ 9F40:AdditionalTerminalCapabilities(eg:F000F0A001)
2177
+ 9F35:TerminalType(eg:22)
2178
+ Note:M---Mandatory O--Optional
2179
+ Eg:
2180
+ 9F0607A00000000410109F09020002DF010100DF020100DF1105000
2181
+ 0000000DF13050010000000DF1205DC4004F800DF22039F0206DF1
2182
+ 4039F3704DF1506000000002000DF170100DF1601009F1B0400000
2183
+ 0009F01063030303131319F3303E0F8C89F1A020682DF230101
2184
+ Funs.Find_TLV
2185
+ Funs.AddChild_TLV
2186
+ Funs.New_TLV
2187
+ Funs.Remove_TLV
2188
+ YoucanusetheseApistoconstructTLV
2189
+
2190
+
2191
+ Return value:
2192
+ truefalse
2193
+
2194
+
2195
+ Usage notes:
2196
+ Payattentiontothedatalengthandformat
2197
+
2198
+
2199
+ Source details:
2200
+ ```text
2201
+ Declare: public boolean updateContactAID_TLV(String TLV)
2202
+ Description: UpdateContactAIDParameters,UseTLVString
2203
+
2204
+ AIDTLV
2205
+ Tag:
2206
+ M:
2207
+ 9F06:AID
2208
+ 9F09:TerminalApplicationVersion(eg:0001)
2209
+ DF11:TAC-Default(eg:0000000000)
2210
+ DF12:TAC-Online(eg:DC4004F800)
2211
+ DF13:TAG-Denial(eg:0000000000)
2212
+ DF14:DefaultDDOL(eg:9F3704)
2213
+ 9F1B:TerminalFloorLimit(eg:00000000)
2214
+ O:
2215
+ DF01: Application Select Indicator (eg:00-Partial Match 01-Full
2216
+ Match)
2217
+ DF02:TerminalApplicationPriority(eg:00-0F)
2218
+ DF22:DefaultTDOL(eg:9F0206)
2219
+ DF15:ThresholdValue(eg:000000002000)
2220
+ DF16:MaxTargetPercentage(eg:00)
2221
+ DF17:TargetPercentage(eg:00)
2222
+ 9F01:AcquirerID(eg:303030313131)
2223
+ 9F33:TerminalCapabilities(eg:E0F8C8)
2224
+ 9F1A:TerminalCountryCode(eg:0356)
2225
+ Parameters:
2226
+ DF23:TerminalFloorLimitCheck(eg:01or00)
2227
+ 5F2A:TransactionCurrencyCode(eg:0156)
2228
+ 5F36:TransactionCurrencyCodeExponent(eg:02)
2229
+ DF24:ApplicationDefaultLabel(eg:4D617374657243617264)
2230
+ 9F16:MerchantID(eg:123456789012345123456789012345)
2231
+ 9F1C:TerminalID(eg:3132333435363738)
2232
+ 9F15:MerchantCategoryCode(eg:1122)
2233
+ 9F40:AdditionalTerminalCapabilities(eg:F000F0A001)
2234
+ 9F35:TerminalType(eg:22)
2235
+ Note:M---Mandatory O--Optional
2236
+ Eg:
2237
+ 9F0607A00000000410109F09020002DF010100DF020100DF1105000
2238
+ 0000000DF13050010000000DF1205DC4004F800DF22039F0206DF1
2239
+ 4039F3704DF1506000000002000DF170100DF1601009F1B0400000
2240
+ 0009F01063030303131319F3303E0F8C89F1A020682DF230101
2241
+ Funs.Find_TLV
2242
+ Funs.AddChild_TLV
2243
+ Funs.New_TLV
2244
+ Funs.Remove_TLV
2245
+ YoucanusetheseApistoconstructTLV
2246
+ Return: truefalse
2247
+ Remark: Payattentiontothedatalengthandformat
2248
+ ```
2249
+
2250
+ ### EMV API / updateContactlessAID_TLV
2251
+
2252
+ - Source section: `1.39`
2253
+
2254
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2255
+
2256
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java and UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/TestEmv.java`
2257
+
2258
+
2259
+
2260
+ Purpose:
2261
+ UpdateContactlessAIDParameters,UseTLVString
2262
+
2263
+ AIDTLV
2264
+ Note:M---Mandatory O--Optional
2265
+ Tag:
2266
+ M:
2267
+ 9F06: ApplicationIdentifier
2268
+ ContantPara.NfcCardType.MasterCard:
2269
+ DF8120:TerminalActionCodesDefault
2270
+ DF8121:TerminalActionCodesDenial
2271
+ DF8122:TerminalActionCodesOnLine
2272
+ DF8123:FloorLimit
2273
+ DF8124:NoOnDeviceCVM
2274
+ DF8125:OnDeviceCVM
2275
+ DF8126:CVMRequiredLimit
2276
+ DF811A:DefaultUDOL
2277
+ 9F1D:TerminalRiskManagement
2278
+ DF811B:KernelConfiguration
2279
+ DF8117:CardDataInputCapability
2280
+ DF8118:CVMCapabilityPerCVMRequired
2281
+ DF8119: CVMCapabilityNoCVMRequired
2282
+ DF811E:MagStripeCVMCapabilityCVMRequired
2283
+
2284
+
2285
+ Signature/prototype:
2286
+ ```java
2287
+ nfcCardType,String TLV)
2288
+ ```
2289
+
2290
+
2291
+ Parameters:
2292
+ DF811F:SecurityCapability
2293
+ DF812C:MagStripeCVMCapabilityPerNoCVMRequired
2294
+ Eg:
2295
+ 9F0607A00000000410109F09020002DF81170160DF81180160DF811
2296
+ 90108DF811A039F6A04DF811B0130DF810C01029F6D020001DF81
2297
+ 1E0110DF812C0100DF812306000000000000DF8124060000500000
2298
+ 00DF812506000050000000DF812606000000030000DF811F0108DF
2299
+ 812205FC50BCF800DF8121050000000000DF812005FC50BC80009
2300
+ F1D086C7A000000000000
2301
+ ContantPara.NfcCardType.VisaCard:
2302
+ 9F66:TerminalTransactionQualifiers
2303
+ 9F92810D:TransactionLimit
2304
+ 9F92810E:CvmRequiredLimit
2305
+ 9F92810F:FloorLimit
2306
+ 9F92810A:LimitSwitch
2307
+ 9F928102:ProRestrictionDisable
2308
+ Eg:
2309
+ 9F0607A00000000310109F6604360040009F92810D0699999999999
2310
+ 99F92810F060000000000009F92810E060000005000009F92810A02
2311
+ FE009F1B0400000000
2312
+
2313
+
2314
+ Return value:
2315
+ truefalse
2316
+
2317
+
2318
+ Usage notes:
2319
+ Payattentiontothedatalengthandformat
2320
+
2321
+
2322
+ Source details:
2323
+ ```text
2324
+ public boolean updateContactlessAID_TLV(ContantPara.NfcCardType
2325
+ Declare:
2326
+ nfcCardType,String TLV)
2327
+ Description: UpdateContactlessAIDParameters,UseTLVString
2328
+
2329
+ AIDTLV
2330
+ Note:M---Mandatory O--Optional
2331
+ Tag:
2332
+ M:
2333
+ 9F06: ApplicationIdentifier
2334
+ ContantPara.NfcCardType.MasterCard:
2335
+ DF8120:TerminalActionCodesDefault
2336
+ DF8121:TerminalActionCodesDenial
2337
+ DF8122:TerminalActionCodesOnLine
2338
+ DF8123:FloorLimit
2339
+ DF8124:NoOnDeviceCVM
2340
+ DF8125:OnDeviceCVM
2341
+ DF8126:CVMRequiredLimit
2342
+ DF811A:DefaultUDOL
2343
+ 9F1D:TerminalRiskManagement
2344
+ DF811B:KernelConfiguration
2345
+ DF8117:CardDataInputCapability
2346
+ DF8118:CVMCapabilityPerCVMRequired
2347
+ DF8119: CVMCapabilityNoCVMRequired
2348
+ DF811E:MagStripeCVMCapabilityCVMRequired
2349
+ Parameters:
2350
+ DF811F:SecurityCapability
2351
+ DF812C:MagStripeCVMCapabilityPerNoCVMRequired
2352
+ Eg:
2353
+ 9F0607A00000000410109F09020002DF81170160DF81180160DF811
2354
+ 90108DF811A039F6A04DF811B0130DF810C01029F6D020001DF81
2355
+ 1E0110DF812C0100DF812306000000000000DF8124060000500000
2356
+ 00DF812506000050000000DF812606000000030000DF811F0108DF
2357
+ 812205FC50BCF800DF8121050000000000DF812005FC50BC80009
2358
+ F1D086C7A000000000000
2359
+ ContantPara.NfcCardType.VisaCard:
2360
+ 9F66:TerminalTransactionQualifiers
2361
+ 9F92810D:TransactionLimit
2362
+ 9F92810E:CvmRequiredLimit
2363
+ 9F92810F:FloorLimit
2364
+ 9F92810A:LimitSwitch
2365
+ 9F928102:ProRestrictionDisable
2366
+ Eg:
2367
+ 9F0607A00000000310109F6604360040009F92810D0699999999999
2368
+ 99F92810F060000000000009F92810E060000005000009F92810A02
2369
+ FE009F1B0400000000
2370
+
2371
+ Return: truefalse
2372
+ Remark: Payattentiontothedatalengthandformat
2373
+ ```
2374
+
2375
+ ### EMV API / updateCAPK_TLV
2376
+
2377
+ - Source section: `1.40`
2378
+
2379
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2380
+
2381
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2382
+
2383
+
2384
+
2385
+ Purpose:
2386
+ UpdateCAPKParameters,UseTLVString
2387
+ cardSlot:ICC,PICC,UNKNOWN
2388
+ ICC-contact
2389
+ PICC-contactless
2390
+ UNKNOWN-contactandcontactless
2391
+ Tag:
2392
+ M:
2393
+ 9F06:RID
2394
+ 9F22:Index
2395
+ DF02:Modulus
2396
+ DF04:Exponent
2397
+ O:
2398
+ DF03:CheckSum
2399
+ DF05:ExpiredDate
2400
+ DF07:AlgorithmIndicator
2401
+ Note:M---Mandatory O--Optional
2402
+
2403
+
2404
+ Signature/prototype:
2405
+ ```java
2406
+ cardSlot,String TLV)
2407
+ ```
2408
+
2409
+
2410
+ Parameters:
2411
+ Eg:
2412
+ 9F0605A0000000039F220108DF040103DF050420401231DF0281B0
2413
+ D9FD6ED75D51D0E30664BD157023EAA1FFA871E4DA65672B863
2414
+ D255E81E137A51DE4F72BCC9E44ACE12127F87E263D3AF9DD9C
2415
+ F35CA4A7B01E907000BA85D24954C2FCA3074825DDD4C0C8F186
2416
+ CB020F683E02F2DEAD3969133F06F7845166ACEB57CA0FC26034
2417
+ 45469811D293BFEFBAFAB57631B3DD91E796BF850A25012F1AE3
2418
+ 8F05AA5C4D6D03B1DC2E568612785938BBC9B3CD3A910C1DA55
2419
+ A5A9218ACE0F7A21287752682F15832A678D6E1ED0BDF03130000
2420
+ 0000000000000000000000000000000000
2421
+ Funs.Find_TLV
2422
+ Funs.AddChild_TLV
2423
+ Funs.New_TLV
2424
+ Funs.Remove_TLV
2425
+ YoucanusetheseApistoconstructTLV
2426
+
2427
+
2428
+ Return value:
2429
+ truefalse
2430
+
2431
+
2432
+ Usage notes:
2433
+ Payattentiontothedatalengthandformat
2434
+
2435
+
2436
+ Source details:
2437
+ ```text
2438
+ Public boolean updateCAPK_TLV(ContantPara.CardSlot
2439
+ Declare: cardSlot,String TLV)
2440
+ Description: UpdateCAPKParameters,UseTLVString
2441
+ cardSlot:ICC,PICC,UNKNOWN
2442
+ ICC-contact
2443
+ PICC-contactless
2444
+ UNKNOWN-contactandcontactless
2445
+ Tag:
2446
+ M:
2447
+ 9F06:RID
2448
+ 9F22:Index
2449
+ DF02:Modulus
2450
+ DF04:Exponent
2451
+ O:
2452
+ DF03:CheckSum
2453
+ DF05:ExpiredDate
2454
+ DF07:AlgorithmIndicator
2455
+ Note:M---Mandatory O--Optional
2456
+ Parameters:
2457
+ Eg:
2458
+ 9F0605A0000000039F220108DF040103DF050420401231DF0281B0
2459
+ D9FD6ED75D51D0E30664BD157023EAA1FFA871E4DA65672B863
2460
+ D255E81E137A51DE4F72BCC9E44ACE12127F87E263D3AF9DD9C
2461
+ F35CA4A7B01E907000BA85D24954C2FCA3074825DDD4C0C8F186
2462
+ CB020F683E02F2DEAD3969133F06F7845166ACEB57CA0FC26034
2463
+ 45469811D293BFEFBAFAB57631B3DD91E796BF850A25012F1AE3
2464
+ 8F05AA5C4D6D03B1DC2E568612785938BBC9B3CD3A910C1DA55
2465
+ A5A9218ACE0F7A21287752682F15832A678D6E1ED0BDF03130000
2466
+ Funs.Find_TLV
2467
+ Funs.AddChild_TLV
2468
+ Funs.New_TLV
2469
+ Funs.Remove_TLV
2470
+ YoucanusetheseApistoconstructTLV
2471
+
2472
+ Return: truefalse
2473
+ Remark: Payattentiontothedatalengthandformat
2474
+ ```
2475
+
2476
+ ### EMV API / exportLogFilesToExternalStorage
2477
+
2478
+ - Source section: `1.41`
2479
+
2480
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2481
+
2482
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2483
+
2484
+
2485
+
2486
+ Purpose:
2487
+ Exportlogfilesfrominternalstoragetoexternalstorage
2488
+
2489
+
2490
+ Signature/prototype:
2491
+ ```java
2492
+ context)
2493
+ ```
2494
+
2495
+
2496
+ Parameters:
2497
+ context:usedtogetinternalstoragepath
2498
+
2499
+
2500
+ Return value:
2501
+ truefalse
2502
+
2503
+
2504
+ Usage notes:
2505
+ usedtogetinternalstoragepath
2506
+
2507
+
2508
+ Source details:
2509
+ ```text
2510
+ public static boolean exportLogFilesToExternalStorage(Context
2511
+ Declare:
2512
+ context)
2513
+ Description: Exportlogfilesfrominternalstoragetoexternalstorage
2514
+ Parameters: context:usedtogetinternalstoragepath
2515
+ Return: truefalse
2516
+ Remark: usedtogetinternalstoragepath
2517
+ ```
2518
+
2519
+ ### EMV API / getNfcCvmCode
2520
+
2521
+ - Source section: `1.42`
2522
+
2523
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2524
+
2525
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2526
+
2527
+
2528
+
2529
+ Purpose:
2530
+ GetstheCVMcodefromthecurrentNFCtransaction
2531
+
2532
+
2533
+ Signature/prototype:
2534
+ ```java
2535
+ public int getNfcCvmCode()
2536
+ ```
2537
+
2538
+
2539
+ Parameters:
2540
+ null
2541
+ Anintegercodeindicatingtherequiredverificationmethod.
2542
+  0x00-Noverificationrequired(NOCVM)
2543
+  0x10-Signatureverificationrequired(SIGNATURE)
2544
+
2545
+
2546
+ Return value:
2547
+  0x20-OnlinePINverificationrequired(ONLINEPIN)
2548
+  0x30-Confirmationcodehasbeenverified(CONFIRMATION
2549
+ CODEVERIFIED)
2550
+  0xF0-NotApplicable(N/A)
2551
+
2552
+
2553
+ Usage notes:
2554
+ None
2555
+
2556
+
2557
+ Source details:
2558
+ ```text
2559
+ Declare: public int getNfcCvmCode()
2560
+ Description: GetstheCVMcodefromthecurrentNFCtransaction
2561
+ Parameters: null
2562
+ Anintegercodeindicatingtherequiredverificationmethod.
2563
+  0x00-Noverificationrequired(NOCVM)
2564
+  0x10-Signatureverificationrequired(SIGNATURE)
2565
+ Return:  0x20-OnlinePINverificationrequired(ONLINEPIN)
2566
+  0x30-Confirmationcodehasbeenverified(CONFIRMATION
2567
+ CODEVERIFIED)
2568
+  0xF0-NotApplicable(N/A)
2569
+ Remark: None
2570
+ ```
2571
+
2572
+ ### EMV API / getODAstatus
2573
+
2574
+ - Source section: `1.43`
2575
+
2576
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2577
+
2578
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2579
+
2580
+
2581
+
2582
+ Purpose:
2583
+ GetstheODAresultofthetransaction
2584
+
2585
+
2586
+ Signature/prototype:
2587
+ ```java
2588
+ publicbyte getODAstatus()
2589
+ ```
2590
+
2591
+
2592
+ Parameters:
2593
+ null
2594
+  0x01 SDAFail
2595
+  0x02 DDAFail
2596
+  0x03 CDAFail
2597
+  0x04 FDDAFail
2598
+
2599
+
2600
+ Return value:
2601
+  0x81 SDASUCESS
2602
+  0x82 DDASUCESS
2603
+  0x83 CDASUCESS
2604
+  0x84 FDDASUCESS
2605
+
2606
+
2607
+ Usage notes:
2608
+ onlyusedformastercardandvisacard
2609
+
2610
+
2611
+ Source details:
2612
+ ```text
2613
+ Declare: publicbyte getODAstatus()
2614
+ Description: GetstheODAresultofthetransaction
2615
+ Parameters: null
2616
+  0x01 SDAFail
2617
+  0x02 DDAFail
2618
+  0x03 CDAFail
2619
+  0x04 FDDAFail
2620
+ Return:
2621
+  0x81 SDASUCESS
2622
+  0x82 DDASUCESS
2623
+  0x83 CDASUCESS
2624
+  0x84 FDDASUCESS
2625
+
2626
+ Remark: onlyusedformastercardandvisacard
2627
+ ```
2628
+
2629
+ ### EMV API / setApproveRespcodeList
2630
+
2631
+ - Source section: `1.44`
2632
+
2633
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2634
+
2635
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2636
+
2637
+
2638
+
2639
+ Purpose:
2640
+ transactionfromthehost.
2641
+ respcodeList:AuthorisationResponseCodeList,Separatewith'|'.such
2642
+
2643
+
2644
+ Signature/prototype:
2645
+ ```java
2646
+ public boolean setApproveRespcodeList(StringrespcodeList)
2647
+ ```
2648
+
2649
+
2650
+ Parameters:
2651
+ as"00|10|11"
2652
+
2653
+
2654
+ Return value:
2655
+ trueorfalse
2656
+
2657
+
2658
+ Usage notes:
2659
+ onlyusedforcontacttrade.
2660
+ 2.Callback function
2661
+
2662
+
2663
+ Source details:
2664
+ ```text
2665
+ Declare: public boolean setApproveRespcodeList(StringrespcodeList)
2666
+ SettheAuthorizationResponseCodelistthatindicatesanapproved
2667
+ Description:
2668
+ transactionfromthehost.
2669
+ respcodeList:AuthorisationResponseCodeList,Separatewith'|'.such
2670
+ Parameters:
2671
+ as"00|10|11"
2672
+ Return: trueorfalse
2673
+ Remark: onlyusedforcontacttrade.
2674
+ 2.Callback function
2675
+ ```
2676
+
2677
+ ### EMV Callback / onRequestSetAmount
2678
+
2679
+ - Source section: `2.01`
2680
+
2681
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2682
+
2683
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2684
+
2685
+
2686
+
2687
+ Purpose:
2688
+ atstartEmv,thiscallback will not betriggered.Tocancelthe
2689
+ process,call cancelSetAmount.
2690
+
2691
+
2692
+ Signature/prototype:
2693
+ ```java
2694
+ voidonRequestSetAmount()
2695
+ ```
2696
+
2697
+
2698
+ Return value:
2699
+ None
2700
+
2701
+
2702
+ Simplified example:
2703
+ ```java
2704
+ public void onRequestSetAmount() {
2705
+ emv.setAmountEx(100L, 0L);
2706
+ }
2707
+ ```
2708
+
2709
+
2710
+ Source details:
2711
+ ```text
2712
+ Declare: voidonRequestSetAmount()
2713
+ Requestinput of amountin theEMV process.If amountis input
2714
+ Description: atstartEmv,thiscallback will not betriggered.Tocancelthe
2715
+ process,call cancelSetAmount.
2716
+ Return: None
2717
+ ```
2718
+
2719
+ ### EMV Callback / onRequestConfirmCardno
2720
+
2721
+ - Source section: `2.02`
2722
+
2723
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2724
+
2725
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2726
+
2727
+
2728
+
2729
+ Purpose:
2730
+ Confirm theCardnumber,shouldcallsendConfirmCardnoResult(true)
2731
+
2732
+
2733
+ Signature/prototype:
2734
+ ```java
2735
+ voidonRequestConfirmCardno()
2736
+ ```
2737
+
2738
+
2739
+ Simplified example:
2740
+ ```java
2741
+ public void onRequestConfirmCardno() {
2742
+ emv.sendConfirmCardnoResult(true);
2743
+ }
2744
+ ```
2745
+
2746
+
2747
+ Source details:
2748
+ ```text
2749
+ Declare: voidonRequestConfirmCardno()
2750
+ Description:
2751
+ Confirm theCardnumber,shouldcallsendConfirmCardnoResult(true)
2752
+ Return:
2753
+ ```
2754
+
2755
+ ### EMV Callback / onReturnCheckCardResult
2756
+
2757
+ - Source section: `2.03`
2758
+
2759
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2760
+
2761
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2762
+
2763
+
2764
+
2765
+ Purpose:
2766
+ card.
2767
+
2768
+ •Seeenum CheckCardResult
2769
+ Key: StripInfo
2770
+
2771
+
2772
+ Signature/prototype:
2773
+ ```java
2774
+ checkCardResult, Hashtable<String,String>
2775
+ decodeData)
2776
+ Returntheresultsinresponsetoaswiped, insertedor tapped
2777
+ ```
2778
+
2779
+
2780
+ Return value:
2781
+ CardNo
2782
+
2783
+
2784
+ Source details:
2785
+ ```text
2786
+ voidonReturnCheckCardResult(CheckCardResult
2787
+ Declare: checkCardResult, Hashtable<String,String>
2788
+ decodeData)
2789
+ Returntheresultsinresponsetoaswiped, insertedor tapped
2790
+ Description:
2791
+ card.
2792
+
2793
+ •Seeenum CheckCardResult
2794
+ Key: StripInfo
2795
+ Return: CardNo
2796
+ ```
2797
+
2798
+ ### EMV Callback / onRequestSelectApplication
2799
+
2800
+ - Source section: `2.04`
2801
+
2802
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2803
+
2804
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2805
+
2806
+
2807
+
2808
+ Purpose:
2809
+ canceltheprocess, call cancelSelectApplication.
2810
+ Returnalist of applications supportedbythemPOSdevice and
2811
+
2812
+
2813
+ Signature/prototype:
2814
+ ```java
2815
+ voidonRequestSelectApplication(ArrayList<String> appList)
2816
+ ```
2817
+
2818
+
2819
+ Return value:
2820
+ theEMV chipcard.Theapplications aresortedbypriority,where
2821
+ index0 isthehighestpriority.
2822
+
2823
+
2824
+ Simplified example:
2825
+ ```java
2826
+ public void onRequestSelectApplication(ArrayList<String> apps) {
2827
+ emv.selectApplication(0);
2828
+ }
2829
+ ```
2830
+
2831
+
2832
+ Source details:
2833
+ ```text
2834
+ Declare: voidonRequestSelectApplication(ArrayList<String> appList)
2835
+ Requestselection of anapplication from thereturnedlist.To
2836
+ Description:
2837
+ canceltheprocess, call cancelSelectApplication.
2838
+ Returnalist of applications supportedbythemPOSdevice and
2839
+ Return: theEMV chipcard.Theapplications aresortedbypriority,where
2840
+ index0 isthehighestpriority.
2841
+ ```
2842
+
2843
+ ### EMV Callback / onRequestPinEntry
2844
+
2845
+ - Source section: `2.05`
2846
+
2847
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2848
+
2849
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2850
+
2851
+
2852
+
2853
+ Purpose:
2854
+ theprocess, call cancelPinEntry.This callbackcan betriggered
2855
+ bystartKernel.
2856
+ IndicatethePINentrysource, seePinEntrySource
2857
+
2858
+
2859
+ Signature/prototype:
2860
+ ```java
2861
+ voidonRequestPinEntry(PinEntrySource pinEntrySource)
2862
+ ```
2863
+
2864
+
2865
+ Return value:
2866
+ enumeration.
2867
+
2868
+
2869
+ Simplified example:
2870
+ ```java
2871
+ public void onRequestPinEntry(ContantPara.PinEntrySource source) {
2872
+ emv.sendPinEntry();
2873
+ }
2874
+ ```
2875
+
2876
+
2877
+ Source details:
2878
+ ```text
2879
+ Declare: voidonRequestPinEntry(PinEntrySource pinEntrySource)
2880
+ RequestPIN entryfrom thespecifiedPinEntrySource.Tocancel
2881
+ Description: theprocess, call cancelPinEntry.This callbackcan betriggered
2882
+ bystartKernel.
2883
+ IndicatethePINentrysource, seePinEntrySource
2884
+ Return:
2885
+ enumeration.
2886
+ ```
2887
+
2888
+ ### EMV Callback / onRequestFinalConfirm
2889
+
2890
+ - Source section: `2.06`
2891
+
2892
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2893
+
2894
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2895
+
2896
+
2897
+
2898
+ Purpose:
2899
+ thefirst generateAC command.Toproceedor cancelthe
2900
+ transaction, call sendFinalConfirmResult.
2901
+
2902
+
2903
+ Signature/prototype:
2904
+ ```java
2905
+ voidonRequestFinalConfirm()
2906
+ ```
2907
+
2908
+
2909
+ Return value:
2910
+ None
2911
+
2912
+
2913
+ Source details:
2914
+ ```text
2915
+ Declare: voidonRequestFinalConfirm()
2916
+ TheEMV processrequest fora finalconfirmation beforecalling
2917
+ Description: thefirst generateAC command.Toproceedor cancelthe
2918
+ transaction, call sendFinalConfirmResult.
2919
+ Return: None
2920
+ ```
2921
+
2922
+ ### EMV Callback / onRequestOnlineProcess
2923
+
2924
+ - Source section: `2.07`
2925
+
2926
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2927
+
2928
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2929
+
2930
+
2931
+
2932
+ Purpose:
2933
+ transaction, call sendOnlineProcessResult.
2934
+
2935
+ Aset of transaction datainTag-Length-Valueformatthat should
2936
+ besent backtoonline server.
2937
+
2938
+
2939
+ Signature/prototype:
2940
+ ```java
2941
+ voidonRequestOnlineProcess(String tlv,StringdataKsn)
2942
+ ```
2943
+
2944
+
2945
+ Return value:
2946
+ Tlv:TLVdata
2947
+ dataKsn:KSN fordataencryption
2948
+
2949
+
2950
+ Simplified example:
2951
+ ```java
2952
+ public void onRequestOnlineProcess(String cardTlvData, String dataKsn) {
2953
+ // Send cardTlvData as field 55, then return issuer TLV.
2954
+ emv.sendOnlineProcessResult("8A023030");
2955
+ }
2956
+ ```
2957
+
2958
+
2959
+ Source details:
2960
+ ```text
2961
+ Declare: voidonRequestOnlineProcess(String tlv,StringdataKsn)
2962
+ Requestthetransactiongo online.Toproceedor terminatethe
2963
+ Description:
2964
+ transaction, call sendOnlineProcessResult.
2965
+
2966
+ Aset of transaction datainTag-Length-Valueformatthat should
2967
+ besent backtoonline server.
2968
+ Return:
2969
+ Tlv:TLVdata
2970
+ dataKsn:KSN fordataencryption
2971
+ ```
2972
+
2973
+ ### EMV Callback / onReturnBatchData
2974
+
2975
+ - Source section: `2.08`
2976
+
2977
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
2978
+
2979
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
2980
+
2981
+
2982
+
2983
+ Purpose:
2984
+ Returnthebatchdataafter completionof an EMV transaction.
2985
+ Aset of transaction datainTag-Length-Valueformatthat should
2986
+
2987
+
2988
+ Signature/prototype:
2989
+ ```java
2990
+ voidonReturnBatchData(String tlv)
2991
+ ```
2992
+
2993
+
2994
+ Return value:
2995
+ besent backtoserver forprocessing.(Usein offlineapprove)
2996
+
2997
+
2998
+ Source details:
2999
+ ```text
3000
+ Declare: voidonReturnBatchData(String tlv)
3001
+ Description: Returnthebatchdataafter completionof an EMV transaction.
3002
+ Aset of transaction datainTag-Length-Valueformatthat should
3003
+ Return:
3004
+ besent backtoserver forprocessing.(Usein offlineapprove)
3005
+ ```
3006
+
3007
+ ### EMV Callback / onReturnTransactionResult
3008
+
3009
+ - Source section: `2.09`
3010
+
3011
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3012
+
3013
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3014
+
3015
+
3016
+
3017
+ Purpose:
3018
+ Returnthetransactionresult.
3019
+ Indicatethetransactionresult, seeTransactionResult
3020
+
3021
+
3022
+ Signature/prototype:
3023
+ ```java
3024
+ voidonReturnTransactionResult(TransactionResult transResult)
3025
+ ```
3026
+
3027
+
3028
+ Return value:
3029
+ enumeration.
3030
+
3031
+
3032
+ Simplified example:
3033
+ ```java
3034
+ public void onReturnTransactionResult(ContantPara.TransactionResult result) {
3035
+ if (result == ContantPara.TransactionResult.ONLINE_APPROVAL ||
3036
+ result == ContantPara.TransactionResult.OFFLINE_APPROVAL) {
3037
+ // complete approved transaction
3038
+ } else {
3039
+ // decline, reverse, or show failure according to business rules
3040
+ }
3041
+ }
3042
+ ```
3043
+
3044
+
3045
+ Source details:
3046
+ ```text
3047
+ Declare: voidonReturnTransactionResult(TransactionResult transResult)
3048
+ Description: Returnthetransactionresult.
3049
+ Indicatethetransactionresult, seeTransactionResult
3050
+ Return:
3051
+ enumeration.
3052
+ ```
3053
+
3054
+ ### EMV Callback / onRequestDisplayText
3055
+
3056
+ - Source section: `2.10`
3057
+
3058
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3059
+
3060
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3061
+
3062
+
3063
+
3064
+ Purpose:
3065
+ Returnthemessage toprompt customer.
3066
+ Indicatethemessageto bedisplayed, seeDisplayText
3067
+
3068
+
3069
+ Signature/prototype:
3070
+ ```java
3071
+ voidonRequestDisplayText(DisplayText displayText)
3072
+ ```
3073
+
3074
+
3075
+ Return value:
3076
+ enumeration.
3077
+
3078
+
3079
+ Source details:
3080
+ ```text
3081
+ Declare: voidonRequestDisplayText(DisplayText displayText)
3082
+ Description: Returnthemessage toprompt customer.
3083
+ Indicatethemessageto bedisplayed, seeDisplayText
3084
+ Return:
3085
+ enumeration.
3086
+ ```
3087
+
3088
+ ### EMV Callback / onRequestOfflinePinEntry
3089
+
3090
+ - Source section: `2.11`
3091
+
3092
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3093
+
3094
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3095
+
3096
+
3097
+
3098
+ Purpose:
3099
+ Usuallynotuse
3100
+
3101
+
3102
+ Signature/prototype:
3103
+ ```java
3104
+ pinEntrySource,int PinTryCount);
3105
+ ```
3106
+
3107
+
3108
+ Source details:
3109
+ ```text
3110
+ voidonRequestOfflinePinEntry(ContantPara.PinEntrySource
3111
+ Declare:
3112
+ pinEntrySource,int PinTryCount);
3113
+ Description: Usuallynotuse
3114
+ Return:
3115
+ ```
3116
+
3117
+ ### EMV Callback / onRequestOfflinePINVerify
3118
+
3119
+ - Source section: `2.12`
3120
+
3121
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3122
+
3123
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3124
+
3125
+
3126
+
3127
+ Purpose:
3128
+ Offlinepinverify(use inAndroidos8.0)
3129
+
3130
+
3131
+ Signature/prototype:
3132
+ ```java
3133
+ pinEntrySource,int pinEntryType, Bundlebundle);
3134
+ ```
3135
+
3136
+
3137
+ Parameters:
3138
+ pinEntrySource-seeeuam ContantPara.PinEntrySource
3139
+
3140
+ pinEntryType:0-----Offline PlainPin1--- OfflineencryptionPin
3141
+ bundle:key: ModuleLen
3142
+
3143
+
3144
+ Return value:
3145
+ Module
3146
+ ExponentLen
3147
+ Exponent
3148
+
3149
+
3150
+ Usage notes:
3151
+ Pleasecheckthesampledemoapp
3152
+
3153
+
3154
+ Simplified example:
3155
+ ```java
3156
+ public void onRequestOfflinePINVerify(ContantPara.PinEntrySource source, int type, Bundle data) {
3157
+ int retries = emv.getOfflinePinTryTimes();
3158
+ // collect offline PIN, then call sendOfflinePINVerifyResult(result) when required
3159
+ }
3160
+ ```
3161
+
3162
+
3163
+ Source details:
3164
+ ```text
3165
+ voidonRequestOfflinePINVerify(ContantPara.PinEntrySource
3166
+ Declare:
3167
+ pinEntrySource,int pinEntryType, Bundlebundle);
3168
+ Description: Offlinepinverify(use inAndroidos8.0)
3169
+ Parameters: pinEntrySource-seeeuam ContantPara.PinEntrySource
3170
+
3171
+ pinEntryType:0-----Offline PlainPin1--- OfflineencryptionPin
3172
+ bundle:key: ModuleLen
3173
+ Return: Module
3174
+ ExponentLen
3175
+ Exponent
3176
+ Remark: Pleasecheckthesampledemoapp
3177
+ ```
3178
+
3179
+ ### EMV Callback / onReturnIssuerScriptResult
3180
+
3181
+ - Source section: `2.13`
3182
+
3183
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3184
+
3185
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3186
+
3187
+
3188
+
3189
+ Purpose:
3190
+ Tlv:-field55data
3191
+
3192
+
3193
+ Signature/prototype:
3194
+ ```java
3195
+ onReturnIssuerScriptResult(ContantPara.IssuerScriptResult
3196
+ scriptResult,String tlv)
3197
+ ReturnScriptResult,tagDF31isscarptresult
3198
+ ```
3199
+
3200
+
3201
+ Return value:
3202
+ none
3203
+
3204
+
3205
+ Source details:
3206
+ ```text
3207
+ void
3208
+ Declare: onReturnIssuerScriptResult(ContantPara.IssuerScriptResult
3209
+ scriptResult,String tlv)
3210
+ ReturnScriptResult,tagDF31isscarptresult
3211
+ Description:
3212
+ Tlv:-field55data
3213
+ Return: none
3214
+ ```
3215
+
3216
+ ### EMV Callback / onNFCrequestTipsConfirm
3217
+
3218
+ - Source section: `2.14`
3219
+
3220
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3221
+
3222
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3223
+
3224
+
3225
+
3226
+ Purpose:
3227
+ messageID:checkenumNfcTipMessageID
3228
+ msg:
3229
+ PLS_REMOVE_CARD,
3230
+ PLS_USE_CONTACT_IC_CARD,//1
3231
+ NEED_SIGNATURE,//2
3232
+ END_APPLICATION,//3
3233
+ SEE_PHONE_REMOVE_AND_PRESENT_CARD,//4
3234
+ DISPLAY_BALANCE,//5
3235
+
3236
+
3237
+ Signature/prototype:
3238
+ ```java
3239
+ messageID,Stringmsg);
3240
+ ```
3241
+
3242
+
3243
+ Parameters:
3244
+ CARD_READ_OK,//6
3245
+ PLS_SECOND_TAP_CARD,//7
3246
+ APPLICATION_BLOCKED,//8
3247
+ TRY_AGAIN_RESENT_CARD,//9
3248
+ USE_MAG_STRIPE,//10
3249
+ INSERT_SWIPE_OR_TRY_ANOTHER_CARD,//11
3250
+ TERMINATE,
3251
+ CARD_ERROR,
3252
+ PROCESSING_ERROR,
3253
+ UNKNOW
3254
+
3255
+
3256
+ Usage notes:
3257
+ CalledatprocessPayPassKernel
3258
+
3259
+
3260
+ Source details:
3261
+ ```text
3262
+ void onNFCrequestTipsConfirm(ContantPara.NfcTipMessageID
3263
+ Declare:
3264
+ messageID,Stringmsg);
3265
+ Requestapplicationdisplaymassage.
3266
+ Description:
3267
+ messageID:checkenumNfcTipMessageID
3268
+ msg:
3269
+ PLS_REMOVE_CARD,
3270
+ PLS_USE_CONTACT_IC_CARD,//1
3271
+ NEED_SIGNATURE,//2
3272
+ END_APPLICATION,//3
3273
+ SEE_PHONE_REMOVE_AND_PRESENT_CARD,//4
3274
+ DISPLAY_BALANCE,//5
3275
+ Parameters: CARD_READ_OK,//6
3276
+ PLS_SECOND_TAP_CARD,//7
3277
+ APPLICATION_BLOCKED,//8
3278
+ TRY_AGAIN_RESENT_CARD,//9
3279
+ USE_MAG_STRIPE,//10
3280
+ INSERT_SWIPE_OR_TRY_ANOTHER_CARD,//11
3281
+ TERMINATE,
3282
+ CARD_ERROR,
3283
+ PROCESSING_ERROR,
3284
+ UNKNOW
3285
+
3286
+ Remark: CalledatprocessPayPassKernel
3287
+ ```
3288
+
3289
+ ### EMV Callback / onNFCrequestOnline
3290
+
3291
+ - Source section: `2.15`
3292
+
3293
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3294
+
3295
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3296
+
3297
+
3298
+
3299
+ Purpose:
3300
+ Whentransactionneedgoonline
3301
+ Hashtable:
3302
+ "KSN" :customformatksn,usuallynotuse
3303
+
3304
+
3305
+ Signature/prototype:
3306
+ ```java
3307
+ void onNFCrequestOnline (Hashtable<String,String>hashtable);
3308
+ ```
3309
+
3310
+
3311
+ Parameters:
3312
+ "TRACKDATA" :customformatdata,usuallynotuse
3313
+ "EMVDATA":contactlesstransactionTLVdata
3314
+
3315
+
3316
+ Return value:
3317
+ If0x5A(PAN)isnotreturned,pleaseParsingtag0x57togetPAN,if0x57
3318
+
3319
+
3320
+ Usage notes:
3321
+ is not returned, please check whether it's a mstrip card. For mastercard
3322
+ mstriptheTrack2EquivalentDatawillbesaveattag0x9f6b
3323
+
3324
+
3325
+ Source details:
3326
+ ```text
3327
+ Declare: void onNFCrequestOnline (Hashtable<String,String>hashtable);
3328
+ Description: Whentransactionneedgoonline
3329
+ Hashtable:
3330
+ "KSN" :customformatksn,usuallynotuse
3331
+ Parameters: "TRACKDATA" :customformatdata,usuallynotuse
3332
+ "EMVDATA":contactlesstransactionTLVdata
3333
+ Return:
3334
+ If0x5A(PAN)isnotreturned,pleaseParsingtag0x57togetPAN,if0x57
3335
+ Remark: is not returned, please check whether it's a mstrip card. For mastercard
3336
+ mstriptheTrack2EquivalentDatawillbesaveattag0x9f6b
3337
+ ```
3338
+
3339
+ ### EMV Callback / onNFCrequestImportPin
3340
+
3341
+ - Source section: `2.16`
3342
+
3343
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3344
+
3345
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3346
+
3347
+
3348
+
3349
+ Purpose:
3350
+ ParametersNotusednow
3351
+ Callthepasswordkeyboardinthiscallbackfunction,youmayneedtoget
3352
+ thecardnumber
3353
+
3354
+
3355
+ Signature/prototype:
3356
+ ```java
3357
+ voidonNFCrequestImportPin (int type, int lasttimeFlag, Stringamt);
3358
+ ```
3359
+
3360
+
3361
+ Parameters:
3362
+ You can get the card number through tag5A, if tag5A is empty, you can
3363
+ getthecardnumberthroughtag57
3364
+
3365
+
3366
+ Source details:
3367
+ ```text
3368
+ Declare: voidonNFCrequestImportPin (int type, int lasttimeFlag, Stringamt);
3369
+ ContactlessrequestimportPIN
3370
+ Description:
3371
+ ParametersNotusednow
3372
+ Callthepasswordkeyboardinthiscallbackfunction,youmayneedtoget
3373
+ thecardnumber
3374
+ Parameters:
3375
+ You can get the card number through tag5A, if tag5A is empty, you can
3376
+ getthecardnumberthroughtag57
3377
+ Return:
3378
+ Remark:
3379
+ ```
3380
+
3381
+ ### EMV Callback / onNFCTransResult
3382
+
3383
+ - Source section: `2.17`
3384
+
3385
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3386
+
3387
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3388
+
3389
+
3390
+
3391
+ Purpose:
3392
+ Returnthetransactionresulttoapplication
3393
+
3394
+ Result:
3395
+ CheckenumNfcTransResult
3396
+ ONLINE_APPROVAL,
3397
+ DECLINE_ONLINE,
3398
+ TERMINATE,
3399
+ OFFLINE_APPROVAL,
3400
+
3401
+
3402
+ Signature/prototype:
3403
+ ```java
3404
+ voidonNFCTransResult(ContantPara.NfcTransResultresult);
3405
+ ```
3406
+
3407
+
3408
+ Parameters:
3409
+ OTHER_INTERFACES,
3410
+ RETRY,
3411
+ CARD_REMOVED,
3412
+ ISSUER_SCRIPT_UPDATE_SUCCESSFUL,//8
3413
+ ISSUER_SCRIPT_UPDATE_FAILED,//9
3414
+ DECLINE_OFFLINE
3415
+ None
3416
+
3417
+
3418
+ Return value:
3419
+ If the result is OFFLINE_APPROVAL, please call getNfcCvmCode() to
3420
+ get the CVM (Cardholder Verification Method) code. Then, If the return
3421
+
3422
+
3423
+ Usage notes:
3424
+ value of the CVM code is 0x10 (indicating signature required), then
3425
+ requireasignaturewhenprintingtheslip.
3426
+
3427
+
3428
+ Source details:
3429
+ ```text
3430
+ Declare: voidonNFCTransResult(ContantPara.NfcTransResultresult);
3431
+ Description: Returnthetransactionresulttoapplication
3432
+
3433
+ Result:
3434
+ CheckenumNfcTransResult
3435
+ ONLINE_APPROVAL,
3436
+ DECLINE_ONLINE,
3437
+ TERMINATE,
3438
+ OFFLINE_APPROVAL,
3439
+ Parameters:
3440
+ OTHER_INTERFACES,
3441
+ RETRY,
3442
+ CARD_REMOVED,
3443
+ ISSUER_SCRIPT_UPDATE_SUCCESSFUL,//8
3444
+ ISSUER_SCRIPT_UPDATE_FAILED,//9
3445
+ DECLINE_OFFLINE
3446
+ None
3447
+ Return:
3448
+ If the result is OFFLINE_APPROVAL, please call getNfcCvmCode() to
3449
+ get the CVM (Cardholder Verification Method) code. Then, If the return
3450
+ Remark:
3451
+ value of the CVM code is 0x10 (indicating signature required), then
3452
+ requireasignaturewhenprintingtheslip.
3453
+ ```
3454
+
3455
+ ### EMV Callback / onNFCErrorInfor
3456
+
3457
+ - Source section: `2.18`
3458
+
3459
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3460
+
3461
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3462
+
3463
+
3464
+
3465
+ Purpose:
3466
+ Contactlesstransactionerrorcallbackfunction
3467
+ errID:checkenum NfcErrMessageID
3468
+ strErrInfo:
3469
+ ERR_LOAD_CALLBACK,
3470
+ ICS_PARAM_NOT_FIND,
3471
+ KERNEL_ERR,
3472
+
3473
+
3474
+ Signature/prototype:
3475
+ ```java
3476
+ strErrInfo);
3477
+ ```
3478
+
3479
+
3480
+ Parameters:
3481
+ ERR_PIN_LENTH,
3482
+ ERR_MULT_CARD,
3483
+ ERR_CHECK_CARD,
3484
+ AID_PARAM_NOT_FIND,
3485
+ CAPK_PARAM_NOT_FIND,
3486
+ GET_KERNEL_DATA_FAILED,
3487
+ QPBOC_FDDA_FAILED,
3488
+ PURE_ELE_CASH_CARD_NOT_ALLOW_ONLINE_TRANS,
3489
+
3490
+
3491
+ Source details:
3492
+ ```text
3493
+ void onNFCErrorInfor (ContantPara.NfcErrMessageID errID, String
3494
+ Declare:
3495
+ strErrInfo);
3496
+ Description: Contactlesstransactionerrorcallbackfunction
3497
+ errID:checkenum NfcErrMessageID
3498
+ strErrInfo:
3499
+ ERR_LOAD_CALLBACK,
3500
+ ICS_PARAM_NOT_FIND,
3501
+ KERNEL_ERR,
3502
+ Parameters: ERR_PIN_LENTH,
3503
+ ERR_MULT_CARD,
3504
+ ERR_CHECK_CARD,
3505
+ AID_PARAM_NOT_FIND,
3506
+ CAPK_PARAM_NOT_FIND,
3507
+ GET_KERNEL_DATA_FAILED,
3508
+ QPBOC_FDDA_FAILED,
3509
+ PURE_ELE_CASH_CARD_NOT_ALLOW_ONLINE_TRANS,
3510
+ Return:
3511
+
3512
+ Remark:
3513
+ ```
3514
+
3515
+ ### EMV Callback / onReturnNfcCardData
3516
+
3517
+ - Source section: `2.19`
3518
+
3519
+ - Package/class path: `com.urovo.i9000s.api.emv.EmvNfcKernelApi` / `com.urovo.i9000s.api.emv.EmvListener`
3520
+
3521
+ - Demo reference: `UrovoPosSdkDemo/app/src/main/java/com/urovo/sdk/emv/EmvActivityNew.java`
3522
+
3523
+
3524
+
3525
+ Purpose:
3526
+ ReturncontactlesstransactionTLVdata
3527
+ Hashtable:
3528
+ "KSN" :customformatksn,usuallynotuse
3529
+
3530
+
3531
+ Signature/prototype:
3532
+ ```java
3533
+ public void onReturnNfcCardData(Hashtable<String,String>hashtable)
3534
+ ```
3535
+
3536
+
3537
+ Parameters:
3538
+ "TRACKDATA" :customformatdata,usuallynotuse
3539
+ "EMVDATA":contactlesstransactionTLVdata
3540
+ "QPBOCTYPE":ifnotsupportQPBOC,itisNULL
3541
+ If0x5A(PAN)isnotreturned,pleaseParsingtag0x57togetPAN,if0x57
3542
+
3543
+
3544
+ Usage notes:
3545
+ is not returned, please check whether it's a mstrip card. For mastercard
3546
+ mstriptheTrack2EquivalentDatawillbesaveattag0x9F6B
3547
+ 3.EMV Enum
3548
+
3549
+
3550
+ Source details:
3551
+ ```text
3552
+ Declare: public void onReturnNfcCardData(Hashtable<String,String>hashtable)
3553
+ Description: ReturncontactlesstransactionTLVdata
3554
+ Hashtable:
3555
+ "KSN" :customformatksn,usuallynotuse
3556
+ Parameters:
3557
+ "TRACKDATA" :customformatdata,usuallynotuse
3558
+ "EMVDATA":contactlesstransactionTLVdata
3559
+ "QPBOCTYPE":ifnotsupportQPBOC,itisNULL
3560
+ If0x5A(PAN)isnotreturned,pleaseParsingtag0x57togetPAN,if0x57
3561
+ Remark: is not returned, please check whether it's a mstrip card. For mastercard
3562
+ mstriptheTrack2EquivalentDatawillbesaveattag0x9F6B
3563
+ 3.EMV Enum
3564
+ ```
3565
+
3566
+ ### EMV Enum / EmvOption
3567
+
3568
+ - Source section: `3.01`
3569
+
3570
+
3571
+
3572
+ Purpose:
3573
+ public static enum EmvOption
3574
+
3575
+
3576
+ Source details:
3577
+ ```text
3578
+ public static enum EmvOption
3579
+ {
3580
+ START, START_WITH_FORCE_ONLINE
3581
+ }
3582
+ ```
3583
+
3584
+ ### EMV Enum / CheckCardMode
3585
+
3586
+ - Source section: `3.02`
3587
+
3588
+
3589
+
3590
+ Purpose:
3591
+ public static enum CheckCardMode{
3592
+
3593
+
3594
+ Source details:
3595
+ ```text
3596
+ public static enum CheckCardMode{
3597
+ SWIPE, INSERT, TAP, SWIPE_OR_INSERT, SWIPE_OR_TAP,
3598
+ INSERT_OR_TAP,
3599
+ SWIPE_OR_INSERT_OR_TAP,
3600
+ }
3601
+ ```
3602
+
3603
+ ### EMV Enum / CheckCardResult
3604
+
3605
+ - Source section: `3.03`
3606
+
3607
+
3608
+
3609
+ Purpose:
3610
+ public static enum CheckCardResult{
3611
+
3612
+
3613
+ Source details:
3614
+ ```text
3615
+ public static enum CheckCardResult{
3616
+ NO_CARD INSERTED_CARD NOT_ICC BAD_SWIPE MSR USE_ICC_CARD
3617
+ , , , , , ,
3618
+ TAP_CARD_DETECTED NEED_FALLBACK TIMEOUT CANCEL DEVICE_BUSY
3619
+ , , , ,
3620
+ }
3621
+ Checkcard result Result description
3622
+ Nocardhasbeendetected,pleasecheck
3623
+ NO_CARD
3624
+ CheckCardMode
3625
+ INSERTED_CARD ICCcardhasbeeninserted
3626
+ NOT_ICC ICCcardreading failed,pleasetryto reinsertcard
3627
+ Magneticstripecardreading failed,pleasetryto
3628
+ BAD_SWIPE
3629
+ re-swipethecard
3630
+ MSR Magneticstripecardreading success
3631
+ USE_ICC_CARD Pleaseinsert ICCcard
3632
+ TAP_CARD_DETECTED Tapcardhasbeendetected
3633
+ NEED_FALLBACK PleaseTaporSwipeCard
3634
+ TIMEOUT Timeout,pleasetryto readcard again
3635
+ Cardreadinghasbeencanceled,pleasetrytoreadcard
3636
+ CANCEL
3637
+ again
3638
+ DEVICE_BUSY Cardreaderisbusy, pleasetryto read cardagain later
3639
+ MULT_CARD Multiplecardsdetected ,Please taponecard
3640
+ ```
3641
+
3642
+ ### EMV Enum / TransactionResult
3643
+
3644
+ - Source section: `3.04`
3645
+
3646
+
3647
+
3648
+ Purpose:
3649
+ public static enum TransactionResult
3650
+
3651
+
3652
+ Source details:
3653
+ ```text
3654
+ public static enum TransactionResult
3655
+ {
3656
+ OFFLINE_APPROVAL,ONLINE_APPROVAL, TERMINATED,
3657
+ OFFLINE_DECLINED,ONLINE_DECLINED, CANCELED, CANCELED_OR_TIMEOUT,
3658
+ CARD_BLOCKED_APP_FAIL, NO_EMV_APPS, ICC_CARD_REMOVED,
3659
+ SELECT_APP_FAIL, INVALID_ICC_DATA,
3660
+ APPLICATION_BLOCKED_APP_FAIL
3661
+ }
3662
+ Transaction result Result description
3663
+ OFFLINE_APPROVAL Offlinerequest hasbeen approved
3664
+
3665
+ ONLINE_APPROVAL Onlinerequesthasbeenapproved
3666
+ TERMINATED Transactionhasbeenterminated
3667
+ OFFLINE_DECLINED Offlinerequest hasbeen rejected
3668
+ ONLINE_DECLINED Onlinerequesthasbeenrejected
3669
+ CANCELED Transactionhasbeencanceled
3670
+ CANCELED_OR_TIMEOUT Transactionhasbeencanceled ortimeout
3671
+ CARD_BLOCKED_APP_FAIL Cardhasbeenblocked
3672
+ NO_EMV_APPS Terminaldoesnot supportapplicationsofcard
3673
+ ICC_CARD_REMOVED ICCcardhasbeenremoved
3674
+ SELECT_APP_FAIL Terminalhasbeenfailto selectapplication ofcard
3675
+ INVALID_ICC_DATA ICCcarddataisinvalid
3676
+ APPLICATION_BLOCKED_APP_FAIL Applicationhasbeenblocked
3677
+ ```
3678
+
3679
+ ### EMV Enum / DisplayText
3680
+
3681
+ - Source section: `3.05`
3682
+
3683
+
3684
+
3685
+ Purpose:
3686
+ public static enum DisplayText
3687
+
3688
+
3689
+ Source details:
3690
+ ```text
3691
+ public static enum DisplayText
3692
+ {
3693
+ USE_MAG_STRIPE,
3694
+ APPROVED_PLEASE_SIGN,//if CVM is Signature
3695
+ }
3696
+ ```
3697
+
3698
+ ### EMV Enum / PinEntryResult
3699
+
3700
+ - Source section: `3.06`
3701
+
3702
+
3703
+
3704
+ Purpose:
3705
+ public static enum PinEntryResult{
3706
+
3707
+
3708
+ Source details:
3709
+ ```text
3710
+ public static enum PinEntryResult{
3711
+ ENTERED, CANCEL, TIMEOUT, BYPASS, WRONG_PIN_LENGTH,
3712
+ INCORRECT_PIN
3713
+ }
3714
+ ```
3715
+
3716
+ ### EMV Enum / PinEntrySource
3717
+
3718
+ - Source section: `3.07`
3719
+
3720
+
3721
+
3722
+ Purpose:
3723
+ public static enum PinEntrySource{
3724
+
3725
+
3726
+ Source details:
3727
+ ```text
3728
+ public static enum PinEntrySource{
3729
+ PHONE, KEYPAD
3730
+ }
3731
+ ```
3732
+
3733
+ ### EMV Enum / NfcTransResult
3734
+
3735
+ - Source section: `3.08`
3736
+
3737
+
3738
+
3739
+ Purpose:
3740
+ public static enum NfcTransResult{
3741
+
3742
+
3743
+ Source details:
3744
+ ```text
3745
+ public static enum NfcTransResult{
3746
+ ONLINE_APPROVAL,
3747
+ DECLINE_ONLINE,
3748
+ TERMINATE,
3749
+ OFFLINE_APPROVAL,
3750
+ OTHER_INTERFACES,
3751
+ RETRY,
3752
+ CARD_REMOVED,
3753
+ ISSUER_SCRIPT_UPDATE_SUCCESSFUL, //8
3754
+ ISSUER_SCRIPT_UPDATE_FAILED, //9
3755
+ DECLINE_OFFLINE}
3756
+ ```
3757
+
3758
+ ### EMV Enum / NfcTipMessageID
3759
+
3760
+ - Source section: `3.09`
3761
+
3762
+
3763
+
3764
+ Purpose:
3765
+ publicstaticenumNfcTipMessageID
3766
+
3767
+
3768
+ Source details:
3769
+ ```text
3770
+ publicstaticenumNfcTipMessageID
3771
+ {
3772
+ PLS_REMOVE_CARD,
3773
+ PLS_USE_CONTACT_IC_CARD,//1
3774
+ NEED_SIGNATURE,//2
3775
+ END_APPLICATION,//3
3776
+ SEE_PHONE_REMOVE_AND_PRESENT_CARD,//4
3777
+ DISPLAY_BALANCE,//5
3778
+ CARD_READ_OK,//6
3779
+ PLS_SECOND_TAP_CARD,//7
3780
+ APPLICATION_BLOCKED,//8
3781
+ TRY_AGAIN_RESENT_CARD,//9
3782
+ USE_MAG_STRIPE,//10
3783
+ INSERT_SWIPE_OR_TRY_ANOTHER_CARD,//11
3784
+ TERMINATE,
3785
+ CARD_ERROR,
3786
+ PROCESSING_ERROR,
3787
+ UNKNOW
3788
+ }
3789
+ ```
3790
+
3791
+ ### EMV Enum / NfcErrMessageID
3792
+
3793
+ - Source section: `3.10`
3794
+
3795
+
3796
+
3797
+ Purpose:
3798
+ publicstaticenumNfcErrMessageID
3799
+
3800
+
3801
+ Source details:
3802
+ ```text
3803
+ publicstaticenumNfcErrMessageID
3804
+ {
3805
+ ERR_LOAD_CALLBACK,//0
3806
+ ICS_PARAM_NOT_FIND,//needupdateterminalparamters
3807
+ KERNEL_ERR,
3808
+ ERR_PIN_LENTH,
3809
+ ERR_MULT_CARD,
3810
+ ERR_CHECK_CARD,
3811
+ AID_PARAM_NOT_FIND,
3812
+ CAPK_PARAM_NOT_FIND,
3813
+ GET_KERNEL_DATA_FAILED,
3814
+ QPBOC_APPLICATION,//9
3815
+ QPBOC_FDDA_FAILED,
3816
+ PURE_ELE_CASH_CARD_NOT_ALLOW_ONLINE_TRANS,
3817
+ UNKNOW
3818
+ }
3819
+ ```
3820
+
3821
+ ### EMV Enum / Operation
3822
+
3823
+ - Source section: `3.11`
3824
+
3825
+
3826
+
3827
+ Purpose:
3828
+ publicstaticenumOperation
3829
+
3830
+
3831
+ Source details:
3832
+ ```text
3833
+ publicstaticenumOperation
3834
+ {
3835
+ CLEAR, //clearcontactandcontactlessAID
3836
+ ADD,
3837
+ CLEAR_EMV_AID,//onlyclearcontactAID
3838
+ CLEAR_NFC_AID//onlyclearcontactlessAID
3839
+ }
3840
+ 4.Appendix
3841
+ ```
3842
+
3843
+ ### EMV Appendix / CVM processing FAQ
3844
+
3845
+ - Source section: `4.1`
3846
+
3847
+
3848
+
3849
+ Purpose:
3850
+ Q1:Howto handleOnlinePINverification?
3851
+
3852
+
3853
+ Source details:
3854
+ ```text
3855
+ Q1:Howto handleOnlinePINverification?
3856
+ Trigger: The EMV kernel invokes the onRequestPinEntry() callback when cardholder PIN
3857
+ verificationisrequired.
3858
+ ApplicationResponse:CallgetPinBlock()orgetPinBlockEx()(refertodeviceSDK)tolaunchthe
3859
+ PINentryinterface.
3860
+ UserActionHandling:
3861
+
3862
+  Success:CallmEmvApi.sendPinEntry()toconfirmPINsubmission.
3863
+  Cancellation:CallmEmvApi.cancelPinEntry()iftheuserabortsinput.
3864
+  Skip(ifallowed):CallmEmvApi.bypassPinEntry()forscenariosbypassingPINvalidation.
3865
+ Q2:Howdoes EMVthe kernel handleofflineplainPin andofflineencrypt pin?
3866
+  TheEMVkernelhandlesPINentryandverificationautomaticallyviathePINpad.
3867
+  Noapplicationinterventionrequired(Trytestwithsampleapplication).
3868
+ Q2:Howiscardholdersignaturetriggered inEMVtransactions?
3869
+ The EMV kernel requests signature verification by invoking
3870
+ onRequestDisplayText(ContantPara.DisplayText.APPROVED_PLEASE_SIGN) with parameter
3871
+ ContantPara.DisplayText.APPROVED_PLEASE_SIGN
3872
+ ```
3873
+
3874
+ ### EMV Appendix / EMV kernel using FAQ
3875
+
3876
+ - Source section: `4.2`
3877
+
3878
+
3879
+
3880
+ Purpose:
3881
+ Q1:MissingPAN(Tag 0x5A) -Howto Fallback?​
3882
+
3883
+
3884
+ Source details:
3885
+ ```text
3886
+ Q1:MissingPAN(Tag 0x5A) -Howto Fallback?​
3887
+ if0x5Anotreturn,needuse0x57datatogetPAN.
3888
+ Q2:Howto Debug EMV(Contact/UPI) andNFC Issues?​
3889
+ 1. EnableLogging:CallLogOutEnable()API(activatesbothEMV&NFClogs).
3890
+ 2. PullLogsSeparately:PulllogsviaADB.
3891
+ 1. # For EMV (Contact/UPI) issues
3892
+ 2. adb pull /data/data/com.urovo.demos/files/UROPE/Trace.txt
3893
+ 3.
3894
+ ```
3895
+
3896
+ ### EMV Appendix / # For NFC (Contactless) issues
3897
+
3898
+ - Source section: `4.3`
3899
+
3900
+
3901
+
3902
+ Purpose:
3903
+ 5. adb pull /data/data/com.urovo.demos/files/UROPE/TraceCL.txt
3904
+
3905
+
3906
+ Source details:
3907
+ ```text
3908
+ 5. adb pull /data/data/com.urovo.demos/files/UROPE/TraceCL.txt
3909
+ Q3: OfflinePIN fails onAndroid5.1/6.0?
3910
+ Fix:CallsetContext(MainActivity.this)beforetransaction.
3911
+ ```
3912
+
3913
+ ### EMV Appendix / Contact
3914
+
3915
+ - Source section: `4.2`
3916
+
3917
+
3918
+
3919
+ Purpose:
3920
+ if you have any issue , please contact Xiray or Ron, xiaofeng.xia@urovo.com,
3921
+
3922
+
3923
+ Source details:
3924
+ ```text
3925
+ if you have any issue , please contact Xiray or Ron, xiaofeng.xia@urovo.com,
3926
+ an.luo@urovo.com ,wewill help you.
3927
+ ```