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"
}
检查步骤
- 检查商品状态是否正常(第一次添加app内购买,随着app提交在审核中,是否跟这个有关系,是不是需要审核成功之后才能使用呢)
- 检查登录的苹果账号是否是测试账号,是否是沙盒环境(苹果已经是测试账号,app store已经展示沙盒账号)
- 手机设置里看下是否限制了应用内购(没有限制)
- 检查appstore connect 后台是否有协议需要同意或者更新(检查了没有)
- 检查是否有科学上网,商品是否支持手机设置的地区(商品支持全地区)
- 是否是通过requestProduct获取的商品列表(是的,是通过这个,而且还是根据官方实例复制粘贴使用的)
我的疑问
是什么查询商品列表会报返回订单信息失败,使用的是uniapp官方提供的苹果支付示例代码,一点没改,走requestProduct的时候报的,望官方及时回复
我也碰到这个问题了,请问解决了吗,是不是需要先提交app审核才行
获取产品列表时需要传入productid 以数组的形式[‘priductid1’,‘priductid2’,]
我也遇到了同样的问题,App已经提交审核了还是不行,之前的的App同样的代码都可以
获取产品列表时需要传入productid 以数组的形式[‘priductid1’,‘priductid2’,]
需要先提交版本审核吗,还是怎么弄
获取产品列表时需要传入productid 以数组的形式[‘priductid1’,‘priductid2’,]
获取产品列表时需要传入productid 以数组的形式[‘priductid1’,‘priductid2’,]
官方文档有地方说明吗?我想知道
就是传这样的数组,一样不行
大佬,解决了吗?我也遇到这个问,苹果后台设置都检查过很多遍了,都配置完了,还是一直失败
解决了,就是传商品id数组
你好,最后解决了吗,我和你的情况一样,怎么解决的呀
同样的问题 不过我的是偶尔报错,不是每次都报错
{
“code”: -100,
“message”: “Payment_appleiap:返回订单信息失败,https://ask.dcloud.net.cn/article/282”,
“errCode”: -100,
“errMsg”: “Payment_appleiap:返回订单信息失败,https://ask.dcloud.net.cn/article/282”
}
针对您提到的在使用uni-app进行苹果内购(In-App Purchase, IAP)时遇到“返回订单信息失败”的问题,这通常涉及到与Apple服务器的通信和数据处理。以下是一个简化的代码示例,展示如何通过uni-app的支付模块进行内购商品列表的获取和处理。请确保您的应用已经正确配置了App Store Connect中的内购项目,并且已经生成了相应的证书和配置文件。
1. 配置uni-app支付模块
首先,确保在manifest.json
中配置了支付相关的信息,特别是针对iOS平台的配置,比如apple-iap
的相关设置。
2. 获取商品列表
在您的uni-app项目中,可以使用如下代码来获取内购商品列表:
// 引入uni-app的支付模块
const inAppPurchase = uni.getInAppPurchaseManager();
// 定义要获取的商品ID数组
const productIds = ['com.example.product1', 'com.example.product2'];
// 请求商品信息
inAppPurchase.requestProducts({
productIds: productIds,
success: (res) => {
// 处理获取到的商品信息
const products = res.products;
products.forEach(product => {
console.log(`Product ID: ${product.productId}, Title: ${product.localizedTitle}, Price: ${product.localizedPrice}`);
});
},
fail: (err) => {
// 处理获取商品信息失败的情况
console.error('获取商品信息失败', err);
// 如果错误信息是“返回订单信息失败”,可能是网络问题或Apple服务器问题
// 也可能是商品ID配置错误或该商品在App Store Connect中未正确设置
if (err.errMsg.includes('返回订单信息失败')) {
// 可以尝试重新请求或提示用户检查网络连接
}
}
});
3. 错误处理与重试机制
由于网络波动或Apple服务器响应延迟,建议在失败时实现重试机制:
function fetchProducts(retries = 3) {
inAppPurchase.requestProducts({
productIds: productIds,
success: (res) => {
// 处理成功逻辑
},
fail: (err) => {
console.error('获取商品信息失败', err);
if (retries > 0) {
console.log('重试获取商品信息...');
fetchProducts(retries - 1);
} else {
// 最终失败处理,比如提示用户稍后重试
}
}
});
}
// 调用函数开始获取商品信息
fetchProducts();
结论
上述代码提供了一个基本的框架来处理uni-app中的苹果内购商品列表获取。如果持续遇到“返回订单信息失败”的问题,请检查Apple开发者账号的配置、网络连接状态以及是否有最新的Apple支付SDK或uni-app插件更新。同时,确保您的应用遵循了Apple的内购政策和指导原则。