In swift 2.1, this purchase function worked. Help remake on swift 3.1
var listOfProducts = [SKProduct]() var productoPurchase = SKProduct() func buyProduct() { print("buy " + productoPurchase.productIdentifier) let pay = SKPayment(product: productoPurchase) SKPaymentQueue.defaultQueue().addTransactionObserver(self) SKPaymentQueue.defaultQueue().addPayment(pay) } Xcode swears by strings
SKPaymentQueue.defaultQueue().addTransactionObserver(self) SKPaymentQueue.defaultQueue().addPayment(pay) And offers to fix on
SKPaymentQueue.default().add(self) SKPaymentQueue.default().add(pay) A little searching found the option to fix the second line on
SKPaymentQueue.default().remove(pay)