import StoreKit
//inside viewController
let productId = "your_product_id"
//Action where you want to trigger the purchase
@IBAction func btn_OneTimeButtonClicked(_ sender: UIButton) {
if SKPaymentQueue.canMakePayments(){
let paymentRequest = SKMutablePayment()
paymentRequest.productIdentifier = productId
SKPaymentQueue.default().add(paymentRequest)
}
}
//extension to handle the transaction states
extension your_View_Controller: SKPaymentTransactionObserver{
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
transactions.forEach { transaction in
switch transaction.transactionState{
case .purchasing:
print("purchasing now ...")
case .purchased:
print("purchase successful !!!")
case .failed:
print("purchase failed !!!")
case .restored:
print("purchase restored !!!")
case .deferred:
print("purchase deferred !!!")
@unknown default:
print("Unknown error")
}
}
}
}
// don't forgot to add storekit configuration file in your app if you are testing your app in simulator