前言

什么是IAP,即in-app-purchase
这几天一直在搞ios的应用内购,查了很多博客,发现几乎没有一篇博客可以完整的概括出所有的点,为了防止大伙多次查阅资料,所以写了这一篇博客,希望大家能够跟着我,从零开始,写一个包含内购的应用出来

流程

一般有以下几种内购流程
1. 直接使用Apple的服务器进行购买和验证
2. 就是自己假设服务器进行验证
网上有几张图,不过是英文版的,看着流程也很复杂,其实很简单,我简单说一下

第一种流程就是用户在买你app里面的道具A的时候,点击了购买按钮
这时候你的app会发送一个请求给苹果服务器,告诉它,我要买A
由于苹果服务器那边你已经配置好了有哪些东西(后面会叫你怎么在那边配置你要卖的商品ABCD),苹果找出商品A,然后itunes store会向你确认是否真的要买A(只要用过苹果支付的基本都知道)
用户确定了以后,苹果服务器会给你返回一个购买凭证,app再把东西下发给用户,ok了
但是,一般的app都有自己的服务器,道具之类的物品也都是存在服务器的,所以,往往我们会采取第二种方式—把这个购买凭证发给我们自己的服务器,然后我们服务器通过给苹果服务器发送这个凭证来校验是不是真的,是真的,就下发道具,不是,则不下发!
基于上面的原因,所以我们一般采取第二种方式,第一种方式跟第二种方式大同小异,只是少了一些步骤,后面会详细讲

配置app,商品信息,银行卡信息,测试账号

1.进入到这个网站https://itunesconnect.apple.com/(注意,可能有些人进去后并不能看到下面的截图,可能是以下原因:1,未付费的开发者账号不能进入2,企业级开发者账号不能进入3,公司开发者账号下的Member权限不能进入)

2.如果配置了app的信息,则略过此步骤,没配置过可以继续

进入我的app
点击左上角+按钮,新建app,第一次创建可能会提示你需要套装id
点击注册,后面的流程比较多,由于不是IAP的重点,所以不再赘述,具体的细节可以参考这篇文章http://www.jianshu.com/p/259129a240cf
注册ok了以后,再次点击创建app,会出现下面的界面在这里有几个需要填写的地方,名称自己取,平台IOS,语言选择了简体中文,套装ID也就是你的Bundle Identifier,需要你在Certificates页面 申请BundleID,SKU可以理解为用户看一看到的唯一标示,会体现在你的app的App Store的链接中。
创建好了之后,会出现这个界面则大功告成!
3.配置商品信息

首先进入到这个页面
点击下方的加号+,开始准备添加你app里面要付费的东西了,钻石,会员啥的简单的解释一下:消耗型项目一般都是游戏或者app中供用户购买的钻石,元宝,金币之类的,绝大部分都是这一种,会员之类的,就是非续期订阅。
假设我们是要增加元宝,那么我们点击第一个,其他几个用法都差不多,进入到下面的界面,由于图片较长,我就分成了几个图片:填好了以后,点击右上角保存即可,然后重复几次,把自己需要卖的商品都添加好就行(注意:可能有人会发现,添加了几次以后,app内购项目还是显示为空,不要紧,其实已经添加了)
最后一步,也是很重要的一步,发现很多博客都没有,进入到下面这个界面往下拖,找到app内购项目点击+,把刚刚添加完的商品全部加进去,如下这一步很重要,否则你会发现,在你测试的时候,一直提示你的产品id是非法无效的,因为他一直找不到你的产品!
4.配置银行卡,税务等信息!

银行卡,税务等信息主要是为了让用户付费时候,能够把钱打入你的账户,如果没有配置的话,也会提示产品id非法无效!
进入到https://itunesconnect.apple.com/,再点击协议,税务和银行业务好吧,想了想,感觉这一章节东西也是挺多的,如果细细讲得话,会大幅度增加这边博客的长度,网上有篇文章讲得很好很详细,在此引用一下:http://www.jianshu.com/p/c7cf65911bc1照着这里面一步步来,就没有什么问题,这一部分也没有什么坑会被踩,所以大伙可以参考这篇文章!
5.配置沙盒测试账号

