uni-app ios 苹果内购支付 问题

uni-app ios 苹果内购支付 问题

代码示例

uni.getProvider({  
  service: 'payment',  
  success: (res) => {  
    const iapChannel = res.providers.find((channel) => {  
      return (channel.id === 'appleiap')  
    })  
    if (!iapChannel) return console.error("未找到Apple支付通道");  
    uni.requestPayment({  
        provider: 'appleiap',  
        orderInfo: {  
            productid: 'HUIYUANTEXT',   
            quantity: 1,  
            optimize: true,  
            sandbox: true  
        },  
        success: (res) => {  
            console.log("支付成功", res);  
            // 发送res.transactionReceipt至服务器二次验证  
        },  
        fail: (err) => console.log("支付失败", err)  
    });  

    // 如果 iapChannel 为 null,说明当前包没有包含iap支付模块。注意:HBuilder基座不包含 iap 通道  
  }  
});

一直提示我 RequestPayment:fail Payment_appleiap:订单的ID不存在, https://ask.dcloud.net.cn/article/282


更多关于uni-app ios 苹果内购支付 问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app ios 苹果内购支付 问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你的代码和报错信息,问题主要出现在订单配置和参数传递上。

在iOS苹果内购中,orderInfo参数需要严格遵循Apple IAP的规范。你的代码中直接使用了productid字段,但实际应该使用productIdentifier作为商品ID字段名。

正确的参数配置应该是:

uni.requestPayment({
  provider: 'appleiap',
  orderInfo: {
    productIdentifier: 'HUIYUANTEXT', // 必须是App Store Connect中配置的商品ID
    quantity: 1,
    optimize: true,
    sandbox: true
  },
  success: (res) => {
    console.log("支付成功", res);
    // 将res.transactionReceipt发送到服务器验证
  },
  fail: (err) => console.log("支付失败", err)
});
回到顶部