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

news/2024/11/9 5:05:30/

由于我们app会员属于虚拟产品,所以苹果商店要求我们必须选择苹果内购,否则就勒令下架。
无奈,于是就又开始了踩坑之旅~
uniapp可以直接使用uni-pay的插件去进行苹果内购。
但是,在对接自己的项目之前,建议先跑通示例项目,能跑通示例项目,代表你的配置和证书一定是正确的,然后再将uni-pay集成到你自己的项目中,不然就像盲头苍蝇,不知道怎么做。

(1)从插件市场导入uni-pay示例项目。前往插件市场

在这里插入图片描述

(2)关联自己的云空间,没有就新建一个

打开uni-pay配置文件,配置文件地址: uniCloud/cloudfunctions/common/uni-config-center/uni-pay/config.js
在这里插入图片描述
大家注意了,这个示例项目在导入hbuilderx的时候,它已经创建好了config.js的文件以及对应的目录,那我们到接入自己项目的时候。就需要自己去手动创建,然后把文件的内容复制粘贴过去。

const fs = require('fs');
const path = require('path')
module.exports = {// 统一 - 支付回调地址,格式为 "服务空间ID":"URL化地址""notifyUrl": {// 本地开发环境-支付回调地址"b267e273-19a7-4288-99c7-f6f27f9c5b77": "https://b267e273-19a7-4288-99c7-f6f27f9c5b77.bspapp.com/uni-pay-co",// 线上正式环境-支付回调地址"499e2a37-0c77-418a-82aa-3e5820ecb057": "https://499e2a37-0c77-418a-82aa-3e5820ecb057.bspapp.com/uni-pay-co",},// ios内购相关"appleiap" :{// ios内购支付"app": {"password": "", // App 专用共享密钥,App 专用共享密钥是用于接收此 App 自动续期订阅收据的唯一代码。如果您要将此 App 转让给其他开发者或不想公开主共享密钥,建议使用 App 专用共享密钥。非自动续订场景不需要此参数"timeout": 10000, // 请求超时时间,单位:毫秒"sandbox": false, // 是否是沙箱环境(本地调试ios走的是沙箱环境,故要设置为true,正式发布后,需要设置为false)}}
}

(3)上传公共模块 uni-config-center(右键,上传公共模块,每次修改了支付配置,都需要重新上传此模块才会生效)

(4)上传公共模块 uni-pay(右键,上传公共模块)

(5)上传云对象 uni-pay-co(右键,上传部署。当然对uniCloud目录点右键批量上传也可以)

(6)数据库初始化

在这里插入图片描述

(7)修改manifest文件

在这里插入图片描述
这里要注意,只能选择apple应用内支付这一项,不要去勾选支付宝或者微信。

(8)云打包

只有通过云打包,iOS内购才能生效。
在这里插入图片描述
这里也要注意一个坑。。。
就是在你接入自己的项目的时候,你是以插件的形式(uni_modules)依赖的,如果使用了easycom,就要做下配置,否则uni-pay没法正常依赖使用。也可能造成云打包失败。
在这里插入图片描述

