Ios应用内购买总是失败

Ios应用内购买总是失败,ios,swift,in-app-purchase,Ios,Swift,In App Purchase,我正在尝试进行非消耗品的应用程序内购买。我已经设置好了所有的方法,几天前它运行得很好,但现在总是失败 override func viewDidLoad() { super.viewDidLoad() //In-App Prurchase Transaction Observer SKPaymentQueue.defaultQueue().addTransactionObserver(self) self.getProductInfo() } 在我的view

我正在尝试进行非消耗品的应用程序内购买。我已经设置好了所有的方法,几天前它运行得很好,但现在总是失败

override func viewDidLoad() {
    super.viewDidLoad()

    //In-App Prurchase Transaction Observer 
    SKPaymentQueue.defaultQueue().addTransactionObserver(self)
    self.getProductInfo() }
在我的viewDidLoad中,我添加了事务观察器,然后处理其他所有事情

//In-App Prurchase
func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
    let products = response.products
    if products.count != 0{
        product = products[0] as! SKProduct
    }
}

//In-App Prurchase
func getProductInfo(){
    if SKPaymentQueue.canMakePayments(){
        let productID:NSSet = NSSet(object: "premiunAccountProductID")
        let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>)
        request.delegate = self
        request.start()
    }
}

//In-App Prurchase
@IBAction func goPremiunPressed(sender: AnyObject) {

    if IJReachability.isConnectedToNetwork(){//check for internet
        let payment:SKPayment = SKPayment(product: product)
            SKPaymentQueue.defaultQueue().addPayment(payment)
    } else{ // no internet connection
        let alertview = JSSAlertView()
        alertview.show(self, title: "Sorry", text: "You need to be connected to the internet in order to buy a premium account", color: UIColor(hex: "#e74c3c"), iconImage: UIImage(named: "Cancel"))
        alertview.setTextTheme(.Light)
    }
}


//In-App Prurchase
func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
    for transaction:AnyObject in transactions{
        if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{

            switch trans.transactionState{
            case .Purchased:
                UserPreferences.userDefaults.setBool(true, forKey: "isPremium")
                UserPreferences.userDefaults.synchronize()
                println("Transanction Succeded. Is premium is now \(UserPreferences.isPremium)")
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
                break

            case .Failed:
                let alertview = JSSAlertView()
                alertview.show(self, title: "Sorry", text: "There was an error completing your transaction, please try again later.", color: UIColor(hex: "#e74c3c"), iconImage: UIImage(named: "Cancel"))
                alertview.setTextTheme(.Light)
                println("Transaction Failed")
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
                break

            case .Restored:
                SKPaymentQueue.defaultQueue().restoreCompletedTransactions()

            default:
                break
            }
        }

    }
}
//应用程序内PrurCase
func productsRequest(请求:SKProductsRequest!,DID接收方响应:SKProductsResponse!){
让产品=响应.products
如果products.count!=0{
产品=产品[0]为!SKProduct
}
}
//应用内普鲁尔凯斯
func getProductInfo(){
如果SKPaymentQueue.canMakePayments(){
让productID:NSSet=NSSet(对象:“premiunAccountProductID”)
let请求:SKProductsRequest=SKProductsRequest(产品标识符:设置的产品ID)
request.delegate=self
request.start()
}
}
//应用内普鲁尔凯斯
@iAction func goPremiunPressed(发送方:AnyObject){
如果IJReachability.isconnectedtonework(){//请检查internet
let payment:SKPayment=SKPayment(产品:产品)
SKPaymentQueue.defaultQueue().addPayment(付款)
}else{//没有internet连接
让alertview=JSSAlertView()
alertview.show(self,标题:“对不起”,文本:“您需要连接到互联网才能购买高级帐户”,颜色:UIColor(十六进制:#e74c3c),图标:UIImage(命名为:“取消”))
alertview.setTextTheme(.Light)
}
}
//应用内普鲁尔凯斯
func paymentQueue(队列:SKPaymentQueue!,更新的交易:[AnyObject]!){
对于事务:事务中的任何对象{
如果让交易:SKPaymentTransaction=交易为?SKPaymentTransaction{
开关trans.transactionState{
案例。购买:
UserPreferences.userDefaults.setBool(true,forKey:“isPremium”)
UserPreferences.userDefaults.synchronize()
println(“交易成功。现在是溢价\(UserPreferences.isPremium)”)
SKPaymentQueue.defaultQueue().finishTransaction(事务为!SKPaymentTransaction)
打破
案例。失败:
让alertview=JSSAlertView()
alertview.show(self,标题:“对不起”,文本:“完成交易时出错,请稍后再试。”,颜色:UIColor(十六进制:#e74c3c),图标:UIImage(名为:“取消”))
alertview.setTextTheme(.Light)
println(“交易失败”)
SKPaymentQueue.defaultQueue().finishTransaction(事务为!SKPaymentTransaction)
打破
案件.恢复:
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
违约:
打破
}
}
}
}
所以每次我按下“goPremium”按钮,都需要几秒钟的时间,然后就转到失败的案例。我尝试与多个沙盒用户进行交易,但都失败了

我使用了一个教程来编写所有这些代码,因此我并不真正了解这些代码所做的所有事情,或者这是否是进行应用内购买的最有效方法

有人能告诉我我的代码中是否有错误,或者是否有更好的方法来实现这一点


谢谢

我正在运行Xcode版本6.4(6E35b),这是一个模拟器错误。只要在真正的设备上运行应用程序,它就能完美地工作