1、mainfest的payment支付(apple应用内支付需要打钩)
2、苹果后台开发者https://developer.apple.com/account/resources/certificates/list 需要把打包的配置文件勾上苹果支付,有一个是订阅,一个是支付,别勾错了。
3、申请支付参数,https://appstoreconnect.apple.com/apps/1615504939/appstore/addons?m= App 内购买项目添加支付的参数(这个参数需要先上一个版本的app后才能申请让他审核,要是有一个版本app在上面还没审核,打电话或者留个邮件给他叫他审核)
在这里插入图片描述

4、代码,需要先初始化

initIAP() {
				uni.LTY.loaded()
				plus.payment.getChannels((channels) => {
					console.log(channels)
					for (var i in channels) {
						var channel = channels[i];
						// 获取 id 为 'appleiap' 的 channel  
						if (channel.id == 'appleiap') {
							console.log("苹果")
							iap = channel;
							uni.LTY.loaded()
							// my_accurate_weather支付参数
							iap.requestOrder(['my_accurate_weather_', 'my_accurate_weather_'], (
								orderList) => {
								//必须调用此方法才能进行 iap 支付 
								console.log('requestOrder success666: ' + JSON.stringify(orderList))
								uni.LTY.loaded()
							}, (e) => {
								console.log('requestOrder failed: ' + JSON.stringify(e));
								uni.LTY.loaded()
								uni.LTY.toast('暂不支持苹果 iap 支付')
							});
						}
					}
				}, function(e) {
					console.log("获取iap支付通道失败:" + e.message);
				});
			},
applePay(para) {
				setTimeout(() => {
					uni.LTY.loaded()
				}, 2000)
				uni.requestPayment({
					provider: 'appleiap',
					orderInfo: {
						productid: para,
						username: 'myaccurateweather' + this.$store.getters.me.id, // 用户标识
						optimize: true // 设置 optimize: true 解决丢单问题  
					},
					/* 
					orderInfo可传参数一览
					productid: (String 类型 )(必填) 商品的标识,你在苹果那里添加的商品标识 
					username: (String 类型 )(可选) 购买用户名称,我喜欢在这里传入订单号,这样支付成功时就可以获得订单号 
					quantity: (String 类型 )(可选) 商品数量,默认为 "1" 
					optimize:(Boolean)(可选) HX 3.1.10 版本新增参数,解决用户未绑定支付方式造成的丢单问题; 
					*/
					success: (e) => {
						uni.LTY.loaded()
						console.log(e)
						//这里把参数返回服务器进行二次验证 
						//这里再次验证是否订单真实有效
						uni.request({
							url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。 
							data: {
								parasm: e,
							},
							success: (res) => {
								uni.showModal({
									content: "Success",
									showCancel: false,
								})
								try{
									// 购买成功 更新用户vip时长
									this.updateUserVip(para);
									uni.navigateBack();
								}catch(e){
									//TODO handle the exception
								}
							},
						});
					},
					fail: (e) => {
						console.log(e)
						uni.LTY.loaded()
						uni.showModal({
							content: "fail: " + e.errMsg,
							showCancel: false,
						})
					},
					complete: () => {
						console.log("payment结束")
						this.payShow = false;
						this.payShow2 = false;
					}
				})
			},

5、在https://appstoreconnect.apple.com/access/users用户访问>沙盒测试员添加测试账号。在手机设置>App Store上登录沙盒账号。
不用你现在登录的手机苹果id账号,用另外一个邮箱就收邮件验证再登录,相当于是新建一个apple id账号。
6、沙箱能支付然后正式环境下也就能支付,沙箱环境支付没有真的扣费,放心。
7、我这个用的非续期订阅,有会用续期订阅的小伙伴吗?(续期订阅要是没写好,容易产生漏洞,上个月在酷我音乐开的会员,给他开一个月,然后取消订阅,然后又是新顾客,一块钱包月会员,开了三个月,就很nice。)
在这里插入图片描述

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