美文网首页iOS收藏ios账号
IOS应用内购买(In-App Purchase)详细教程

IOS应用内购买(In-App Purchase)详细教程

作者: 李乾坤David | 来源:发表于2017-02-16 17:40 被阅读7556次
DLInAppPurchase

前言

最近公司要添加应用内购买,其中遇到了一些坑,查到的资料要不是就是很老,要不就是不太全。写个文章分享一下!宗旨就是多看图,看图能弄明白的不看文章,代码能弄懂得不看文章。

具体流程

  1. 完善协议、税务和银行业务信息
    这一部分具体可以参考iOS App提交指南(二)-协议、税务和银行业务

    协议、税务和银行业务
  2. 添加测试用户
    用户和职能中添加测试用户方便测试支付。

    添加测试用户一
    添加测试用户二
    **注意:在用真机测试应用内支付的时候退出之前的APPLE账号,用注册的测试账户登录 **
  3. 添加内购项目
    进入iTunesConnect中在功能中添加App内购买项目

    添加内购项目一
    **注意:绿色框内的文字在5中详细描述 **
    添加内购项目二
  4. 在项目中开启In-App Purchase
    在Xcode中开启In-App Purchase功能

    项目中开启In-App Purchase
  5. 提交新的版本
    这个是我之前遇到的坑,我看的文章都是创建好内购项目之后就可能在项目中使用测试了,当时我的结果就是无效productID。绿色框中写的很明白要重新提交二进制文件(.ipa文件),新的版本中添加在步骤3中添加的内购项目。

    重新提交二进制文件
    **注意:最好选择手动发布,因为本次提交只是为了让创建的内购项目ID生效,项目中可以没有关于内购的逻辑代码 **
  6. 代码实现
    直接看Demo没有Demo都是流氓。DLInAppPurchase

  7. 服务器端验证支付

    购买凭证
    **注意: NSString *receipt = [receiptData base64EncodedStringWithOptions:0];Options参数传0不要传NSDataBase64Encoding64CharacterLineLength **
  • 接收ios端发过来的购买凭证(上图中的receipt)。
  • 判断凭证是否已经存在或验证过,然后存储该凭证。
  • 将该凭证发送到苹果的服务器验证,并将验证结果返回给客户端(接口文档击这里)。
  • 如果需要,修改用户相应的会员权限。

参考和相关文章

