2025-11-08
编程与技术
00

这种现象可能有很多情况,最常见的原因就是 已有的Apple订单没有正确关闭! 经过老狗的测试,老狗遇到的是下面这种情况:

沙箱测试环境下,订阅会员成功后,后续每5分钟自动续费一次(沙箱设置),自动续费后,下次再支付,就不会有已订阅的提示了,直接自动提示支付成功了!但此时会员其实并没有增加有效期!(正常情况下,订阅有效期间订阅相同内容,apple支付会直接提示已订阅,无需重复订阅

经过学习和排查发现我的错误原因,是因为app前端没有正确处理自动续费的通知!出现问题的逻辑步骤大概如下:

  1. 在apple自动续费后,会主动给服务端发送一个通知,后端收到通知记录订单信息并给予了用户相应的权益;
  2. 此时服务端已经完成了续费业务,apple也不知道,下次用户操作开启apple支付时,apple又把自动续费的通知发给了前端(在支付成功回调中)
  3. 此时就出现了:用户点击立即支付,刚唤醒apple支付,前端代码就立即收到了apple的支付成功通知,但接收到的其实是之前的自动续费成功信息,并不是这次要支付的订单!

这就是Apple侧的前端支付通知设计,不仅是当下的支付会有通知,以前的自动续费但未完结的订单也会通知!

在apple自动续费后,下次初始化iap支付时,会立即通知之前没有处理完成的订单,一般自动续费都是支付成功的订单,所以现象就是:当你初始化支付时,apple还没开始处理新的支付,你的程序就(误以为)接收到了支付成功的通知,从而自动完成了。。。

(网络搜集到的)解决方案 也“很简单”:在进入商品页面,或启动app时,就初始化一次iap支付,此时可能接收到一些自动续费的成功的通知,接收到通知时,正确处理这些通知,调用“complate”保证把这些通知相关的交易正确关闭,这样就不会再收到这些通知了!

当然这种解决方案也有问题:如果自动续费的通知没有和服务端订单匹配上,怎么处理?是不是会影响用户权益?这就要你自己取舍了! 普遍的做法是:如果接收到支付成功通知,象征性地与服务端校验,无论服务端是否处理成功,前端都要调用“complate”,来确保这个通知完结!不要影响后续的支付!!!

上面是基于网上搜集资料和自己实际问题总结的文字,仅供参考!

再往下是 Gemini 的回答,请自行阅读分析

2025-11-05
编程与技术
00

简介

flutter 开发鸿蒙,不知道哪个组织拉了一个 flutter 分支进行了适配,官方版本 flutter 是不支持鸿蒙系统的,所以为了开发鸿蒙,需要安装适配后的 flutter 版本,仓库地址:https://gitcode.com/openharmony-tpc/flutter_flutter/

新版本其实切换很简单,只需要两步:

  1. 下载鸿蒙版flutter
  2. 修改对应的环境变量,使其生效

只是这两步,我踩了一个小坑搞了一个钟头。。

2025-11-01
Mac使用手册
00

Mac 并没有 Windows 那样的“我的电脑”,最接近的概念是访达的“电脑”

  • 显示内容:

    • 系统盘(Macintosh HD)
    • 外接硬盘
    • 网络驱动器
  • 所以 Mac 的“访达 → 电脑” 就相当于 Windows 的“我的电脑”,只不过Mac中一般 单独的硬盘只是其中一个卷

打开方法如下:

2025-11-01
Mac使用手册
00

在 Mac 上安装软件的方法有几种,取决于软件的来源和类型。我将列出所有常见安装方式:


1、从 App Store 安装

这是最简单和最安全的方法。

  1. 打开 App Store(Dock 上或者在 Spotlight 搜索栏输入“App Store”)。
  2. 搜索你需要的软件名称。
  3. 点击 获取购买 按钮,然后输入 Apple ID 密码(如果需要)。
  4. 下载完成后,软件会自动安装在 应用程序 文件夹里。
2025-11-01
Mac使用手册
00

在 Mac 上卸载软件有几种方式,取决于软件的安装方式。下面我按常见情况分成几类讲清楚 👇


一、通过 Launchpad 卸载

适用于:从 Mac App Store 下载的应用。

  1. 打开 Launchpad(点击 Dock 上的火箭图标 🚀,或用手势四指捏合)。
  2. 找到要卸载的应用。
  3. 长按图标(类似 iPhone 上的删除操作),图标开始抖动。
  4. 点击应用左上角的 ❌ 删除按钮
  5. 在提示中确认删除。

🧹这种方式会彻底删除 App 的主程序,但不会清理配置文件(它们在 ~/Library 中)。