Last active
June 17, 2019 18:10
-
-
Save a-bishop/d90733786bf7bccaeb3fbd9f70f12a9f to your computer and use it in GitHub Desktop.
Stripe Chipper terminal test
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
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