WeFlow - 一个基于 tmt-workflow 前端工作流的开发工具。
Koala - 预处理器语言图形编译工具,支持 Less、Sass、CoffeeScript、Compass framework 的即时编译。
CodeKit - 自动编译 Less、Sass、Stylus、CoffeeScript、Jade & Haml等文件。
PaintCode - 将设计转换成 Objective-C, Swift 或 C# 代码。
Hostsprefpane - 编辑 hosts 文件的工具。
iHosts - 唯一上架 Mac App Store 的 /etc/hosts 编辑神器。
Integrity - 轻松找到无效链接。
SwitchHosts - 一个管理、切换多个 hosts 方案的工具。
Gas Mask - 编辑 hosts 文件的工具,更简单方便。
DiffMerge - 可视化的文件比较(也可进行目录比较)与合并工具。
Gemini - 智能的重复文件查找器。
Hex Fiend - 快速而聪明的开源十六进制编辑器。
BetterRename - 一款强大的批量重命名工具,可以通过搜索功能改名。
PPRows - 计算你写了多少行代码。
SCM Breeze - 用于增强与git交互的shell脚本集(用于bash和zsh)。
Beyond Compare - 对比两个文件夹或者文件,并将差异以颜色标示。
Cacher - 基于云的团队代码片段管理器,具有Gist同步,VSCode/Atom/Sublime软件包和Mac/Windows/Linux/Web客户端。
Kaleidoscope - 一款很强大的文本文件和图像比较工具,同时和 git、svn 等版本控制工具能够完美的结合。
Fanvas - 把 swf 转为 HTML5 canvas 动画的系统。
EnvPane - 图形终端查看环境变量的应用工具。
Dash - 强大到你无法想象的 API 离线文档软件。
SnippetsLab - 管理和组织你的代码片段。
StarUML - 强大的软件建模软件。
Vagrant Manager - 管理你本地服务。
FinderGo Finder 中快速打开终端,定位到目录
Localname - 提供对本地开发服务器的访问权限。
zeplin - 前端与设计协同工作专用工具。
Go2Shell - 从 Finder 打开命令行。
SecureCRT - 一款支持 SSH、Telnet 等多种协议的终端仿真程序。
MJML - 简化设计回应电子邮件的方式。
TeXstudio - 集成创建 LaTeX 文档的写作环境。
Vagrant - 用来构建虚拟开发环境的工具。
LaunchRocket - 在 Mac 系统偏好设置中创建服务管理。
Swiftify - Xcode & Finder 扩展 Objective-C 转 Swift 代码转换器
Woodpecker - 在Mac上查看、编辑iOS App的沙盒文件, UserDefaults, Keychain项
a 消耗型商品:只可以使用一次的产品,使用以后即失效,必须再次购买。
示例:小说App购买的书币书券。
b 非消耗型商品:只需购买一次,不会过时或随着使用而减小的产品。
示例:游戏 App 的赛道。
c 自动续期订阅:容许用户在固定时间段内购买动态内容的产品。除非用户选择取消,不然此类订阅会自动续期。
示例:每个月订阅提供流媒体服务的 App。
d 非续期订阅:容许用户购买有时限性服务的产品。此 App 内购买项目的内容能够是静态的。此类订阅不会自动续期。
示例:为期一年的已归档文章目录订阅。
a 客户端向Appstore请求购买产品(假设产品信息已经取得),Appstore验证产品成功后,从用户的Apple账户余额中扣费。
b Appstore向客户端返回一段receipt-data,里面记录了本次交易的证书和签名信息。
c 客户端向我们可以信任的服务器提供receipt-data
d 服务器对receipt-data进行一次base64编码
e 把编码后的receipt-data发往itunesappstore进行验证
f itunesappstore返回验证结果给服务器
g 服务器对商品购买状态以及商品类型,向客户端发放相应的道具与推送数据更新通知
a 验证苹果自动续费的合理性: 是否是切换了账号了,是否是同一个账号下有2个不同的appleid订阅(订阅类型会进行此校验,消耗性直接走b)
b 后台校验成功后,创建后台订单
c 订单生成后,传入productID发起购买请求,苹果服务器验证产品成功后,从用户的Apple账户余额中扣费并向客户端返回凭证(receipt-data)
d 客户端拿到凭证后,向服务器发起凭证校验,服务器拿到凭证进行一次base64编码,发到苹果服务器进行校验并返回结果给服务器。
e 服务器对商品购买状态以及商品类型,向客户端发放相应的道具与推送数据更新通知
解决掉单问题前,我们要先简单把从支付请求开始到结束的步骤按照顺序排列出来,然后分析每一个步骤可能存在的调单情况。
调单的处理可分为在拿到交易订单之后调用 IPA 创建一个 IPA 交易,并且添加到支付队列,收到回调前跟收到回调后。
在创建后台订单时,此时后台会把订单信息回调,并将其已模型的形式存入Keychain中(存入Keychain中数据不会因卸载app等 *** 作丢失)
通过校验队列中的transactions进行判断,没有的话就是没有发起支付请求,那么此时需要重新发起支付的请求。
通过校验队列中的transactions进行判断,有的话就是已经发起支付请求但是没有收到回调,此时需要做SKPaymentQueuedefault()restoreCompletedTransactions()(恢复已经完成的 交易)
首先将transactionId和凭证更新到已存入的Keychain中,通过校验Keychain中的transactionId是否存在,来确定是否已经收到回调,此时需要拿着存入Keychain中的凭证等到后台去校验。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)