苹果Promotional Offer内购报SKErrorDomain 12签名无效问题求助
iOS 接入 Promotional Offer 提示签名无效(SKErrorDomain error 12)问题求助
首先我们已完成包含免费试用(introductory offer)的基础订阅功能开发,运行一切正常。后续接入Promotional Offer功能时,即便完全遵循苹果官方文档指引操作,始终收到相同报错:签名无效。
错误信息:
"Error: The operation couldn’t be completed. (SKErrorDomain error 12.)"
相关说明:
- 签名由服务端实现,已验证为有效
- 尝试过在终端用openssl生成经验证有效的签名,仍然无法正常运行
- 点击UI上的
Purchase Offer按钮后,苹果底部弹窗可正常唤起,优惠价格展示正确 - 移动端使用
swift (5)和SwiftyStoreKit处理支付流程 - 使用沙箱账号在开发包、TestFlight包环境下测试均复现问题
优惠应用核心方法如下:
func proceedToApplyOffer(signatureResult: PromotionalOfferSignatureResponse, username: String, completion: @escaping ((_ purchaseResult: Result<PurchaseDetails>) -> ())) { if #available(iOS 12.2, *) { self.getAppleProducts() { productsResult in // 获取苹果产品信息,用于创建折扣对象 switch productsResult { case .success(products: let products): // 创建折扣对象,用于后续购买操作 guard let monthlyProduct: SKProduct = products.first(where: { $0.productIdentifier == self.monthlyProductIdentifier}) else { return } let discount = SKPaymentDiscount(identifier: self.promotionalOfferIdentifier, keyIdentifier: self.keyIdentifier, nonce: signatureResult.nonce, signature: signatureResult.signature, timestamp: NSNumber(value: signatureResult.timestamp)) let swiftyDiscount = PaymentDiscount(discount: discount) self.paymentService.purchaseProductWithDiscount(product: monthlyProduct, username: username, discount: swiftyDiscount) { result in switch result { case .error(error: let skError): completion(.error(skError)) case .success(purchase: let purchaseDetails): completion(.success(purchaseDetails)) } } case .error(error: let error): completion(.error(error)) } } } else { debugPrint("当前系统版本不支持该功能") } }
我查阅过此前同类提问,均无有效解答,苹果开发者论坛的相关问题也未得到官方答复,恳请各位提供排查思路或解决方案,万分感谢。
内容的提问来源于stack exchange,提问作者dianaqqq
相关产品推荐
相关产品推荐

