uni-app 苹果内支付获取商品列表报"返回订单信息失败"
uni-app 苹果内支付获取商品列表报"返回订单信息失败"
操作步骤
使用官方苹果内支付示例代码即可复现
预期结果
返回商品列表
实际结果
订单信息不存在
bug描述
使用苹果内支付的示例代码,在获取商品列表的时候返回
{
"code": -100,
"message": "Payment_appleiap:返回订单信息失败,https://ask.dcloud.net.cn/article/282",
"errCode": -100,
"errMsg": "Payment_appleiap:返回订单信息失败,https://ask.dcloud.net.cn/article/282"
}
我的疑问是什么查询商品列表,会报返回订单信息失败,使用的是uniapp官方提供的苹果支付示例代码,一点没改,走requestProduct的是时候报的,望官方即使回复
开发环境及版本信息
项目创建方式 | PC开发环境操作系统 | PC开发环境操作系统版本号 | HBuilderX类型 | HBuilderX版本号 | 手机系统 | 手机系统版本号 | 手机厂商 | 手机机型 | 页面类型 | vue版本 | 打包方式 |
---|---|---|---|---|---|---|---|---|---|---|---|
HBuilderX | Windows | win10 | 正式 | 3.8.4 | iOS | iOS 15 | 苹果 | iphone 6 | vue | vue2 | 云端 |
检查商品状态是否正常
检查登录的苹果账号是否是测试账号,是否是沙盒环境
手机设置里看下是否限制了应用内购
检查appstore connect 后台是否有协议需要同意或者更新
检查是否有科学上网,商品是否支持手机设置的地区
是否是通过requestProduct获取的商品列表
这个问题基本上都是你环境或者内购设置问题 排查下吧
解决了嘛
你好 你遇见过相同的吗 解决了吗
你好解决了吗
你好解决了吗
解决了
回复 3***@qq.com: 请问下是什么问题
this._channel.requestProduct返回偶尔报错,检查了商品没问提,协议没问提 测试账号和沙盒都没问题,有时候能正常返回有时候就报错,排查的脑袋大
Payment_appleiap:返回订单信息失败,https://ask.dcloud.net.cn/article/282
针对您提到的在使用uni-app进行苹果内购(IAP,In-App Purchase)时获取商品列表报错“返回订单信息失败”的问题,这通常涉及到与苹果服务器的通信以及处理返回的数据。下面我将提供一个简化的代码示例,用于展示如何在uni-app中实现苹果内购的商品列表获取,并处理可能的错误情况。请注意,实际开发中需要根据苹果开发者文档和uni-app的插件文档进行详细配置。
首先,确保您已经在苹果开发者后台配置了内购项目,并获取了相应的产品ID。
1. 安装并配置uni-app支付插件
在uni-app项目中,您可能需要使用uni-pay
插件或类似的支付解决方案。这里假设您已经安装了相关插件。
2. 获取商品列表代码示例
// 引入支付插件
const uniPay = require('@dcloudio/uni-pay');
// 定义产品ID数组
const productIds = ['com.example.app.product1', 'com.example.app.product2'];
// 获取商品列表
uniPay.requestProducts({
productIds: productIds,
success: (res) => {
console.log('获取商品列表成功:', res.products);
// 处理商品列表,例如显示到页面上
res.products.forEach(product => {
console.log(`Product ID: ${product.productId}, Title: ${product.localizedTitle}, Price: ${product.localizedPrice}`);
});
},
fail: (err) => {
console.error('获取商品列表失败:', err);
// 处理错误,例如显示错误信息给用户
if (err.code === 'E80001') {
// 示例错误码,具体错误码需参考uni-pay文档或苹果开发者文档
uni.showToast({
title: '网络错误,请稍后重试',
icon: 'none'
});
} else if (err.code === 'E80002') {
uni.showToast({
title: '无效的产品ID',
icon: 'none'
});
} else {
uni.showToast({
title: '返回订单信息失败',
icon: 'none'
});
}
}
});
3. 注意事项
- 确保您的应用已经正确配置了苹果支付证书和相关的App ID。
- 在真机环境下测试内购功能,模拟器通常不支持内购。
- 错误处理部分需要根据实际错误码进行详细区分和处理,这里仅提供了示例错误码。
- 苹果内购有严格的审核规则,确保您的应用符合苹果的政策要求。
通过上述代码示例,您可以尝试在uni-app中实现苹果内购的商品列表获取功能,并处理可能的错误情况。如果问题依然存在,建议检查苹果开发者后台的配置,以及查看uni-app和支付插件的更新日志和文档。