需要先调用查询产品列表,再调用请求支付。参考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;
4 个回复
Xavier_Gao
问题解决了吗?我在澳门也不可以
3***@qq.com
问题解决了吗
h***@gmail.com
需要先调用查询产品列表,再调用请求支付。参考startPay方法
态度是心的面具 - 欢迎询问ios相关问题
你好,是有企业证书吗