uni app ios 苹果内购

app ios 苹果内购 的步骤

在这里插入图片描述
1,准备工作先要uniapp 开发ios 内购需要准备的沙盒 测试账号,在苹果手机登录沙盒账号 也就是把自己的Apple ID退出登录沙盒账号,manifest.json中APP模块配置勾选 apple应用内支付。在app store connect配置好 苹果内购商品id 。在HBuilderX 运行基座设置成自定义调试基座(需要自己先打一个自定义基座的包,发行->原生APP-云打包->打包类型选为自定义调试基座)
2,开始写 内购的代码

<template>
	<view>
		<view class="pay-list">
					<view class="row" @click="bthActive(index,row._id,row.price)" v-for="(row,index) in allPriceInfo"
					 :key="index">
						<view class="name">{{row.goods_name}}</view>
						<view class="price">¥{{row.price}}</view>
					</view>
		</view>
		<view class="subPay" @click="subPaynow">立即充值</view>
	</view>
<template>	
<script>
		let iapChannel = null,
	    productId = '1001', //默认苹果内购商品id 要提前在app store connect 配置 要支付的商品的标识(必须是调用uni.requestPayment返回的有效的商品标识)
	    productIds = ['1001','1002','1003','1004','1005','1006'];  //商品的id 列表
	    export default {
			data() {
				return {
						orderId:null,	
						allPriceInfo: [{
								"_id": '1001',   //这个商品的id 一定要跟在app store connect配置的ID相同
								"goods_name": "商品2",
								"price": "12",
							},
							{
								"_id": '1002',
								"goods_name": "商品2",
								"price": "12",
							},
					],
					
				}
			},
			onLoad() {

					// #ifdef APP-PLUS
					 //1.首先调用plus.payment.getChannels获取支付通道,IAP支付通道的ID为“appleiap”
					 plus.payment.getChannels((channels) => {
						console.log("获取到channel" + JSON.stringify(channels))
						iapChannel = channels.find(i => i.id === 'appleiap')
						console.log("获取到iapChannel" + JSON.stringify(iapChannel))
						if(iapChannel){
							this.requestOrder();
						}
						if(!iapChannel){
							this.errorMsg()
						}
					}, (error) => {
						this.errorMsg()
					});
			},
			methods:{
						//苹果内支付
						 //2.调用ID为“appleiap”的PaymentChannel对象的requestOrder方法,像Appstore请求有效的商品详情。注意:IAP支付必须在调用payment.request方法之前,调用requestOrder方法,否则调用payment.request将会报错。
					requestOrder() {
						uni.showLoading({
							title:'检测支付环境...'
						})
						iapChannel.requestOrder(productIds, (orderList) => { //必须调用此方法才能进行 iap 支付
							console.log('requestOrder success666: ' + JSON.stringify(orderList));
							uni.hideLoading();
						}, (e) => {
							console.log('requestOrder failed: ' + JSON.stringify(e));
							uni.hideLoading();
							this.errorMsg()
						});
					},
					
					//选中价格的时候
					bthActive(index, id, price) {
							this.orderId = id
						},
						
					//点击立即支付
					  //3.调用uni.requestPayment方法发起支付请求,
					subPaynow(e) {
						let _this = this
						uni.showLoading({
							title:'支付中...'
						})
						productId = _this.orderId
						uni.requestPayment({
							provider: 'appleiap',
							orderInfo: {
								productid: productId,  //必填
								quantity:1,//选择的数量  可不填
								username:''   //支付商户的名称 可不填
							},
							success: (e) => {
								console.log('支付成功====',e)
								uni.hideLoading()
							},
							fail: (e) => {
								uni.hideLoading()
								console.log('支付失败,原因为===',e.errMsg)
							},
							complete: () => {
								uni.hideLoading()
								console.log("payment结束")
							},
						})
					},
					errorMsg(){
						uni.showModal({
							content: "暂不支持苹果 iap 支付",
							showCancel: false
						})
					},
			}
		}
</script>

返回的支付数据 仅供参考 console.log(‘支付成功====’,e)

{
  "payment": {
    "productid": "1001",
    "quantity": "1"
  },

  "transactionDate": "2021-03-25 17:12:23",

  "transactionIdentifier": "1000000793435070",

  "transactionReceipt": "ewoJInNpZ25hdHVyZSIgPSAiQXd1NllXSU5abGgzS1lOTHExam9LN0E4L1k1dWk2ZzBHYUZSRnp6dnkzRWpIUElKQ0kxWW91SDFMN1hENWRCbDBUOWdtK2o1UTJBT25Bd2pjQWpWSW5WVjZFZU5zR3dXdnQ0NGJVMUF4VFBuN3ExaDZ3bnFlZkRieHpvNEtpbTdPb1JXUWlLdVBoR2JBM2ZMWXRXQzFTbHZ4SVZ3MUtBeHlhTjNRanV1U0loTHZRNmtHTzkltbHpMWFJ5YVdGc0xYQmxjbWx2WkNJZ1BTQWlabUZzYzJVaU93b0pJbkIxY21Ob1lYTmxMV1JoZEdVdGNITjBJaUE5SUNJeU1ESXhMVEF6TFRJMUlEQXlPakV5T2pJeklFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW05eWFXZHBibUZzTFhCMWNtTm9ZWE5sTFdSaGRHVWlJRDBnSWpJd01qRXRNRE10TWpVZ01EazZNVEk2TWpNZ1JYUmpMMGROVkNJN0NuMD0iOwoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsKCSJwb2QiID0gIjEwMCI7Cgkic2lnbmluZy1zdGF0dXMiID0gIjAiOwp9",

  "transactionState": "1",

  "errMsg": "requestPayment:ok"

}
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值