Skip to content

Commit 0117423

Browse files
Merge pull request #4 from YouTransactor-SAS/develop-dhouha
Develop dhouha
2 parents d321a7b + 42cc2ae commit 0117423

File tree

3 files changed

+65
-76
lines changed

3 files changed

+65
-76
lines changed

uCubeSampleApp/Payment/AuthorizationTask.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,12 @@ class AuthorizationTask: AuthorizationTasking {
6666
}
6767

6868
public func cancel() {
69-
monitor?.eventHandler(.cancelled, [])
69+
LogManager.debug(message: "Authorization Task cancellation!")
70+
71+
//TODO: clean your authorization process's context
72+
presenter.dismissAlert {}
73+
74+
self.monitor?.eventHandler(.cancelled, [])
7075
}
7176

7277
private func end(choice: Int) {

uCubeSampleApp/Payment/PaymentViewController.swift

Lines changed: 56 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -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\nInsert 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 {

uCubeSampleApp/Payment/RiskManagementTask.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ class RiskManagementTask: RiskManagementTasking {
4646
}
4747

4848
public func cancel() {
49+
LogManager.debug(message: "risk management Task cancellation!")
50+
51+
//TODO: clean your risk management process's context
4952
monitor?.eventHandler(.cancelled, [])
5053
}
5154

0 commit comments

Comments
 (0)