调用 await appleiap.requestPayment
入参:
{
"provider": "appleiap",
"total_fee": 100,
"order_no": "1636274598022787073",
"out_trade_no": "1636274598022787073",
"description": "com.gyj.cn.pa01",
"type": "appleiap",
"custom": {}
}
出参
{
"errMsg": "requestPayment:fail Payment_appleiap:订单的ID不存在,https://ask.dcloud.net.cn/article/282",
"errCode": -100,
"code": -100
}

- 发布:2023-03-16 16:27
- 更新:2025-04-19 09:44
- 阅读:3728

需要先调用查询产品列表,再调用请求支付。参考startPay方法
class SubscribeService {
getProductList(productIds = []) {
return new Promise((resolve, reject) => {
uni.getProvider({
service: 'payment',
success: (res) => {
const provider = res.providers.find(p => p.id === 'appleiap');
if (provider) {
provider.requestProduct(productIds, (products) => {
resolve(products);
}, (err) => {
reject(err);
});
} else {
reject(new Error('Apple IAP provider not found'));
}
},
fail: (err) => {
reject(err);
}
});
});
}
requestPayment(orderInfo) {
return new Promise((resolve, reject) => {
uni.requestPayment({
provider: 'appleiap',
orderInfo: orderInfo,
success: (res) => {
resolve(res);
},
fail: (err) => {
reject(err);
}
});
});
}
restoreSubscriptions() {
return new Promise((resolve, reject) => {
uni.getProvider({
service: 'payment',
success: (res) => {
const provider = res.providers.find(p => p.id === 'appleiap');
if (provider) {
provider.restoreCompletedTransactions({
manualFinishTransaction: true
}, (res) => {
resolve(res);
}, (err) => {
reject(err);
});
} else {
reject(new Error('Apple IAP provider not found'));
}
},
fail: (err) => {
reject(err);
}
});
});
}
startPay(productId, productIds = []){
return new Promise((resolve, reject) => {
this.getProductList(productIds).then((products) => {
const product = products.find(p => p.productid === productId);
if (product) {
this.requestPayment({productid: productId}).then((res) => {
resolve(res);
}).catch((err) => {
reject(err);
});
} else {
reject(new Error('Product not found'));
}
}).catch((err) => {
reject(err);
});
});
}
}
// 导出单例实例
const subscribeService = new SubscribeService();
export default subscribeService;

苹果没查到该商品id 你需要先调用requestOrder获取商品id
-
-
-
-
-
-
-
回复 1***@qq.com: 参考下 这个文档吧 https://uniapp.dcloud.net.cn/api/plugins/payment.html#iap
2023-03-16 17:19
-
-
1***@qq.com (作者)
截图那个之前测试是可以的, 我之前没有写死,是通过let productList = await appleiap.getProduct(); 获取产品列表的,但是发现这个api已知在pending
2023-03-16 17:33
-
1***@qq.com (作者)
不是pending 我加日志了,请求苹果时候报错了。Bag Load Failed because we failed to load the bag
2023-03-16 17:37
-
1***@qq.com (作者)
回复 1***@qq.com: 此问题已解决,检查各项配置,内购id是否正确,我的还可能是charles开启了。后来重启电脑等自己好了
2023-03-17 09:39
x***@live.com
专门注册账号感谢老哥,非常受用!!!
2025-05-27 18:10