相关文章

  • IOS应用内购买(In-App Purchase)详细教程

    前言 最近公司要添加应用内购买,其中遇到了一些坑,查到的资料要不是就是很老,要不就是不太全。写个文章分享一下!宗旨...

  • 应用内购(In-App Purchase)常见问题解答

    应用内购(In-App Purchase)常见问题解答iOS的应用内购买 iAP 坑 iOS内购你看我就够了(一)...

  • iOS内购详解

    概述 iOS内购是指苹果 App Store 的应用内购买,即In-App Purchase,简称IAP(以下本文...

  • iOS 内购(IAP) 简单总结

    1 IAP详细规则 IAP(In-App Purchase),是指苹果App Store的应用内购买,是苹果为AP...

  • iOS11人机交互指南(十一)- 技术(Technologies

    七、应用程序内购买(In-App Purchase) 应用内购买可让用户安全地在您的应用内支付虚拟商品,如优质内容...

  • iOS 苹果内购(In-App Purchase)

    内购简介 IAP 全称:In-App Purchase,是指苹果 App Store 的应用内购买,是苹果为 Ap...

  • iOS内购规则

    1 IAP规则详解 本文所述IAP(In-App Purchase),特指苹果App Store的应用内购买,是苹...

  • iOS支付

    iOS支付分为两类,第三方支付和应用内支付(内购)。 应用内支付(In-App Purchase):在应用程序内购...

  • iAP 的一些简介

    iAP 的小指南 in-App Purchase 内购的缩写为 iAP。是 iOS 自带的一种应用内数字产品的支...

  • IAP支付简介

    IAP(即 in-App Purchase)是苹果推出的App内购买虚拟商品的方式,支持iOS 6+,也就是在扣掉...

网友评论

  • e0e2e85955d9:您好,我想问下那银行资料填的国内银行,那在港澳台可以购买吗
    李乾坤David:@lcsimon 我感觉应该可以,因为你也可以买国外开发者的APP对不对?
  • 嗯_挺好的:你写的比参考的文章好:joy:
    李乾坤David:@嗯_挺好的 没问题
    嗯_挺好的:@李乾坤David 顺便问一下,我在功能里添加好了内购信息,然后提交一个版本,这个版本只是用来让苹果审核内购信息用的,是吧?代码里没有写任何内购接口的代码,没问题吧?
    李乾坤David:@嗯_挺好的 没有吧! 还行还行!
  • e2f2d779c022:写的很棒, 我写了一套完整的 IAP 方案, 处理了 IAP 的九大坑,感兴趣的朋友来看看吧:

    第一篇:[[iOS]贝聊 IAP 实战之满地是坑](https://www.jianshu.com/p/07b5ec193353),这一篇是支付基础知识的讲解,主要会详细介绍 IAP,同时也会对比支付宝和微信支付,从而引出 IAP 的坑和注意点。

    第二篇:[[iOS]贝聊 IAP 实战之见坑填坑](https://www.jianshu.com/p/8e5bf711f9f0),这一篇是高潮性的一篇,主要针对第一篇文章中分析出的 IAP 的问题进行具体解决。

    第三篇:[[iOS]贝聊 IAP 实战之订单绑定](https://www.jianshu.com/p/847838cde48b),这一篇是关键性的一篇,主要讲述作者探索将自己服务器生成的订单号绑定到 IAP 上的过程。
    李乾坤David:@NewPan 厉害厉害!
  • 程序_影子:我的app是销售视频的,每个视频的价格都不一样,必须要一一添加到内购项目里吗?有没有其他的方法(除了虚拟币以外)?急~在线等
    李乾坤David:@影子_0cc5 嗯!
    程序_影子:@李乾坤David 好的,谢谢~
    李乾坤David:@影子_0cc5 他是固定金额的,应该没有其他办法!
  • lc_cat:-(void)dl_validateReceiptWiththeAppStore:(NSString *)receipt这个方法是自己去苹果验证吧.服务器去验证了自己还要去验证吗
    lc_cat:@李乾坤David receipt 我算出来的好长好长啊 我们服务器直接报错了 receipt 能发一个我看看嘛
    李乾坤David:服务器去验证
  • 没有昵称的昵称没有:你好,请问一下,我提交审核了,可是我的ProductID还是为无效ID,请问这个要怎么获取有效的,谢谢!
    李乾坤David:@没有昵称的昵称没有 注意: NSString *receipt = [receiptData base64EncodedStringWithOptions:0];Options参数传0不要传NSDataBase64Encoding64CharacterLineLength
    没有昵称的昵称没有:@李乾坤David 已经可以了,他有个生效时间,谢谢!大神还有个问题就是我将receipt这个数据传给了后台但是后台返回的是21002,请问是不是我的receipt转码有问题NSString *receipt = [receiptData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    李乾坤David:@没有昵称的昵称没有 你的苹果账号是测试账号吗?
  • 210d7a04b2b5:你好楼主,请问你的demo在哪里还可以获取到啊,那个地址打不开啊
    210d7a04b2b5:你好楼主我还想问你个小小的问题就是,我们现在的账号是99美刀的,想弄成打包后放到企业官网谁都可以下载的那种,请问如何操作呢,如果既要商城上架,又要不通过app store谁都可以下载,是需要弄两个账号吗,还是在现有账号上升级再次支付299美刀呢
    李乾坤David:@iZj奋斗 能打开啊!要不就在GitHub上搜DLInAppPurchase
    李乾坤David:@iZj奋斗 我看看!
  • 谦言忘语:提交新的版本 这个操作,虽然不知道你那里为什么会出现错误,但是平常我创建了APP之后,再添加商品ID就可以直接进行内购测试了的。所以实际上是不需要先提交新版本的。
    不过有可能是因为你之前已经上架过,等到产品升级的时候才加上的内购功能。(因为我们一直都是首个版本就添加内购功能,没试过后来才加内购功能的情况)
  • 李乾坤David:大家仔细看注意里的内容很重要!
  • Ko_Neko:大佬,还想问一下,使用你的Demo是不是自己的测试IAP必须上架?如果想在不上架的情况仅仅测试IAP流程行不行呢? 因为我刚才打包了一个测试APP提交审核了,肯定是无法通过的,这个时候如果自己取消 ,那么内购条目可以生效吗?
    李乾坤David:@Ko_Neko 好的,私聊
  • Ko_Neko:我觉得需要上传审核才开启内购条目很不合理啊,如果想测试一下还非要上传然后自己取消?或者说第一版默认不能有内购要么就是很有自信的不测试就直接上架?
  • lc_cat:内购商品的价格 能自己自定义吗
    李乾坤David:@lc_cat 不能!我知道的只能选择不能自定义!
    李乾坤David:@lc_cat 不能!
  • lc_cat:楼主,用了你的demo 提示无效的productid 为无效的id 我现在是先被拒,然后加上内购的。加过之后没有上传包到审核呢。 我现在还没有写代码,想先用你的demo 测试一下
    李乾坤David:@lc_cat 要提交 加上内购
    lc_cat:@李乾坤David 换了啊 是不是我没有提交项目到苹果啊
    李乾坤David:@lc_cat 是不是Bundle Id没换
  • yicsnob:问一下,是不是在整个app面向用户之前,我要先把内购项目提交审核,然后内购生效了之后,再把完成了内购代码的app提交审核发布?那我提交内购项目的时候可以不提ipa包吗?还有一个问题就是,个人开发者不准备做后台,那我就不适用您的demo了吧?
    李乾坤David:@yicsnob 是的,这个没有解决方案,因为删除了,本地就没有数据了!你可以看看这个东西,maxleap.cn
    yicsnob:@李乾坤David 那像一般没有后台的单机app,如果做消耗性商品的内购比方说金币,那删除掉app数据就全没了,这种是不是完全没办法解决呢?
    李乾坤David:首先内购申请一定要和IPAD一起提交!对于没有后台的项目,我的DEMO也使用,你就在支付成功之后做本地数据改变就行了!
  • 空转风:楼主你好我现在按照你的就是无效的id,然后看了你的博客说要重新提交二进制文建,问题是我都还没有archive打包,只是创建了一个名字和icon,要怎么办
    李乾坤David:@年光逝也被僵尸号占了 对的!
    空转风:@李乾坤David 没法发图片,我文字说明下吧,就是你的第五步:“提交新的版本
    这个是我之前遇到的坑,我看的文章都是创建好内购项目之后就可能在项目中使用测试了,当时我的结果就是无效productID。绿色框中写的很明白要重新提交二进制文件(.ipa文件),新的版本中添加在步骤3中添加的内购项目。”这里我跟你一样,我但是我还没打包上传等审核,只是创建了一个APP,然后测试内购一直都是无效id,请问是否要打包上传才能测内购呢?
    李乾坤David:没听懂问题在哪!你私信发个截图过来吧!
  • 空转风:请问内购的话是要后台配合是吗,那后台具体要做什么工作呢
    李乾坤David:@年光逝也被僵尸号占了 对呀,Demo-(void)dl_validateReceiptWiththeAppStore:(NSString *)receipt方法就是和苹果交互,方法是在模拟后台和苹果的交互,这个逻辑让后台实现!
    空转风:@李乾坤David 我的意思是后台要跟苹果那边交互吗
    李乾坤David:如果这个是会员费,你购买了肯定要让后台知道哪个人购买了会员费,然后后台改变这个人相应数据和权限。为了安全考虑后台需要验证购买有效性!
  • younger_times:我想问一下,我们公司做的APP,在支付成功后直接调用后台充值接口(完全没有你说的receipt给后台认证,而且这个接口网页刷新一次就调用一次,反正不是我设计的)。结果导致的是,上线后,接口被调用了,但钱没到账(有些的确收到钱了,有些没有,MGB,被骂惨了。)。那么,receipt给后台如何认证它?还有,越狱设备会不会绕过内购?
    李乾坤David: 让后台去执行-(void)dl_validateReceiptWiththeAppStore:(NSString *)receipt方法的逻辑!
    李乾坤David:@younger_times 这个逻辑要让后台执行!
    李乾坤David:@younger_times 你可以看Demo!Demo有这个代码!
  • 丶大明:支持
    李乾坤David:@丶大明 谢支持!
  • 开发者头条_程序员必装的App:感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/uje83k 欢迎点赞支持!
    欢迎订阅《李乾坤David独家号》https://toutiao.io/subjects/209972
    李乾坤David:@开发者头条_程序员必装的App 谢谢推荐!
  • 李乾坤David:如有疑问可以评论或者私信交流!
  • zoehu:我同意作者开头的观点!
    李乾坤David:@zoehu 是吧!

本文标题:IOS应用内购买(In-App Purchase)详细教程

本文链接:https://www.haomeiwen.com/subject/dzvcwttx.html