什么是沙盒?我们在开发的过程中,对于iap肯定要进行一定的测试,不过如果我们用真实的账号测试,走真实的接口,那么购买自己的东西的话,依然会有30%的利润进入到苹果的口袋。。如果是大量的测试或者购买的东西比较贵,肯定是比较坑爹的,所以,苹果提供了一套沙盒体系,在这个体系里面,用户用的是沙盒账号,走的是沙盒接口,这样无论用沙盒账号买啥,苹果都会给你返回购买成功!
沙盒验证接口:https://sandbox.itunes.apple.com/verifyReceipt
正式验证接口:https://buy.itunes.apple.com/verifyReceipt
上面两个接口一般是我们这边服务器这边来区分,测试时候就用沙盒接口,正式上线用正式接口。
好了步入正题,如何创建沙盒账号呢?还是进入到下面界面,点击用户和职能点击上图的沙盒技术测试按钮,进入到下面的界面:点击左上角的+,进入到下面的界面:上面的邮箱记得要填一个没有注册过app store的邮箱,可以用自己的qq邮箱或者网易游戏,密码也随便取个新密码,填满了以后,点击右上角进行保存就可以了!
注意:这里有个坑,这个沙盒测试账号一般使用的时候,记得要把你测试机上登录的app store之类的注销掉!填上自己的沙盒测试账号,否则你在购买时候,会直接给你返回连接不上itunes的错误!

IOS应用内支付IAP从零开始详解的更多相关文章

  1. iOS应用内支付(IAP)的那些坑

    本文转载至 http://blog.devtang.com/2013/04/07/tricks-in-iap/ 前言 udacity 中的在线课程 <How to build a startup ...

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

    今天总结了一下cocos2d-x使用ios内支付iap的具体流程,封装好了调用接口,代码与具体说明在此 http://download.csdn.net/detail/u010229677/81566 ...

  3. Cocos2d-x使用iOS游戏内付费IAP(C++篇)

    本文章转载 http://www.ityran.com/archives/5515.非本人原创! 前期准备 设备与账号 在开始编码之前我们需要准备测试环境. IAP只能真机测试,准备一台iOS设备是必 ...

  4. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  5. iOS应用内付费(IAP)开发步骤列表

    iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...

  6. C# 内置 DateTime类详解

    C# 内置 DateTime类详解 摘抄自微软官方文档,用来方便自己查阅:网址:https://msdn.microsoft.com/zh-cn/library/system.datetime(v=v ...

  7. Spark2.1.0——内置Web框架详解

    Spark2.1.0——内置Web框架详解 任何系统都需要提供监控功能,否则在运行期间发生一些异常时,我们将会束手无策.也许有人说,可以增加日志来解决这个问题.日志只能解决你的程序逻辑在运行期的监控, ...

  8. Spark2.1.0——内置RPC框架详解

    Spark2.1.0——内置RPC框架详解 在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通.用户文件与Jar包的上传.节点间的Shuffle过程.Block数据的复制与备份等 ...

  9. 【Python】Python内置函数dir详解

    1.命令介绍 最近学习并使用了一个python的内置函数dir,首先help一下: 复制代码代码如下: >>> help(dir)Help on built-in function ...

随机推荐

  1. STL——map

    看到map这里,都不知道它主要是干嘛的,你有没有这样的疑问. map的主要作用:提供对T类型的数据进行快速和高效的检索 .C++ STL中标准关联容器set, multiset, map, multi ...

  2. 从flask视角理解angular(三)ORM VS Service

    把获取模型数据的任务重构为一个单独的服务,它将提供英雄数据,并把服务在所有需要英雄数据的组件间共享. @Injectable() export class HeroService { getHeroe ...

  3. MYSQL去除"/r/n"

    #去除回车符号/r/n UPDATE t_week_power_line_loss SET `line_loss_rate` = REPLACE( REPLACE( `line_loss_rate` ...

  4. selenium Grid2 分布式自动化测试环境搭建

    一.Selenium Server 环境配置 1.selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的 ...

  5. 第 8 章 容器网络 - 055 - 创建 macvlan 网络

    1.创建 macvlan 网络 在 host1 和 host2 中创建 macvlan 网络 mac_net1: docker network create -d macvlan --subnet=1 ...

  6. 第 3 章 镜像 - 017 - RUN vs CMD vs ENTRYPOINT

    RUN.CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆. 简单的说: RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包. CMD 设置容器启动 ...

  7. Servlet Exception and Error Handling

    Servlet API support for custom Exception and Error Handler servlets that we can congiure in deployme ...

  8. Ubuntu终端多窗口分屏Terminator

    1.安装 Terminator最大的特点就是可以在一个窗口中打开多个终端 sudo apt-get install terminator 2.快捷键 Ctrl+Shift+E    垂直分割窗口 Ct ...

  9. mybatis ----> 各种方式使用MBG

    1.maven方式使用 配置好.pom文件 ①src/main/resources下创建 generatorConfig.xml,并配置好(自动生成的配置文件骨架) ②src/main/java 下创 ...

  10. android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app

    开发中常常有打开本地浏览器加载url或者指定浏览器加载, 还有打开第三方app, 如 打开高德地图 百度地图等 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器. 如果手机 ...