苹果内购记录

最近整了一把苹果内购集成,记录一波。

1. 准备事项

  1. 苹果开发者账号
  2. 苹果appstoreconnect 认证(付费)
  3. 付款信息
  4. 提供一个账号给开发
  5. 配置内购产品信息:名称和价格这些属性

嘿嘿,以上这些事情统统交给产品。如果没有产品,那就交给老板吧。
【图片】

如果他们不愿意,和他们说的时候带上这个
【图片】

3. 开搞前缕缕思路

苹果内购集成有两个版本:
V1:集成体验差
V2:集成体验不错,有SDK

看起来选择V2没跑了,可是那个劳什子产品说我们的App要兼容iOS14,我直接谢。敢情玩我呢,让我看到了希望,又把我的希望给掐灭了。反思了一下,应该是技术方案评审的时候忘记带谈判神器了,毕竟神器在手,产品只能苟。
在这里插入图片描述

棋差一着,只能忍着心里的不痛快,赶紧把思路给搞出来。毕竟老板也想着快点赚钱,要是耽误了老板赚钱,直接降本增笑就难受了。那就继续搬砖吧,先把逻辑给搞一下:

在这里插入图片描述

这整套流程执行下来如果都成功,那是相当完美的。这句话的意思是如果有些地方执行不成了,那就完犊子了。相信你也发现了,这里最关键的一步是:【完成交易】。如果这一步出问题,那就是用户给钱了,但没给用户发服务。

这就是著名的苹果内购掉单问题。那怎么破呢?
第一步:穿上西装站直
第二步:弯腰90度
第三步:虔诚地说出:对不起

不好意思,走错片场了。

第一步发现问题:

  • 用户写邮件来对线了
  • 每天查一下苹果后台交易成功的数量和后台数据库交易成功的数量能不能对上
  • 客户端和服务端加上日志

第二步排查问题:

  • 用户找你的时候要他提供订单号,然后可以通过API查询到这笔订单是否真实存在
  • 苹果后台数据和服务后台数据对不上的时候赶紧查日志去

第三步解决问题:

  • 客户端做另外的掉单处理,比如说轮训查还有有没有交易是没完成的,然后重新提交服务端
  • 手动给用户补发
  • 退款(让用户去苹果退,开发者只能协助)

4. 差不多了,开搞

其实,已经搞完了。。

还有一个问题:苹果的订单怎么和后台的订单对应上?

正常情况下,苹果和后台是通过交易ID关联起来的。但怕的就是不正常的情况。
假设用户购买了一个商品之后,去服务端发放权益的时候失败了。用户以为是App的bug,结果把App卸载重装了,一重装App保存的交易ID可就没了。

这个时候还剩下什么?用户的设备ID,用户的uid和交易凭证。
我们只能在这三个值之间开辟出一条路来的。众所周知,交易凭证不能带任何自定义的信息(applicationUsername这个属性是个坑,别踩),所以抛去一切复杂的逻辑之后,最简单的就是根据这三个值:uid+商品id+购买时间 来寻找一个后台合适的交易挂上(这里不得不淬一口,是真的恶心)

在这里插入图片描述

交易凭证验证:

这玩意解析压根就不用token

官方文档:verifyReceipt | Apple Developer Documentation

Ref

代码看这个大佬的:Java接入苹果支付 – IAP支付 – IOS应用内支付- 完整版 - Java实战博客 (zanglikun.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/342872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美妆巨头娇联集团签约实在智能,婷美小屋、婷美美肌、维密元素、军献等携手共赴人机协同时代

2023年,生成式人工智能、大语言模型技术爆发,以大模型驱动的Agent智能体正在成为产业发展的新引擎。近日,娇联集团与实在智能正式达成合作,引入行业领先的实在Agent智能体解决方案,打造应用于各部门的“懂业务的智能体…

【Golang】IEEE754标准二进制字符串转为浮点类型

IEEE754介绍 IEEE 754是一种标准,用于表示和执行浮点数运算的方法。在这个标准中,单精度浮点数使用32位二进制表示,分为三个部分:符号位、指数位和尾数位。 符号位(s)用一个位来表示数的正负,0表示正数,1表…

云畅科技技术中心被认定为湖南省省级企业技术中心

近日,湖南省工业和信息化厅公布《2023年第二批湖南省省级企业技术中心(第29批)》,云畅科技技术中心作为研发设计型代表入选。 省级企业技术中心是强化企业技术创新主体地位,增强企业自主创新能力,推动工业企业高质量发展的一个重要…

RuntimeError: Placeholder storage has not been allocated on MPS device!解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

也谈人工智能——AI科普入门

文章目录 1. 科普入门人工智能的定义人工智能的类型 - 弱 AI 与强 AI人工智能、深度学习与机器学习人工智能的应用和使用场景语音识别计算机视觉客户服务建议引擎数据分析网络安全 行业应用人工智能发展史![img](https://img-blog.csdnimg.cn/img_convert/66aeaaeac6870f432fc4…

【发票识别】支持pdf、ofd、图片格式的发票

背景 为了能够满足识别各种发票的功能,特地开发了当前发票识别的功能,当前的功能支持pdf、ofd、图片格式的发票识别,使用到的技术包括文本提取匹配、ocr识别和信息提取等相关的技术,用到机器学习和深度学习的相关技术。 体验 体…

3-微信小程序组件基本用法

小程序组件是由宿主环境提供的,开发者可以基于组件快速搭建出页面结构。官方把小程序组件分为9类。 视图容器基础内容表单组件导航组件媒体组件map地图组件canvas画布组件开放能力无障碍访问 常用视图组件 view 官网传送门 普通视图区域 类似于HTML中div&#x…

制作文件二维码有什么好处?多个文件通过一个二维码展示的方法

现在把文件做成二维码来使用是很常见的一种方式,那么为什么很多人会选择这种方式来分享文件呢?那么用文件二维码有哪些好处呢?下面就让小编来给大家讲解一下。 首先,将文件制作二维码有利于多人同时查看内容,方便文件…

用C语言采集亚马逊amazon产品数据

上一篇文章我是用C写的一个爬取亚马逊的爬虫程序,相信大家已经看过了,这次呢,我依然使用C语言来写一个爬虫,大体上思路是和之前一样,只是支持的库以及语法有些区别,具体的呢我会一一解释出来,方…

使用CentOS搭建高性能静态HTTP服务器

在互联网应用中,静态内容是广泛存在的,例如HTML页面、图片、视频等。为了提供高效、稳定和安全的静态内容服务,我们可以使用CentOS来搭建高性能的静态HTTP服务器。 1. 选择合适的软件 Nginx和Apache是两个流行的HTTP服务器软件。Nginx以其高…

HarmonyOS4.0系统性深入开发18公共事件简介

公共事件简介 HarmonyOS通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。 公共事件从系统角度可分为:系统公共事件和自定义公共事件。 系统公共事件:CES内部定义的公共事…

【控制篇 / 策略】(7.4) ❀ 01. IP地理位置数据库和地理地址对象 ❀ FortiGate 防火墙

【简介】在很多使用环境下,我们需要对指定国家的IP地址进行允许或禁止访问操作,例如只允许访问国内IP。以前只能手动添加IP地址对象到地址组,繁杂且效率低下,Fortinet提供了基于地理位置的IP库,就可以解决这个问题。 I…