@@ -26,7 +26,9 @@ class PaymentViewController: AlertPresenterTableViewController {
2626 @IBOutlet weak var cancelButton : UIButton !
2727
2828 private var transactionType : TransactionType = . purchase
29- private var currency : Currency = UCubePaymentRequest . currencyEUR
29+ private var currency : Currency = UCubePaymentRequest . currencyGBP
30+ private var emvPaystateMachine : EMVPaymentStateMachine ?
31+
3032
3133 override func viewDidLoad( ) {
3234 super. viewDidLoad ( )
@@ -56,7 +58,8 @@ class PaymentViewController: AlertPresenterTableViewController {
5658
5759 @IBAction func cancelPayment( _ sender: Any ) {
5860 cancelButton. isEnabled = false
59- // TODO: Cancel
61+
62+ self . emvPaystateMachine? . cancel ( )
6063 }
6164
6265 @IBAction func startPayment( _ sender: Any ) {
@@ -69,18 +72,55 @@ class PaymentViewController: AlertPresenterTableViewController {
6972 return
7073 }
7174
72- var paymentRequest = UCubePaymentRequest ( )
75+ let amountValue = !enterAmountOnCubeSwitch. isOn ? UInt64 ( amount) : 0
76+ var readers = [ CardEntryMode . ICC]
77+
78+ if ( !contactOnlySwitch. isOn) {
79+ readers. append ( . NFC)
80+ }
81+
82+ let messages : [ PaymentMessages : String ] = [
83+
84+ PaymentMessages . LBL_prepare_context: " preparing context " ,
85+ PaymentMessages . LBL_authorization: " Authorization processing " ,
86+ PaymentMessages . LBL_smc_initialization: " initialization processing " ,
87+ PaymentMessages . LBL_smc_risk_management: " risque management processing " ,
88+ PaymentMessages . LBL_smc_finalization: " finalization processing " ,
89+ PaymentMessages . LBL_smc_remove_card: " remove card, please " ,
90+
91+ PaymentMessages . LBL_nfc_complete: " complete processing " ,
92+ PaymentMessages . LBL_wait_online_pin_process: " online pin processing " ,
93+ PaymentMessages . LBL_wait_card: " insert card " ,
94+
95+ PaymentMessages . LBL_approved: " Approved " ,
96+ PaymentMessages . LBL_declined: " Declined " ,
97+ PaymentMessages . LBL_unsupported_card: " Unsupported card " ,
98+ PaymentMessages . LBL_cancelled: " Cancelled " ,
99+ PaymentMessages . LBL_error: " Error " ,
100+ PaymentMessages . LBL_no_card_detected: " No card detected " ,
101+ PaymentMessages . LBL_wrong_activated_reader: " wrong activated reader " ,
102+
103+ PaymentMessages . LBL_try_other_interface: " try other interface " ,
104+ PaymentMessages . LBL_end_application: " end application " ,
105+ PaymentMessages . LBL_failed: " failed " ,
106+ PaymentMessages . LBL_wrong_nfc_outcome: " wrong nfc outcome " ,
107+
108+ PaymentMessages . LBL_wrong_cryptogram_value: " wrong cryptogram value " ,
109+ PaymentMessages . LBL_missing_required_cryptogram: " missing required cryptogram " ,
110+ PaymentMessages . GLOBAL_LBL_xposition: " 00 " ,
111+ PaymentMessages . GLOBAL_LBL_yposition: " 0C " ,
112+ PaymentMessages . GLOBAL_LBL_font_id: " 00 " ,
113+ ]
114+
115+ // non optional variables
116+ var paymentRequest = UCubePaymentRequest ( amount: amountValue, currency: currency, transactionType: transactionType, readers: readers, messages: messages, authorizationTask: AuthorizationTask ( presenter: self ) , preferredLanguages: [ " en " ] )
117+
118+ // optional variables
73119 paymentRequest. displayResult = displayResultOnCubeSwitch. isOn
74120 paymentRequest. cardWaitTimeout = cardWaitTimeout
75- paymentRequest. systemFailureInfo = true
76- paymentRequest. systemFailureInfo2 = true
77- if !enterAmountOnCubeSwitch. isOn {
78- paymentRequest. amount = UInt64 ( amount)
79- }
80- paymentRequest. currency = currency
81- paymentRequest. transactionType = transactionType
121+ paymentRequest. systemFailureInfo = false
122+ paymentRequest. systemFailureInfo2 = false
82123 paymentRequest. transactionDate = Date ( )
83- paymentRequest. preferredLanguages = [ " en " ]
84124 paymentRequest. forceAuthorization = forceAuthorizationSwitch. isOn
85125 paymentRequest. forceOnlinePIN = forceOnlinePinSwitch. isOn
86126 paymentRequest. authorizationPlainTags = [
@@ -135,77 +175,18 @@ class PaymentViewController: AlertPresenterTableViewController {
135175 RPC . EMVTag. TAG_SECURE_9F0B_CARDHOLDER_NAME_EXTENDED,
136176 RPC . EMVTag. TAG_SECURE_9F6B_TRACK_2_DATA
137177 ]
138-
139- if ( !contactOnlySwitch. isOn) {
140- paymentRequest. readers. append ( . NFC)
141- }
142-
178+
143179 paymentRequest. riskManagementTask = RiskManagementTask ( presenter: self )
144- paymentRequest. authorizationTask = AuthorizationTask ( presenter: self )
145-
146- let messages : [ PaymentMessages : String ] = [
147- PaymentMessages . LBL_wait_context_reset: " Please wait " ,
148- PaymentMessages . LBL_wait_transaction_finalization: " Please wait " ,
149- PaymentMessages . LBL_wait_online_pin_process: " Please wait " ,
150- PaymentMessages . LBL_wait_open_new_secure_session: " Please wait " ,
151- PaymentMessages . LBL_wait_payment_service_initialization: " Please wait " ,
152- PaymentMessages . LBL_authorization: " Authorization processing " ,
153- PaymentMessages . LBL_remove_card: " Remove card " ,
154- PaymentMessages . LBL_approved: " Approved " ,
155- PaymentMessages . LBL_declined: " Declined " ,
156- PaymentMessages . LBL_use_chip: " Use chip " ,
157- PaymentMessages . LBL_no_card_detected: " No card detected " ,
158- PaymentMessages . LBL_unsupported_card: " Unsupported card " ,
159- PaymentMessages . LBL_refused_card: " Card refused " ,
160- PaymentMessages . LBL_cancelled: " Cancelled " ,
161- PaymentMessages . LBL_try_other_interface: " Try other interface " ,
162- PaymentMessages . LBL_configuration_error: " Config Error " ,
163- PaymentMessages . LBL_wait_card: " %@ %d \n Insert card " ,
164- PaymentMessages . LBL_wait_cancel: " Cancellation \n Please wait " ,
165- PaymentMessages . GLOBAL_LBL_xposition: " 00 " ,
166- PaymentMessages . GLOBAL_LBL_yposition: " 0C " ,
167- PaymentMessages . GLOBAL_LBL_font_id: " 00 " ,
168- ]
169-
170- paymentRequest. messages = messages
180+
171181
172182 paymentResultLabel. isHidden = true
173183 startButton. isHidden = true
174184 cancelButton. isHidden = false
175- UCubeAPI . pay ( request: paymentRequest, didProgress: { ( state: PaymentState , context: PaymentContext ) in
185+ emvPaystateMachine = UCubeAPI . pay ( request: paymentRequest, didProgress: { ( state: PaymentState , context: PaymentContext ) in
176186 LogManager . debug ( message: " Payment did progress: \( state. name) " )
177- // var message = ""
178- // switch state {
179- // case .getInfo:
180- // message = "Prepare payment..."
181- // case .enterSecureSession, .ksnAvailable:
182- // message = "Please wait..."
183- // case .smcBuildCandidateList, .smcSelectApplication, .smcUserSelectApplication:
184- // message = "App selection..."
185- // case .smcInitTransaction, .startTransaction:
186- // message = "Starting..., please wait"
187- // case .smcRiskManagement:
188- // message = "Risk management processing..."
189- // case .smcProcessTransaction, .smcGetAuthorizationPlainTags, .smcGetAuthorizationSecuredTags, .nfcGetAuthorizationSecuredTags, .nfcGetAuthorizationPlainTags:
190- // message = "Processing..., please wait"
191- // case .smcFinalizeTransaction, .nfcCompleteTransaction, .nfcGetFinalizationPlainTags, .nfcGetFinalizationSecuredTags:
192- // message = "Finalization..., please wait"
193- // case .smcRemoveCard:
194- // message = "Please remove card"
195- // case .authorization:
196- // message = "Authorization processing"
197- // case .endExitSecureSession:
198- // message = "Transaction complete"
199- // case .displayResult:
200- // message = "Displaying result on device"
201- // case .getL1Log, .getL2Log:
202- // message = "Getting transaction logs..."
203- // default:
204- // break
205- // }
206187 self . paymentStateLabel. text = state. name
207188 self . paymentStateLabel. isHidden = false
208- } , didFinish: { ( success : Bool , context: PaymentContext ) in
189+ } , didFinish: { ( context: PaymentContext ) in
209190 LogManager . debug ( message: " Payment did finish with status: \( context. paymentStatus? . name ?? " unknown " ) " )
210191
211192 // UI
@@ -229,7 +210,7 @@ class PaymentViewController: AlertPresenterTableViewController {
229210 }
230211 }
231212 LogManager . debug ( message: " amount: \( context. getAmount ( ) ) " )
232- LogManager . debug ( message: " currency: \( context. currency? . label ?? " unknown " ) " )
213+ LogManager . debug ( message: " currency: \( context. currency. label ) " )
233214 LogManager . debug ( message: " tx date: \( context. transactionDate? . description ?? " unknown " ) " )
234215 LogManager . debug ( message: " tx type: \( context. transactionType? . label ?? " unknown " ) " )
235216 if let selectedApplication = context. selectedApplication {
0 commit comments