Skip to content

Instantly share code, notes, and snippets.

@a-bishop
Last active June 17, 2019 18:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save a-bishop/d90733786bf7bccaeb3fbd9f70f12a9f to your computer and use it in GitHub Desktop.
Save a-bishop/d90733786bf7bccaeb3fbd9f70f12a9f to your computer and use it in GitHub Desktop.
Stripe Chipper terminal test
import UIKit
import StripeTerminal
import Alamofire
let BACKEND_SERVER_URL = "Our token server url"
class ViewController: UIViewController, DiscoveryDelegate, ReaderDisplayDelegate {
@IBOutlet weak var tokenButton: UIButton!
@IBOutlet weak var tokenDisplay: UITextView!
@IBOutlet weak var readerID: UITextField!
@IBOutlet weak var inputOptionsLabel: UILabel!
@IBOutlet weak var messageLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.readerID.text = "reader ID:"
let config = DiscoveryConfiguration(deviceType: .chipper2X, discoveryMethod: .bluetoothProximity, simulated: true)
Terminal.shared.discoverReaders(config, delegate: self as DiscoveryDelegate, completion: { error in
if (error != nil) {
print(error!)
}
})
}
@IBAction func buttonPressed(sender: UIButton) {
let params = PaymentIntentParameters(amount: 4950, currency: "cad")
Terminal.shared.createPaymentIntent(params) { paymentIntent, error in
if let error = error {
print(error)
}
Terminal.shared.collectPaymentMethod(paymentIntent!, delegate: self) { paymentIntent, error in
if let paymentIntent = paymentIntent {
// Placeholder for processing paymentIntent
Terminal.shared.processPayment(paymentIntent) { paymentIntent, error in
if let paymentIntent = paymentIntent {
print(paymentIntent.stripeId)
AF.request(BACKEND_SERVER_URL, method: .post, parameters: ["payment_intent_id": paymentIntent.stripeId], encoding: JSONEncoding.default)
.response { response in
switch response.result {
case .success:
print("success...")
case .failure(let error):
print("error....", error)
}
}
}
else if let error = error {
print("payment intent error: ", error)
}
}
}
else if let error = error {
print(error)
}
}
}
}
// MARK: DiscoveryDelegate
func terminal(_ terminal: Terminal, didUpdateDiscoveredReaders readers: [Reader]) {
// Display the discovered readers to the user
self.readerID.text = "reader ID: " + readers[0].serialNumber
let reader = readers[0]
Terminal.shared.connectReader(reader, completion: {reader,error in print("reader connected", reader as Any)
if let error = error {
print(error)
} else {
self.tokenButton.setTitle("Make test payment of $49.50", for: .normal)
}
})
}
func terminal(_ terminal: Terminal, didRequestReaderInput options: ReaderInputOptions) {
inputOptionsLabel.text = Terminal.stringFromReaderInputOptions(options)
}
func terminal(_ terminal: Terminal, didRequestReaderDisplayMessage message: ReaderDisplayMessage) {
messageLabel.text = Terminal.stringFromReaderDisplayMessage(message)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment