七麦数据专栏

如何在iTC设置App内购,这是一篇细致到代码都给你看的指南!

2017年12月17日 | 技术干货 | 阅读(19433)

在 iOS 11 App Store 中,已经支持搜索结果中显示内购了,那你知道为 App 添加内购商品要注意些什么吗?今天这篇文章我们就和大家详细的讲一下添加内购的流程,主要内容分为以下几个方面:

协议、税务和银行业务信息填写

内购商品的添加

添加沙盒测试账号

内购代码的具体实现

内购的注意事项

一、协议、税务和银行业务信息填写

1.协议、税务和银行业务信息填写的入口



2.选择申请合同类型

进入协议、税务和银行业务页面后,会有 3 种合同类型,如果你之前没有主动申请过去合同,那么一般你现在激活的合同只有 iOS Free Application 一种。

页面内容分为两块:

Request Contracts(申请合同)

Contracts In Effect(已生效合同)

合同类型分为 3 种:

iOS Free Application(免费应用合同)

iOS Paid Application(付费应用合同)

iAd App NetNetwork(广告合同)

这篇文章我们主要讲的是付费应用合同的申请流程。

3.申请 iOS Paid Application 合同(协议、税务和银行业务 3 个都要填写)



4.Contact Info(填写联系方式)


如果你没有添加过联系人,你需要通过 Add New Contact 按钮来添加一个新的联系人,然后指定联系人的职务。如下:

Senior Management:高管

Financial:财务

Technical:技术支持

Legal:法务

Marketing:市场推广

如果你是独立开发者,可以全部填你自己一个人。

5.填写银行信息

选择你的银行账户,如果你没有,点击旁边的 Add Bank Account 添加一个账户。下面是添加一个账户的流程。

①选择银行所在的国家



②填写银行标识 CNAPS Code

如果你不知道 CNAPS Code 是多少,可以百度搜 CNAPS Code 来查询,查询时会根据 3 个关键信息来查询,如下:

Bank Name:银行的英文名称(不能是拼音)

City:银行所在的城市英文名称(中国的城市用拼音)

Postal Code:邮编

然后在下面就会出来备选的银行,选择正确的银行后,点击 next,进入下一步。

③确认银行信息

④填写银行账号信息

Bank Account Number:银行账号

Confirm Bank Account Number:再次输入银行账号

Account Holder Name:持卡人姓名,中文名用拼写,名在前,姓在后

Bank Account Currency:货币类型,一般国内的开发者选择 CNY

⑤确认所有信息

6.填写税务信息(这个内容比较多)

①税务信息分 3 种:

U.S Tax Forms:美国税务

Australia Tax Forms:澳大利亚税务

Canada Tax Forms:加拿大税务

②一堆条约

我选择的是 U.S Tax Forms,选择后会问你两个问题:

第 1 个问题询问你是否是美国居民,有没有美国伙伴关系或者美国公司,如果没有直接选择 No。

第 2 个问题询问你有没有在美国的商业性活动,没有也直接选 No。

③然后填写你的税务信息,包括以下几点:

Individual or Organization Name:个人或者组织名称

Country of incorporation: 所在国家

Type of Beneficial Owner:受益方式,独立开发者选个人

Permanent Residence:居住地址

Mailing address:邮寄地址

Name of Person Making this Declaration:声明人

Title:头衔

 

④打钩

⑤澳大利亚的不要管了

⑥加拿大的也不用管了



7.填写完成

8.待审核

你填写完所有资料后,合同状态就会变成 Processing,大概 24 小时内就会有结果。

二、内购商品的添加

1.创建内购商品



2.选择内购类型

①消耗型商品

类似游戏中的钻石,还有现在某些 App 中的货币,比如斗鱼里的鱼丸、映客里的映票。会被消耗的,要选择消耗型商品。

注意:大多数的消耗型商品都是需要登录的,因为需要在数据库存余额。在登录之前,你最好不要让用户看到商品,有可能会因为这个原因被拒(大家都说看运气)。

②非消耗型商品

无法被消耗的商品,比如上文提到的视频课程,一次购买,就应该永久可以观看。

