uni-app 苹果内支付获取商品列表报"返回订单信息失败"

发布于 1周前 作者 ionicwang 来自 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 云端

9 回复

检查商品状态是否正常
检查登录的苹果账号是否是测试账号,是否是沙盒环境
手机设置里看下是否限制了应用内购
检查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和支付插件的更新日志和文档。

回到顶部