ios内购开发文档,iOS内购流程

Flutter iOS 苹果IAP(内购)实现步骤及问题总结(全网最全)

点击 “协议、税务和银行业务”

成都创新互联公司提供成都网站建设、网站制作、网页设计,品牌网站设计一元广告等致力于企业网站建设与公司网站制作,十载的网站开发和建站经验,助力企业信息化建设,成功案例突破千余家,是您实现网站建设的好选择.

内购用的是付费应用程序,先签署《付费应用程序协议》,同意后状态变更为“用户信息待处理”,等待审核。

状态更改完毕后,点击“开始设置税务、银行业务和联系信息”。

(1)添加银行账户,按照要求填写相关内容即可。

(2)选择报税表,并填写。所有与 Apple 有商业合作者必选都是美国,若有其他需求,可以多选。

继续填写,首先认证公司基本信息,选择所有人类型,确认无误后认证条款处打对勾

Part I 部分,继续核对公司相关信息,选填内容可不填。

Part III 部分,签署税务条约,设置利益限制条款的种类,选填内容可不填。此部分如果需要可勾选上下图勾选框,不需要可不勾选,我们这个项目没有用到part III 部分,所以没有勾选。

Part XXX 部分,确认之前填写的信息,勾选完毕后,提交

(3)填写联系信息,共5个。高级管理、财务、技术、法务、营销。只需要提供5个人的基本信息即可。

只可使用一次的产品,使用之后即失效,必须再次购买。

示例: 钓鱼 App 中的鱼食。

只需购买一次,不会过期或随着使用而减少的产品。

示例: 游戏 App 的赛道。

允许用户在固定时间段内购买动态内容的产品。除非用户选择取消,否则此类订阅会自动续期。

示例: 每月订阅提供流媒体服务的 App。

允许用户购买有时限性服务的产品。此 App 内购买项目的内容可以是静态的。此类订阅不会自动续期。

示例: 为期一年的已归档文章目录订阅。

App 内购买项目的截屏,即所售项目的示意图。例如,如果 App 内购买项目是一本图书,您可以提交图书的截屏。您也可以提交购买页的截屏。该截屏仅用于 Apple 审核,不会在 App Store 中显示。

截屏要求如下:

iOS 至少需要 640 x 920 像素

Apple tvOS 需要 1920 x 1080 像素

macOS 需要 1280 x 800 像素

App 审核图像上传后,可以替换,但无法移除。当您的 App 内购买项目处于审核中时,您无法更新截屏。

沙箱账号是不能直接在App Store进行登录的,只能在点击了购买商品之后,在弹出的登录框进行登录 。

验证是否已登录沙箱测试账号:

设置--iTunes Store与App Store,页面拉到最底部,会看到沙箱账户项会列出你已登录的沙箱测试账号!

操作方法一:打开App Store应用首页滑到最下方--选中AppleID--注销

操作方法二:设置--iTunes Store与App Store--选中AppleID--注销

checks if the client can make payments(检测App是否能支付)

getAvailablePurchases

Get all non-consumed purchases 获取未消费的商品

打印信息查询;

原因:

没有先执行getProducts,直接执行requestPurchase方法,要先拉取商品列表,再执行购买操作.

问题描述;

1.漏单必须要处理,玩家花RMB购买的东西却丢失了,是绝对不能容忍的。所谓的漏单就是玩家已经正常付费,却没有拿到该拿的道具。

解决:只要购买成功,便将购买记录(receipt等账单信息)保存下来,然后将账单信息传送给我们游戏服务器,游戏服务器获得账单后,和苹果服务器验证,账单有效的话,回馈给游戏服务器处理,游戏服务器处理后,返回给游戏客户端处理,处理完毕,将本地保存的购买记录删除。

官方文档:向苹果校验支付凭证

21000 App Store无法读取你提供的JSON数据

21002 收据数据不符合格式

21003 收据无法被验证

21004 你提供的共享密钥和账户的共享密钥不一致

21005 收据服务器当前不可用

21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中

21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证 【请求sandbox校验支付凭证】

21008 收据信息是产品环境中使用,但却被发送到测试环境中验证

消耗类型: 例如:金币、道具等。

非续订订阅: non-renewable subscription 例如:VIP

您的首个 App 内购买项目必须以新的 App 版本提交。请创建您的 App 内购买项目,然后前往 App 的“App Store”页,从“App 内购买项目”中进行选择,点按“提交”。 了解更多

在上传二进制文件并提交首个 App 内购买项目以供审核后,您可以使用下表提交其他 App 内购买项目。

唐巧-iOS应用内付费(IAP)开发步骤列表

未完~待续

当使用内购购买过商品之后没有把这个交易关闭,所以再次去购买商品后就会调用以前已经购买成功的交易去购买因为已经购买过,才会有这个提示

原因:添加内购项目时,信息填写不完整,app审核图像未上传

处理方法:上传app审核图片( 合适的尺寸 ),点击提交,状态改为正在准备审核中。

这个是内购选择类型不匹配原因导致。

购买成功之后,Apple会返回以下四个数据给应用

Reference

Review the updated Paid Applications Schedule.

游客身份解决方案:即不登录也要能购买

1)服务器端做一个苹果审核机制,审核期间游客身份可以进行一切行为,一旦审核通过,修改服务端即可达到强制用户登录进行内购买的目的(这个有点。。。)

2)游客可以进行内购买,购买时以设备UUID为准,生成一个游客账号,将购买信息保存在服务器和本地,当用户登录正式账户后判断此设备是否进行过内购,有的话提示用户将游客身份购买的权益与现有账号绑定,如果绑定,游客权益则迁移到正式账户,如果不迁移,则游客身份和正是账户是两个独立账户,正式账户不享有游客身份的权益(我用的这个)

内购游客模式解决方案

iOS内购规则

iOS内购被拒整理

第一次被拒原因如下:

Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

We noticed that your app requires users to register with personal information to purchase non account-based in-app purchase products, which does not comply with the App Store Review Guidelines.

Apps cannot require user registration prior to allowing access to app content and features that are not associated specifically to the user.

翻译

我们注意到您的应用要求用户注册个人信息以购买非基于帐户的应用内购买产品,这不符合App Store审核指南。

在允许访问应用程序内容和与用户无关的功能之前,应用程序不需要用户注册。

这个问题是说您的App在进行购买商品的时候,强制了用户去登录注册,苹果的内购要求即使用户不登录注册,也可以进行购买商品,所以您需要加一个匿名购买的功能。

第二次被拒

Guideline 2.1 - Information Needed

We have started the review of your app, but we are not able to continue because we cannot locate the in-app purchases within your app.

翻译

我们已开始审核您的应用,但我们无法继续,因为我们无法在您的应用中找到应用内购买。

从翻译上来看,苹果没有找到应用内购买,但是商品明明就在那里,为什么你就找不到呢?我整理了一遍购买流程加上图解流程,给苹果添加附件,然并卵,依然被拒,还是这个原因,此时您可以查看一下,你在苹果开发者后台中配置了几个商品,如果您配置了三个商品,比如,你在开发者中配置了三个视频商品,水浒传,西游记,和三国演义,但是此时服务器数据还没有录入完成,只录入了水浒传,在app 上只能购买水浒传,没有西游记和三国演义,那么苹果说找不到商品的意思就是这个。这个被拒坑了我一周的时间。

第三次被拒

uideline 2.1 - Performance - App Completeness

We found that while you have submitted in-app purchase products for your app, the in-app purchase functionality is not present in your binary.

翻译

我们发现,虽然您已为应用提交了应用内购买产品,但您的二进制文件中不存在应用内购买功能。

这个好像和上一个解决办法一样,目前我是按照这种方法解决的

第四次被拒

Guideline 3.1.1 - Business - Payments - In-App Purchase

We found that your app offers in-app purchases that can be restored but does not include a "Restore Purchases" feature to allow users to restore the previously purchased in-app purchases, as specified in the "Restoring Purchase Products" section of the  In-App Purchase Programming Guide :

"Users restore transactions to maintain access to content they've already purchased. For example, when they upgrade to a new phone, they don't lose all of the items they purchased on the old phone. Include some mechanism in your app to let the user restore their purchases, such as a Restore Purchases button."

To restore previously purchased in-app purchase products, it would be appropriate to provide a "Restore" button and initiate the restore process when the "Restore" button is tapped by the user.

这个问题就比较坑了,一开始一直没明白什么意思,同样的问题也是打回来了好几次,首先在这里和大家说一下 ,看见被打回来的原因中有一段是标蓝的吗?这里是开发文档,一定要去看看,一定要去看看 一定要去看看,重要的事情说三遍,这个问题的大致意思是要让你加一个恢复购买功能?what? 什么叫恢复购买功能,先不要慌,首先他让你加恢复购买功能,您先看一下您选择的商品类型是什么类型?非消耗性?如果是这个,那么您遇到的和我是一样的问题,就是AppleID 只要是购买的非消耗性产品,那么他就永久可以使用,这个永久不是时间的永久,当你换手机,换你开发应用的账号,都要可以恢复已经购买的产品,比如你开发的app  用你的手机号注册 你的AppleID 购买 之后你 等我我的手机号注册 此时还是你的AppleID  那么就要有一个恢复购买功能,不合理?NO!那是苹果爸爸,并且这个恢复功能,要时刻展示出来,不用提前判断用户AppleID 是否购买过该商品,好了 到这里 我要去上架了 !!!!

iOS实现App内购步骤以及注意事项

1、在开发者账号设置协议、打开itunes Connect,选择协议,税务和银行业务。

2、点击Request Contracts(申请合同)下面的,request,点了几个确定和下一步后回到主界面。

Contact info:联系人信息

Bank info:银行信息

Tax info:税务信息

3、首先设置联系人信息,点击Contact info下面的 Set up(设置),点击Add New Contract(增加先的联系方式)。

4、填写详情,填写完成后点击save(保存)。

5、在下面的所有项目中都选择刚刚填写的信息,选择后点击右下角的done(完成),你可以创建很多联系人,在不同的职务选择不同的联系人。因为我是独立开发,所以我全部填写的我自己。

6、设置银行信息,点击Back info下面的Set up,弹出页面,点击Add Bank Account(添加银行账号)

6.1、选择china,后点击next。

6.2、填写了CNAPS Code后点击Next

查询现代化支付行号

6.3、会弹出你的银行卡开户地的信息,确认一下点击next

6.4、填写银行卡信息,注意:户主名只能写拼音,比如:李三(Li San)。填完后点击Next

6.5、弹出确定信息页面,在下面打钩后点击Save

6.6、点击了save后就可以在弹出的页面中选择刚刚填写的卡了。选择后点击Save

7、设置税务信息,点击Tax info下面的Set up,此时联系人信息已经变成可以编辑状态,银行信息为浏览状态。

7.1、弹出的界面中,税务分为三种 U.S Tax Forms: 美国税务、Australia Tax Forms:澳大利亚税务、Canada Tax Forms: 加拿大税务

这里我选择的美国税务,就是第一个

弹出第一个选择,点击submit(提交)后,弹出第二个选择

弹出第二个选择,选择后点击submit

弹出第三个页面,填写的资料后点击提交,记得勾选页面上的几个复选框

在提交成功后,状态就变成processing成功

1.进入到项目的APP信息页面,点击功能,在弹出的页面点击App内购买项目后面的➕。

2.在弹出的新对话框中选择你需要哪一种服务,由于我的项目需要兑换成消耗的金币,所以我选择第一个。选择后点击创建。

3.开始填写内购项目信息。填完后点击右上角的存储(所有信息必须填写完整)。

4.点击存储后,内购列表就会有刚刚创建的内购条目。

1.点击用户和职能

2.点击沙盒测试员,然后点击左边的➕按钮

3.设置好信息点击右上角存储就可以,记住里面的邮箱和密码用于支付的时候登陆Apple id

注意:

1.必须用真机测试。

2.测试的时候必须退出自己的apple ID。弹出页面后登陆沙盒的测试apple id。

// 1.首先导入支付包#import Storekit

[iOS]应用内支付(内购)的个人开发过程及坑!

APP内购集成详解

iOS苹果内购(详细步骤)

iOS苹果内购(详细步骤)

iOS 内付费(in-app purchase)--非消耗品的购买与恢复

恢复购买官方地址

苹果内购商品信息获取

Unity苹果(iOS)内购接入(Unity内置IAP)

# Unity3d发布IOS(包含u3d自带IAP内购)的流程-小白篇(三)-u3d配置ios内购部分

