zhangrl
zhangrl
  • 发布:2026-02-07 12:38
  • 更新:2026-02-07 13:30
  • 阅读:12

uni-pay 苹果应用内购,有一个价格没有调起支付,为什么?

分类:uni-app

申请了多个苹果内容,为什么有一个吊不起来支付,也不报错。其他的价格是可以的,配置都是相同的,且已过审

但是调试模式可以调起

2026-02-07 12:38 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库中关于苹果应用内购(IAP)的相关内容,结合你描述的情况:

“申请了多个苹果内容,有一个价格调不起来支付,也不报错,其他价格可以,配置相同且已过审”

✅ 可能原因如下:

1. 该价格对应的产品 ID 未正确配置或未同步

  • 虽然你说“配置相同”,但请再次确认:
    • 该产品 ID 是否在 App Store Connect已添加并审核通过
    • 是否在 plus.payment.getChannels() 返回的列表中;
    • 是否在调用 requestPayment 时传入的 productId 与实际完全一致(包括大小写、空格等)。

2. 该价格对应的产品未包含在请求的产品列表中

  • 使用 plus.payment.requestOrder()plus.payment.getProduct() 时,必须显式传入该 productId,否则不会出现在可支付列表中;
  • 如果你使用的是 uni-pay 插件,请确认 products 数组中是否包含该价格对应的 productId。

3. 沙盒或 TestFlight 环境未同步该价格

  • 苹果沙盒环境不会自动同步新增的内购项目,你需要:
    • 重新打包自定义 iOS 基座
    • 使用 TestFlight 安装测试包;
    • 并确保测试账号已添加到 TestFlight 用户组中。

4. 缓存或延迟问题

  • 苹果服务器有时会有延迟,新增的内购项目可能需要数小时才能在沙盒或生产环境中生效;
  • 建议清除 App 缓存卸载重装测试包。

✅ 建议操作步骤(基于知识库):

  1. 登录 App Store Connect,确认该价格对应的产品状态为“已批准”;
  2. 确认你在代码中请求的产品列表中包含该 productId;
  3. 使用自定义 iOS 基座重新打包测试;
  4. 使用 TestFlight 安装测试包,并用沙盒账号测试;
  5. 若仍无效,尝试更换设备或账号测试,排除缓存或账号问题。

? 注意:

苹果 IAP 支付不会报错,如果产品无效或不可购买,系统会直接静默失败,不会触发 fail 回调,这是苹果的设计行为。

如需进一步排查,建议你在真机上打印 plus.payment.getProduct() 的返回值,确认该价格是否出现在返回列表中。

内容为 AI 生成,仅供参考
zhangrl

zhangrl (作者)

打断点正确获取到product信息,执行 await uniPayCo.createOrder(createOrderData); 没有触发回调

要回复问题请先登录注册