辣条人
辣条人
  • 发布:2024-03-22 11:50
  • 更新:2024-04-12 18:43
  • 阅读:142

ios内购上架被拒绝--点击开通一直无限期加载

分类:uni-app

我们继续发现您的应用内购买产品存在一个或多个错误,导致用户体验不佳。具体来说,当我们点击“立即开通”时,该应用程序正在无限期加载。请查看以下详细信息和资源,并完成后续步骤。

查看设备详细信息:

  • 设备类型:iPad Air(第 5 代)
  • 操作系统版本:iOS 17.4

后续步骤

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

"app": {
"password": "",
"timeout": 10000, // 请求超时时间,单位:毫秒
"sandbox": false, // 是否是沙箱环境
},

我真机测试无无限期加载情况,测试和提交sandbox都为false
疑问:提交上架是是否需要将sandbox改为true

2024-03-22 11:50 负责人:无 分享
已邀请:
辣条人

辣条人 (作者) - 一个人的团队

疑问:提交给审核员审核时是否需要将sandbox改为true

DCloud_uniCloud_VK

DCloud_uniCloud_VK

试试替换以下代码

打开文件 /uni_modules/uni-pay/uniCloud/cloudfunctions/uni-pay-co/service/pay.js
找到函数 async verifyReceiptFromAppleiap(data) { 函数里

if (verifyReceiptRes.tradeState !== "SUCCESS") {  
  throw { errCode: ERROR[54002] };  
}

改成

if (verifyReceiptRes.tradeState !== "SUCCESS") {  
            // 尝试使用相反的环境再次验证  
            let uniPayConifg = await this.getUniPayConfig({ provider: "appleiap", provider_pay_type: "app" });  
            uniPayInstance = uniPay.initAppleIapPayment({  
                ...uniPayConifg,  
                sandbox: !uniPayConifg.sandbox,  
            });  
            verifyReceiptRes = await uniPayInstance.verifyReceipt({  
                receiptData: transaction_receipt  
            });  
            if (verifyReceiptRes.tradeState !== "SUCCESS") {  
                // 如果还是不成功,则校验不通过  
                throw { errCode: ERROR[54002] };  
            }   
        }
  • 辣条人 (作者)

    这个我已经换过了呀

    2024-03-22 12:25

  • 辣条人 (作者)

    会不会是因为提交给审核员审核时需要将sandbox改为true,等待审核通过后再改为false

    2024-03-22 12:45

  • DCloud_uniCloud_VK

    回复 辣条人: 改成这个代码后,每个订单都会自动进行2次验证,一次是sandbox为true, 一次是false, 所以不用改sandbox

    2024-03-22 13:19

辣条人

辣条人 (作者) - 一个人的团队

之前已经换过了

jesse21

jesse21

大佬,我也遇到了,这个问题卡几天了,咋处理好的?

  • 辣条人 (作者)

    沙盒模式关掉

    2024-04-13 23:47

要回复问题请先登录注册