"easycom": {"autoscan": true,"custom": {"^model-(.*)": "@/components/model-$1/model-$1.vue", // 匹配components目录内的vue文件"^uni-list-i(.*)": "@/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue", // 匹配uni_modules目录的vue文件"^uni-(.*)": "@/uni_modules/uni-$1/components/uni-$1/uni-$1.vue", // 匹配uni_modules目录内的vue文件"^vue-file-(.*)": "packageName/path/to/vue-file-$1.vue" ,// 匹配node_modules内的vue文件"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"}},

(9)如何获取产品id(ios内购产品id(仅ios内购生效))

需要注册ios开发者账号,且交了年费(688元/年)
需要在ios开发者平台添加内购商品,并获得商品id
ios沙箱测试时,需要先在ios开发者平台添加沙箱测试账号,同时你的测试手机上需要登录ios沙箱账号
目前hbx版本热刷新会导致ios支付无法正常调用,因此每次修改完代码保存后,需要先关闭手机App,然后hbx重启项目,再打开手机app。(后面HBX会修复此问题)
具体怎么操作可以看下这篇博文–《Java接入苹果支付 – IAP支付 – IOS应用内支付- 完整版》
成功获取到productId之后,就在代码中填入:
在这里插入图片描述

然后就可以选择自定义基座的方式去运行测试了。
如果苹果内购的支付弹窗出不来,然后控制台报错了,可能是ios内购支付漏单重试这里的请求服务端回调这里出错了,我们可以先注释掉。
在这里插入图片描述
如果还有别的报错,再去看控制台提示的或者手机弹窗的进行整改。一般是以下几个错:
在这里插入图片描述
配置回调url(这个可以不配,因为我们后面自己接入的时候,要调用自己写的请求服务端验证回调),在这里配置是为了让示例项目稳定运行起来。
在这里插入图片描述
最好就注释掉这里
在这里插入图片描述
把最终的url拼接,保证运行不出错
在这里插入图片描述
运行成功弹出这个内购的时候,就可以用注册的沙箱账号去测试支付了。
在这里插入图片描述
但是沙箱账号同一个产品id只能买一次,需要再测试就要清除历史购买记录才行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(10)怎么接入自己的项目?

①导入插件到自己的项目,关联云空间,我选的是阿里云的。直接确认合并项目。
在这里插入图片描述
如果没有云空间要自己创建
在这里插入图片描述
创建之后才能关联
在这里插入图片描述

在这里插入图片描述
然后就可以根据我上面的1-9的步骤照着做。
这样就可以了。

(11)在哪里加自己的回调?怎么弄

在这里插入图片描述
把这个verifyReceiptFromAppleiap改成自己写的
在这里插入图片描述
最后真正上线的时候记得修改
uniCloud/cloudfunctions/common/uni-config-center/uni-pay/config.js
在这里插入图片描述
改成false


http://www.ppmy.cn/news/556309.html

相关文章

零基础入门金融风控之贷款违约预测挑战赛——简单实现

零基础入门金融风控之贷款违约预测挑战赛 赛题理解 赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题。通过这道赛题来引导大家了解金融风控中…

易混淆单词总结

英文中文frustrationn. 挫败,沮丧frustratevt. 挫败,使沮丧,阻止,挫败frustrated adj. 沮丧的 v. frustrate的过去和过分 frustrating adj. 令人沮丧的 v. frustrate的现分 infrastructuren. 基础设施infrastructuraladj. 基础设施…

2023版智慧高速智慧公路总体建设方案,售前人员必备方案

导读:原文《智慧高速智慧公路总体建设方案》共83页PPT(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 如需获取完整的电子版内容参考学习 您可以关注评论…

C 语言之父丹尼斯·里奇逝世十周年

整理 | 王启隆 王晓曼 出品 | 程序人生 (ID:coder _life) Dennis Ritchie (丹尼斯里奇)于 1941 年 9 月 9 日出生在美国纽约的布朗克斯维尔,2011 年 10 月 12 日逝世(享年 70 岁)…

重庆北大青鸟解放碑校区J11班 胡舜博组 【重庆Major官网】

重庆北大青鸟解放碑校区 J11班 项目小组:胡舜博小组 项目名称:重庆Major官网 游戏比赛录像功能 网站首页banner图 游戏赛事新闻 项目介绍: 本项目的主要内容围绕一款热门的Moba类游戏—DOTA2,2019年1月份在重庆举办大型赛事…

C语言基础:指针的使用

本文结合工作经验,研究C语言中指针的用法。 文章目录 1 指针的概念2 用法与使用场景2.1 函数的指针参数2.1.1 基本概念2.1.2 使用场景1-函数返回多个值2.1.3 使用场景2-减少函数参数 2.2 void*指针2.2.1 基本概念2.2.2 使用场景 2.3 空指针2.4 const指针2.4.1 基本…

ruoyi-vue版本(二十七)UUID 随机数相关的文件的解析

目录 1 Serializable 接口和实现 Comparable<UUID> 接口的作用2 类属性serialVersionUID2.1 这个属性名称可以随便起嘛 3 SecureRandom 这个类作用是什么&#xff0c;如何使用4 ThreadLocalRandom5 什么是变体信息6 AtomicInteger 1 Serializable 接口和实现 Comparable …

淦、我的服务器又被攻击了

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 最近老是有粉丝问我&#xff0c;被黑客攻击了&#xff0c;一定要拔网线吗&#xff1f;还有…