iOS快速上手应用内购(IAP)附Demo

前言:最近项目中接触到内购,本文主要介绍如何开发应用内购(In App Purchase),有一些是根据实际需求做的考虑,有不同的见解欢迎留言指教~本文demo:https://github.com/maligh/MLIAPManager 运行时不要忘记更改Bundleid 跟productId。如果对你有帮助请不要吝惜你的star~

前期需准备: * 1.在苹果后台添加商品,记下你的商品id. *2.在苹果后台创建好沙盒测试账号.这两步就不介绍了,可以简书搜一下,bing一下,soso一下,google一下。(我要改掉意识中百度一下这种说法,?)


整个内购流程如下:

  1. 应用发送请求到服务器,获取所有的可用Products Id集合,(当然你也可以把Products Id硬编码到程序中,这样会导致不能动态配置商品).
  2. 根据服务器返回的Products Id 以及信息设置购买界面UI.(这里跟图一有些不同)
  3. 用户点击购买商品.
  4. 客户端根据相应的Product Id向App Store请求产品信息,并发起购买payment.(使用StoreKit)
  5. App Store处理该payment,并返回完成的transaction
  6. 客户端从transaction中获取receipt凭证数据,并将其发送给服务器,等待返回.
  7. 服务器验证receipt凭证数据是否使用过,保存然后发给App Store验证是否合法
  8. 服务器得到App Store验证结果,返回给客户端相应购买成功或失败信息
  9. 客户端提示用户购买结果以及处理相应UI.

以上流程需注意:

  • 6~7步的时候,请求可能发送失败。客户端需考虑将receipt凭证数据本地持久化,并加入请求失败重发机制;除了重发,请求也可能遭到拦截篡改,合理的加密方法可以增加伪造破解的难度。
  • 6~7步也可以改成客户端本地验证,不过不推荐除非是一些单机应用。
  • 服务器验证的时候注意:测试时应该使用地址:https://sandbox.iTunes.Apple.com/verifyReceipt ,生产环境地址:https://buy.itunes.apple.com/verifyReceipt . 这里要注意APP提交审核的时候测试人员使用的一般是沙盒环境

客户端内购代码就不罗列了,请看demo:https://github.com/maligh/MLIAPManager ,注释写的挺详细的,有更好见解的请留言,觉得有帮助请star~~? 下面我贴一下大概服务端代码: demo文件中iap.py:

import httplib
import  json
receipt = raw_input("Enter Your transactionReceiptString:")
jsonStr = json.dumps({"receipt-data": receipt})
#connect = httplib.HTTPSConnection("buy.itunes.apple.com")
# sandbox
connect = httplib.HTTPSConnection("sandbox.itunes.apple.com")
headers = {"Content-type": "application/json"}
connect.request("POST", "/verifyReceipt", jsonStr)
result = connect.getresponse()
data = result.read()
connect.close()
decodedJson = json.loads(data)
print decodedJson#测试查看
# status = decodedJson[u'status']
# if status == 0:
	# 验证成功逻辑
# elif status == 21007:
	# 重新给沙盒环境发送一遍
# else:
	# 验证失败逻辑
复制代码

使用方法: 替换iap.py 中的receipt值 然后进入命令行中执行 /usr/bin/python2.7 iap.py 然后你会得到类似:


结尾:好啦,不啰嗦了,快两点了?,有不懂得或不同见解的请留言,互相交流~互相学习~欢迎star~,最后感谢你的时间~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值