Created
February 16, 2021 14:45
-
-
Save blisssan/de563dcae2814e450d0a9504834e5bb6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// DetailViewController.swift | |
// SDKSampleAppSwift | |
// | |
// Created by Muhammad Syafiq bin Mastor on 07/03/2019. | |
// Copyright © 2019 iPay88. All rights reserved. | |
// | |
import UIKit | |
class DetailViewController: UIViewController { | |
@IBOutlet weak var tableView: UITableView! | |
@IBOutlet weak var button: UIButton! | |
let cellIdentifier = "TextFieldTableViewCell" | |
var paymentSDK : Ipay? | |
var requeryPayment:IpayPayment? | |
var paymentView : UIView? | |
var viewModel : DetailViewModel = DetailViewModel() | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
self.tableView.dataSource = self | |
self.tableView.rowHeight = 70 | |
button.setTitle("PROCEED TO PAYMENT", for: .normal) | |
let nib = UINib(nibName: cellIdentifier, bundle: nil) | |
self.tableView.register(nib, forCellReuseIdentifier: cellIdentifier) | |
} | |
@IBAction func handleButton(_ sender: UIButton) { | |
dump(viewModel.detail) | |
requeryPayment = IpayPayment(); | |
requeryPayment?.paymentId = viewModel.detail.paymentID | |
requeryPayment?.merchantKey = viewModel.detail.merchantKey | |
requeryPayment?.merchantCode = viewModel.detail.merchantCode | |
requeryPayment?.refNo = viewModel.detail.refNo | |
requeryPayment?.amount = viewModel.detail.amount | |
requeryPayment?.currency = viewModel.detail.currency | |
requeryPayment?.prodDesc = viewModel.detail.productDescription | |
requeryPayment?.userName = viewModel.detail.customerName | |
requeryPayment?.userEmail = viewModel.detail.email | |
requeryPayment?.userContact = viewModel.detail.phoneNumber | |
requeryPayment?.remark = viewModel.detail.remark | |
requeryPayment?.lang = viewModel.detail.language | |
requeryPayment?.country = viewModel.detail.country | |
requeryPayment?.backendPostURL = viewModel.detail.backendURL | |
/* 2. SDK inititalization */ | |
paymentSDK = Ipay(); | |
paymentSDK?.delegate = self; | |
paymentView = paymentSDK?.checkout(requeryPayment) | |
/* 3. Payment Checkout Method - END */ | |
self.view.addSubview(paymentView!); | |
} | |
} | |
extension DetailViewController : UITableViewDataSource { | |
func numberOfSections(in tableView: UITableView) -> Int { | |
return viewModel.item.count | |
} | |
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
return 1 | |
} | |
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as? TextFieldTableViewCell else { return UITableViewCell() } | |
cell.titleLabel.text = viewModel.item[indexPath.section].rawValue | |
cell.textField.delegate = self | |
cell.textField.tag = indexPath.section | |
cell.textField.text = viewModel.item[indexPath.section].value | |
if viewModel.item[indexPath.section] == .refNo { | |
cell.textField.isEnabled = false | |
} else { | |
cell.textField.isEnabled = true | |
} | |
return cell | |
} | |
} | |
extension DetailViewController : UITextFieldDelegate { | |
func textFieldShouldReturn(_ textField: UITextField) -> Bool { | |
textField.resignFirstResponder() | |
return true | |
} | |
func textFieldDidEndEditing(_ textField: UITextField) { | |
guard let text = textField.text else { return } | |
print(text) | |
switch viewModel.item[textField.tag] { | |
case .productDescription: | |
viewModel.detail.productDescription = text | |
case .amount: | |
viewModel.detail.amount = text | |
case .customerName: | |
viewModel.detail.customerName = text | |
case .phoneNumber: | |
viewModel.detail.phoneNumber = text | |
case .email: | |
viewModel.detail.email = text | |
case .merchantCode: | |
viewModel.detail.merchantCode = text | |
case .merchantKey: | |
viewModel.detail.merchantKey = text | |
case .paymentID: | |
viewModel.detail.paymentID = text | |
case .currency: | |
viewModel.detail.currency = text | |
case .language: | |
viewModel.detail.language = text | |
case .remark: | |
viewModel.detail.remark = text | |
case .country: | |
viewModel.detail.country = text | |
case .backendURL: | |
viewModel.detail.backendURL = text | |
case .refNo: | |
break | |
} | |
} | |
} | |
extension DetailViewController : PaymentResultDelegate { | |
func paymentSuccess(_ refNo: String!, withTransId transId: String!, withAmount amount: String!, withRemark remark: String!, withAuthCode authCode: String!) { | |
let message = "refNo=\(String(describing: refNo!))\n transId=\(String(describing: transId!))\n amount=\(String(describing: amount!))\n remark=\(String(describing: remark!)) \nauthCode:\(String(describing: authCode!))" | |
showMessage(title: "Payment Success", message: message) | |
} | |
func paymentFailed(_ refNo: String!, withTransId transId: String!, withAmount amount: String!, withRemark remark: String!, withErrDesc errDesc: String!) { | |
print("Failed") | |
let message = "refNo=\(String(describing: refNo!))\n transId=\(String(describing: transId!))\n amount=\(String(describing: amount!))\n remark=\(String(describing: remark!)) \nerrDesc:\(String(describing: errDesc!))" | |
showMessage(title: "Payment Failed", message: message) | |
} | |
func paymentCancelled(_ refNo: String!, withTransId transId: String!, withAmount amount: String!, withRemark remark: String!, withErrDesc errDesc: String!) { | |
print("Cancel") | |
let message = "refNo=\(String(describing: refNo!))\n transId=\(String(describing: transId!))\n amount=\(String(describing: amount!))\n remark=\(String(describing: remark!)) \nerrDesc:\(String(describing: errDesc!))" | |
showMessage(title: "Payment Cancelled", message: message) | |
} | |
func requerySuccess(_ refNo: String!, withMerchantCode merchantCode: String!, withAmount amount: String!, withResult result: String!) { | |
print("something") | |
} | |
func requeryFailed(_ refNo: String!, withMerchantCode merchantCode: String!, withAmount amount: String!, withErrDesc errDesc: String!) { | |
print("something") | |
} | |
func showMessage(title : String, message : String) { | |
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) | |
let doneAction = UIAlertAction(title: "Done", style: .default) { (action) in | |
self.paymentView?.removeFromSuperview() | |
self.dismiss(animated: true, completion: nil) | |
} | |
alertController.addAction(doneAction) | |
self.present(alertController, animated: true, completion: nil) | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment