uniapp使用苹果支付

Posted 苏格拉的底

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uniapp使用苹果支付相关的知识,希望对你有一定的参考价值。

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。)

以上是关于uniapp使用苹果支付的主要内容,如果未能解决你的问题,请参考以下文章

uniapp使用苹果支付

uniapp实现iOS支付苹果内购支付踩过的坑以及具体操作步骤

uniapp 苹果支付注意事项(前端)

Vue&uniapp实现IOS iap支付

基于ios的网上商城可以用uni-app嘛

uniapp支付之支付宝APP支付