在App Purchase中,在测试模式下工作正常但在app app

时间:2018-03-29 11:18:49

标签: ios in-app-purchase

我在我的应用中集成了应用内购买,并使用创建的测试帐户对其进行了测试。它工作正常,但当我将它提交到应用程序商店进行实时应用程序审核时,我的应用程序因以下原因被拒绝:

准则2.1 - 表现 - 应用完整性

验证服务器上的收据时,您的服务器需要能够处理生产签名的应用程序从Apple的测试环境获取收据。建议的方法是让您的生产服务器始终首先根据生产App Store验证收据。如果验证失败并显示错误代码“生产中使用的沙箱收据”,则应该针对测试环境进行验证。

image

3 个答案:

答案 0 :(得分:0)

WWDC 2013 Session 308 44:00开始:

  

“应用程序审核人员实际上正在测试您的生产已签名,准备进入商店的二进制文件,但是针对测试环境。因此,您的生产签名应用程序将看到测试环境收据”。

这意味着如果您使用服务器验证收据,请确保首先针对生产服务器验证收据,如果验证失败,则根据沙箱服务器验证收据。

这是你收到拒绝理由的指示:

  

“建议的方法是让您的生产服务器始终首先针对生产App Store验证收据。如果验证失败并显示错误代码”生产中使用的沙盒收据“,则应该针对测试环境进行验证< /强>“。

请同时查看类似问题的以下答案:

答案 1 :(得分:0)

其实我正在使用此功能购买:

func purchase(_ purchase: RegisteredPurchase) {
    self.view.showLoad()
   // NetworkActivityIndicatorManager.NetworkOperationStarted()
    SwiftyStoreKit.purchaseProduct(bundleId + "." + purchase.rawValue, atomically: true) { result in
     //   NetworkActivityIndicatorManager.NetworkOperationFinished()
      self.view.hideLoad()
        print(result)
        if case .success(let purchase) = result {

           self.refrenceNumber = purchase.transaction.transactionIdentifier!
         //   print(purchase.transaction.transactionDate)
            self.sendRefrence()
            if purchase.needsFinishTransaction {
                SwiftyStoreKit.finishTransaction(purchase.transaction)
            }
        }else{
            if let alert = self.alertForPurchaseResult(result) {
            self.showAlert(alert)
            }
        }
    }
}

它在测试环境中运行良好,但在审核中它的响应是: 的 paymentInvalid

如何更改购买环境。

答案 2 :(得分:0)

其实我理解这个问题,但是当我在app购买产品时购买。我没有验证收据。我是直接购买,并在调用购买功能后,我上面更新它给出错误 .paymentinvalid 。在哪里我必须验证或更改或我必须提供沙箱或生产网址购买或检查。因为我的函数没有直接检查任何东西会给出错误。