第一次对接ios内购支付, 网上资料描述的也不是很全面,踩了不少坑,下面针对前端进行进行资料总结。
ios开发者配置与后端代码参考这个网站,https://blog.youkuaiyun.com/ca1993422/article/details/145062872?sharetype=blogdetail&sharerId=145062872&sharerefer=PC&sharesource=ca1993422&spm=1011.2480.3001.8118
首先是打包,windows数据线打包ios调试。要下载 爱思助手,数据线链接手机会弹出下面的界面
这个时候HBuilderx 就能连接苹果进行打包了,但是ios内购测试,这样打包是不可以的,下面是ios 运行测试账号进行打包测试
上面的文件都是在 苹果 开发者里面下载
自定义基座是为了ios获取 appleiap 渠道,不使用自定义打包,获取的渠道一直都是支付宝和微信的,
ios 沙箱账号是苹果测试支付虚拟金额付款使用的,苹果手机设置沙盒账号是要先调起支付,然后输入沙盒的appid 和密码才会在手机的App Store 里面看到沙盒账号,并不是设置出来的切记切记
测试账号要在 苹果开发者里面配置出来的,这个账号你问后端要,或者自己登录配置,网上有教程
下面是接口调用
handleIosPay (productId) {
let that = this;
plus.payment.getChannels(function(channels){
console.log(JSON.stringify(channels),'channels====')
for (let i in channels) {
let channel = channels[i];
// 获取 id 为 'appleiap' 的 channel
if (channel.id === 'appleiap') {
that.iapChannel = channel
console.log(JSON.stringify(channel),'--------------channels====')
// that.applePay(productId)
that.compareAppleProduce(productId)
}
}
}, function(e){
console.log("获取iap支付通道失败:" + e.message);
})
},
// 校验苹果产品可以支付
compareAppleProduce(productId) {
console.log('productId',productId);
let that = this
console.log(that.iapChannel);
that.iapChannel.requestOrder([productId], (event) => {
//这里使用for循环是为了适配多产品ID情况
for (let index in event) {
//需要产品id和自定义交易id
that.applePay(productId) // 这个是调用后端的接口方法,自行配置
}
}, (err) => {
console.log(err);
uni.showToast({
title: "该商品未录入:" + err.message,
icon: 'none'
})
})
},