苹果内支付(iOS IAP)的流程与常用攻击方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了苹果内支付(iOS IAP)的流程与常用攻击方式相关的知识,希望对你有一定的参考价值。

参考技术A 摘录: 苹果应用内支付(ios IAP)的流程与常用攻击方式

按照安全性原则, 客户端的所有信息都是不可信的,而且支付是业务中的核心模块,所以应该选择第二种。

下面简要介绍下,第二种方式的简单流程。

作为支付,安全性是第一位的,下面简要分析一下常用的攻击手段。

客户端拿到apple的receipt 并发送到server
server拿到这个receipt,向苹果验证得到apple_callback_data
如果apple_callback_data的status是21007,说明是沙盒模式(不用花钱就可以购买) 要根据具体需求判断处理逻辑,需要注意的是,ios的审核在支付的时候就采用的沙盒模式。
如果apple_callback_data的status是0,就要从apple_callback_data[‘receipt’][‘in_app’]这个list中拿到所有的记录,每一个进行充值。然后记录transaction_id和original_transaction_id来防止同一个transaction被重复使用。

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html

https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1 => Original Transaction Identifier

返回所有充值成功和重复的transaction_id, 有client来complete transaction
summary
支付作为核心模块,除了技术上的保证,商务也应该每周进行一次对账。如果发现apple上的收入和服务端记录的收入有比较大的差距,就应该抓紧查看原因。

最后给出一个apple_callback_data的例子

iOS IAP基本流程.md

参考技术A IAP的流程就是指内购,简单来说就是 应用内支付 ,但是包含的逻辑非常多,有些人说 苹果内购坑太多 ,但是你需要考虑它的承载和应用能力.

题外话: 只要苹果公司在运营, 那么其IAP就会被应用,除非苹果放弃 30% 的分成. 那么对IAP的认识、学习掌握还是值得你下成本的.

😄这里面有一些小细节,请仔细阅读哈

注意:该delegate中 queue.transactions 和 transactions 的区别;
正常情况下,是一样的.

3.老用户优惠价: @property(nonatomic, readonly) NSArray<SKProductDiscount *> *discounts ,注意是 SKProductDiscount

4.价格: @property(nonatomic, readonly) NSDecimalNumber *price() price

苹果规定所有内购绑定的账号都应该是apple账号,所以不登陆你App自己的账号也应该可以购买,也就是游客状态下也要能购买,不然就耽误苹果赚钱了。
关于这个问题有两个解决办法:
(1)做游客模式可购买(未登录是绑定设备,下一个账号登录以后绑定账号)
(2)必须登录才可以使用app。
⚠️⚠️⚠️ 风险性高 : 当然也可以做一个审核接口来应对,被发现会被下架。
最保险的: 你的运营人员和苹果达成协议, 不登录你的App不能做IAP购买. 腾讯视频 应该就是这种用户必须登录.

😄😄😄 若大家有IAP相关问题,都可询问,或许我可以帮到你

以上是关于苹果内支付(iOS IAP)的流程与常用攻击方式的主要内容,如果未能解决你的问题,请参考以下文章

iOS IAP基本流程.md

Cocos2dx使用ios内支付IAP具体流程-白白

iOS应用内支付(IAP)服务端端校验详解

Vue&uniapp实现IOS iap支付

iOS开发支付篇-内购(IAP)

IOS内购(IAP)的那些事