每次支付行为或每笔交易被认为是一个SKPaymentTransation,只有当SKPaymentTransation被finishTransaction:,这次支付(交易)行为才算是正常结束了。即使这次支付途中被中断,其实也并没有丢失。假设支付没有完成 App 就退出了(比如崩溃),那么当下次 App 重启之后,只要设置了监听addTransactionObserver:,之前被中断的支付就会接着进行。

第1步,这个过程中 App 进程因为某种原因被 kill 了,其实支付行为还在系统后台进行着,苹果自己做的,很有可能扣款成功。但是这时候没法为用户充值虚拟货币。

第2步,App 端与自己服务器端通信失败;自己服务器端与 AppStore 服务器之间的通信失败。

针对第一种情况,可以在 App 一启动就设置监听,如果有未完成的支付,则会回调- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;这个方法,在这个方法里调用接口充值。

至于第二种情况,App 端需要做接口重试,设置一个重试的逻辑。

在发起支付请求之后,苹果返回商品列表,先请求服务器下单接口,成功之后,将订单信息保存在钥匙串,然后发起支付,在支付状态的回调当中, 成功了就去做服务器的验签操作,验证成功,关闭事物,并将订单信息删除,支付完成

app启动时监听掉单情况, 如果有掉单情况,回走事物更新的回调,然后再回调里,通过钥匙串拿出订单相关信息,然后获取支付凭证,重新向服务器发起验单的流程。

钥匙串保存订单信息作用:为了拿到订单的相关信息作为参数来请求服务器验签接口。

iOS中关于in-app purchase无法取得道具信息的问题

在iOS的APP 审核指南中, 如果需要在App内解锁特性或功能,则要求必须使用App内购买, 即行业内所说的虚拟物品必须用苹果内购进行支付, 如游戏中道具、正版音乐、电子书等等, 官方文档见 App Store 审核指南 中的第3.1.1章节。

以下是我在进行这一功能开发时遇到的三种可能导致获取不到商品信息的情况, 仅供大家参考:

1、商品id无效,如未注册的商品id;

2、工程中的Bundle indentifier不正确, 必须与道具id、开发证书匹配的才可以进行取得道具信息;

3、iTunesConnect中"协议、税务和银行业务"模块中的信息未按要求填写, 详情见 官方文档 ,补充后即可;

若以上情况都满足的话, 只要在"iTunesConnect"--"我的APP"--"**APP"--"功能"注册道具成功之后,如果状态变为"准备提交"之后即可进行开发测试, 取得道具信息。

如果想要了解内购的整个流程, 建议参考蚾蚾虾的 iOS开发内购流程 这篇博客。

如果有同行发现以上有遗漏或不对有其它情况, 也请留言告知,互相分享经验,让大家尽量少走弯路, 谢谢!

ios 应用程序的开发文档怎么写

