前言

什么是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. 00-python语言介绍

    以下为摘录的python的介绍 Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译.其他解释型语言还包括PHP和Ruby. Python是动态类型 ...

  2. sublime Text如何取消两栏窗口?

    在菜单栏里的 View->LayOut->Single,也可以用快捷键 Alt+Shift+1.如图所示.(亲测可用) &amp;lt;img src="https:// ...

  3. python爬虫学习(二):定向爬虫例子-->使用BeautifulSoup爬取"软科中国最好大学排名-生源质量排名2018",并把结果写进txt文件

    在正式爬取之前,先做一个试验,看一下爬取的数据对象的类型是如何转换为列表的: 写一个html文档: x.html<html><head><title>This is ...

  4. LeetCode--014--最长公共前缀

    问题描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flo ...

  5. javaweb课程信息管理系统

    1.DBUtil包连接数据库 2.Bin包设计成员函数及方法 3.Dao包设计sql语句 4.servlet包增删改查方法 5.service连接servlet 6.设计jsp增删改查页面 7.连接各 ...

  6. android -------- Data Binding的使用(三)Observable

    解决:databinding 中 ViewModel数据发生改变,View中也要改变(实时更新) BaseObservable 在ViewModel 中可以继承 BaseObservable publ ...

  7. MySql之行记录的详细操作,创建用户以及库表的授权

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  8. dp 最大正方形

    洛谷P1387 最大正方形 分析:画图模拟,发现以坐标(i,j)为右下顶点的正方形可以根据它左上方的三个点得到,就很轻松写出状态转移方程了. 代码: #include<bits/stdc++.h ...

  9. 第一阶段——站立会议总结DAY03

    昨天忘记发了,补充... 1.昨天做了什么:继续做界面的设计,使其更加美观. 2.今天准备做什么:准备将点击按钮时跳转到一个修改密码界面. 3.遇到的困难:此次第一阶段的任务是一个框架,不知道可否实现 ...

  10. svn: 提交终止

    今天我遇到了svn 的问题  svn: 提交终止: “/var/www/modelfinance/modules/incomereport/views/purchase” 处于冲突状态 冲突状态搞的我 ...