注意:当你使用非消耗型商品时,你需要添加一个恢复购买的按钮。这个常见于各种游戏中,其实知道这个规定以后还是挺好理解的,非消耗型商品是不可被消耗的,一次购买终身使用的。

③订阅类型商品

如果你的公司是外包公司,有订阅类型商品的 App,一定要用客户的账号提交审核!因为当 App 中有过订阅类型商品,注意是有过,创建过再删除也算,这个 App 无法被转移账号。

注意:使用或曾经使用过订阅型商品的 App 无法转移

 

 3.创建好的产品



 

4.在上线的时候记得添加内购的商品

 

三、添加沙盒测试账号

1.添加沙盒测试的入口



2.添加沙盒测试账号



 

3.具体的测试账号信息填写



四、内购代码的具体实现

我创建了一个购买金币的内购控制器 ApplePayCIOViewController。在这里,向大家贴出.m 的详细代码。

1.内购的流程详细讲解

①用户先拿到购买产品的单子

②缴费、盖章

③把已盖章的单子传到自己的服务器,验证是否支付成功

④根据服务器返回的信息做具体的处理

2.代码

 

①先导入 StoreKit.framework 库

②创建 ApplePayCIOViewController,遵守协议<SKPaymentTransactionObserver,SKProductsRequestDelegate>

③ApplePayCIOViewController.m 代码

向下滑动查看多图

五、内购的注意事项

1.一般发生于首次提交 App 或添加新商品。当你的 App 通过审核以后,你发现在生产环境下获取不到商品,这是因为 App 虽然过审核了,但是内购商品还没有正式添加到苹果的服务器里,耐心等待一段时间就可以啦~

2. 代码中的_currentProId 所填写的是你的购买项目的的 ID,这个和第二步创建的内购的 productID 要一致;本例中是 123。

3. 在监听购买结果后,一定要调用[[SKPaymentQueue defaultQueue] finishTransaction:tran];来允许你从支付队列中移除交易。

4. 沙盒环境测试 App Store 内购流程的时候,请使用没越狱的设备。

5. 请务必使用真机来测试,一切以真机为准。

6. 项目的 Bundle identifier 需要与您申请 App ID 时填写的 Bundle ID 一致,不然会无法请求到商品信息。

7. 真机测试的时候,一定要退出原来的账号,才能用沙盒测试账号

8. 二次验证,请注意区分宏, 测试用沙盒验证,App Store 审核的时候也使用的是沙盒购买,所以验证购买凭证的时候需要判断返回 Status Code 决定是否去沙盒进行二次验证,为了线上用户的使用,验证的顺序肯定是先验证正式环境,此时若返回值为 21007,就需要去沙盒二次验证,因为此购买的是在沙盒进行的。

9.您的应用是否处于等待开发者发布(Pending Developer Release)状态?等待发布状态的 IAP 是无法测试的。

10.您的内购项目是否是最近才新建的,或者进行了更改?内购项目需要一段时间才能反应到所有服务器上,这个过程一般是一两小时,也可能再长一些达到若干小时。

11.您在 iTC 中 Contracts, Tax, and Banking Information 项目中是否有还没有设置或者过期了的项目?不完整的财务信息无法进行内购测试。

12.您是在越狱设备上进行内购测试么?越狱设备不能用于正常内购,您需要重装或者寻找一台没有越狱的设备。

13.您的应用是否是被拒状态(Rejected)或自己拒绝(Developer Rejected)了?被拒绝状态的应用的话对应还未通过的内购项目也会一起被拒,因此您需要重新将 IAP 项目设为 Cleared for Sale。

14.您使用的测试账号是否是美国区账号?虽然不是一定需要,但是鉴于其他地区的测试账号经常抽风,加上美国区账号一直很稳定,因此强烈建议使用美国区账号。正常情况下 IAP 不需要进行信用卡绑定和其他信息填写,如果你遇到了这种情况,可以试试删除这个测试账号再新建一个其他地区的。

15.您是否将设备上原来的 App 删除了,并重新进行了安装?如果是,记得在安装前做一下 Clean 和 Clean Build Folder。

16.您的 plist 中的 Bundle identifier 的内容是否和您的 App ID 一致。

不能再详细指南到此结束,快去给你的 App 设置内购吧~


相关推荐