前言

什么是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. 学习笔记29—Linux基础

    一.简单命令: 1.进入文件夹heyi目录:cd ./heyi 2.查看该目录下内容:ls 二.linux压缩和解压缩命令大全 tar命令 解包:tar zxvf FileName.tar 打包:ta ...

  2. Python pymysql 增删改查封装

    关于pymysql 的增删改查,简单做个封装,方便后面使用直接拿来调用即可. 其中 增删改 的处理其实是一致的,本可以使用统一的方法,但是为了明显区分,这里分开来写了. 直接看代码就即可,如下: # ...

  3. C# ---- GC中代的递增规律

    只有当对象所在代被 Collect 了,改对象所在代才会加 1 ,代值最大为 2 示例1: using System; namespace myMethod { class People{} clas ...

  4. Effective java 系列之避免过度同步和不要使用原生态类型,优先考虑泛型

    避免过度同步(67):在一个被同步的方法或代码块中,不要调用哪些被设计成被覆盖的方法或者是由客户端以函数对象的形式提供的方法(21). 有点拗口,书上提供的创建者与观察者模式,add方法太多,看得眼花 ...

  5. 雷林鹏分享:XML 编码

    XML 编码 XML 文档可以包含非 ASCII 字符,比如挪威语 æ ø å,或者法语 ê è é. 为了避免错误,需要规定 XML 编码,或者将 XML 文件存为 Unicode. XML 编码错 ...

  6. Es6构造函数的变身,通常我们称为类

    以前我们使用ES5标准定义一个构造函数的过程如下: function Person(name,age){ this.name = name; this.age = age; //私有变量 var el ...

  7. 远程服务器返回了意外相应:(413) Request Entity Too Large。

    在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于 ...

  8. LeetCode--409--最长回文串

    问题描述: 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...

  9. LeetCode--374--猜数字大小

    问题描述: 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字. 每次你猜错了,我会告诉你这个数字是大了还是小了. 你调用一个预先定义好的接口 gu ...

  10. hdu-6194 string string string 后缀数组 出现恰好K次的串的数量

    最少出现K次我们可以用Height数组的lcp来得出,而恰好出现K次,我们只要除去最少出现K+1次的lcp即可. #include <cstdio> #include <cstrin ...