1.预先准备在你开始将程序提交到App Store之前,你需要有一个App ID,一个有效的发布证书,以及一个有效的Provisioning profile。下面来看看它们各自的作用。Step 1: App ID(应用ID)App ID是识别不同应用程序的唯一标示符。每个app都需要一个App ID或者app标识。目前有两种类型的App标识:一个是精确的App ID( explicit App ID),一个是通配符App ID( wildcard App ID)。使用通配符的App ID可以用来构建和安装多个程序。尽管通配符App ID非常方便,但是一个精确的App ID也是需要的,尤其是当App使用iCloud 或者使用其他iOS功能的时候,比如Game Center、Push Notifications或者IAP。 如果你不确定什么样的App ID适合你的项目,我推荐你读下苹果关于这一主题的文档: Technical Note QA1713。 Step 2: Distribution Certificate(发布证书) iOS应用都有一个安全证书用于验证开发者身份和签名。为了可以向App Store提交app,你需要创建一个iOS provisioning profile 。首先需要创建一个distribution certificate(发布证书),过程类似于创建一个development certificate(开发证书)。如果你已经在实体设备上测试你的App,那么你对创建development certificate就已经很熟悉了。 如果对此不熟悉,我建议你读下 苹果关于signing certificates和provisioning profiles的详细指导 。 Step 3: Provisioning Profile(配置文件) 一旦你创建了App ID和distribution certificate,你可以创建一个iOS provisioning profile以方便在App Store中销售你的App。不过,你不能使用和ad hoc distribution相同的provisioning profile。你需要为App Store分销创建一个单独的provisioning profile,如果你使用通配符App ID,那么你的多个app就可以使用相同的provisioning profile。 Step 4: Build Settings(生成设置)配置App ID、distribution certificate 和provisioning profile已经完成,是时候配置Xcode中target的build settings了。在Xcode Project Navigator的targets列表中选择一个target,打开顶部的 Build Settings选项,然后更新一下 Code Signing来跟之前创建的distribution provisioning profile相匹配。最近添加的provisioning profiles有时候不会立马就在build settings的 Code Signing中看到,重启一下Xcode就可以解决这个问题。 配置Target的Build SettingsStep 5: Deployment Target(部署目标)非常有必要说下deployment target,Xcode中每个target都有一个deployment target,它可以指出app可以运行的最小版本。不过,一旦应用在App Store中生效,再去修改deployment target,你要考虑到一定后果。如果你在更新app的时候提高了deployment target,但是已经购买应用的用户并没有遇到新的deployment target,那么应用就不能在用户的移动设备上运行。如果用户通过iTunes (不是设备)下载了一个更新过的app,然后替代了设备上原先的版本,最后却发现新版本不能在设备上运行,这确实是个问题。(1) 当你决定提高现有app的deployment target时,要在新版本的版本注释中进行说明。如果你提前告知用户,那么至少有一点,你已经尽力阻止问题的发生了。(2) 对于一款新app,我经常会把deployment target设置为最近发布的系统版 本。因为新iOS版本发布后,渗透率的增长速度是令人难以置信的。很多人认为提高deployment target会失去大部分市场,这个说法并不准确,比如iOS 6, iOS 6发布后一个月,超过60%的设备已经进行了更新 。但对Android而言,就是另外一回事了, Android用户并不会像iOS用户那样热衷于更新操作系统版本 。 【以上简而言之,最好从项目设计时,就决定是否考虑兼容低版本用户,支持的话,写代码时使用ios新特性时最好做一下判断,if是老版本if是新版本】在最新的WWDC2014上,公布的数字显示,iOS7的市场占有率已经为87%2. Assets(资源包)Step 1: Icons(图标)Icon是App中不可分割的一部分,你要确保icon尺寸不会出现差错。iTunes Artwork: 1024px x 1024px (required)iPad/iPad Mini: 72px x 72px and 114px x 114px (required) iPhone/iPod Touch: 57px x 57px and 114px x 114px (required) 120px x 120px(required) for iPhone5/iPhone5c/iPhone5sSearch Icon: 29px x 29px and 58px x 58px (optional) Settings Application: 50px x 50px and 100px x 100px (optional) Step 2: 屏幕截图屏幕截图的作用不言而喻,你可以为每个app上传5张截图,虽然至少需要上传一张,可能很少有人会只上传一张图片。另外,你还需要分别为 iPhone/iPod Touch和iPad/iPad Mini准备不同的屏幕截图。这也是不小的工作量,但却能展示应用的另一面。Shiny Development开发的一款售价6.99美元的Mac软件 Status Magic可以为你节省不少时间。Status Magic可以帮你把状态栏放在截图的正确位置。 屏幕截图和icon是应用给用户的第一感觉,直接关系到用户会不会购买。不过,你所上传的屏幕截图也不一定非得是实际的截图,看看 Where’s My Water? 截图可以通过使用此策略,更具吸引力和说服力。当我们连上调试机以后。可以利用Xcode中Organizer中的New Screenshot轻松的截出标准大小的图片。Step 3: 元数据 在提交应用之前,要管理好app的元数据,包括1应用名称、2版本号、3主要类别,4简洁的描述,5关键词,6.支持URL。如果你需要更新应用,你还要提供新增加的版本内容。 如果你的应用需要注册【打开APP需要登录,比如飞信】,你还得向苹果提供一个测试账户或者demo账户,这样审核人员就能很快进入app,而不用再注册账号。3. 提交准备Xcode 4以后,开发者提交应用的过程就简单多了,可以直接使用Xcode进行提交。首先在 iTunes Connect中创建app,访问iTunes Connect,使用你的iOS开发者账号登陆,点击右边的“Manage Your Apps”,点击左上角的“Add New App”,选择“iOS App”,然后完成表格。


网页标题:ios内购开发文档,iOS内购流程
文章源于:http://hbruida.cn/article/dsejphe.html