iOS 支付 --苹果内购解读

这段时间除了项目的开发,也一直在看内购、Apple Pay、微信支付和支付宝支付的相关官方文档。刚好把需要的文档都翻译了一遍,所以趁着双休日把这一阶段总结一遍,以便于进入下一个阶段的开发中。


第一阶段 内购相关

一定要意识到苹果的内购只能出售虚拟物件(如数字化内容、App功能以及服务等),但是真实世界中的服务(如一个俱乐部的会员资格)或物品(食物、衣物等)都不能使用内购,可以使用Apple pay、微信支付等。

相关的官方文档地址:

iTunes Connect中关于内购配置的指南

关于内购

1.iTunes Connect中的配置

iTunes Connect中对内购的产品进行配置是正式开发的第一步,官方文档中详细记录了关于内购产品创建的几个步骤,我将在翻译的过程中比较感兴趣的几个部分截取出来:

1.1内购的类型

iOS 支付 --苹果内购解读_第1张图片
内购类型

在iTunes Connect中配置的内购产品一定要考虑清楚,这也是苹果官方文档对产品设计要求的重视。如果设计不妥当,苹果很有可能拒绝通过审核。

在iTunes Connect中创建的所有内购类型都能修改、删除和添加新的产品。创建完产品之后,每一项后面都会出现不同颜色的圆形图标,其实是为了更直观的让开发者知道当前内购的状态:

iOS 支付 --苹果内购解读_第2张图片
上传审核前的两种状态

内购产品上传到苹果审核前,报错基本上就是元数据缺失,上面举得例子:未上传屏幕截图,在上传前需要搞清楚图片上传的尺寸:

▪ iOS requires at least 640 x 920 pixels.

▪ tvOS requires 1920 x1080 pixels.

▪ macOS requires 1280 x 800 pixels.

iOS 支付 --苹果内购解读_第3张图片
审核的状态

如果苹果对你的内购产品做出了拒绝的行为,那么它一定会显示拒绝的原因。如果你不是很理解,可以直接询问苹果审核团队。

当然还有几个状态

iOS 支付 --苹果内购解读_第4张图片
其他状态

除了一些基本的属性以及类型了解外,最重要的还有两点:

1.怎么将内购产品上传?


应用中第一次上传内购产品

Configure your in-app purchase product until its status is Ready to Submit.

配置你的内购产品直到它的状态变成 已经准备好提交了

2 Select the version of your app that you are about to release and scroll down to the In-App Purchases section, just below the Builds section.

选择你想要提交的应用版本并且滚动到内购的选项中,在构建版本的栏目下。

3 In the In-App Purchase section, click the Add button, as highlighted in the screenshot below.

在内购的栏中,点击加号,在下面截图中高亮的部分。

4 Choose which in-app purchase products you want to submit with this version of your app.

选择你应用该版本想要提交的内购产品。

iOS 支付 --苹果内购解读_第5张图片
第一次上传内购产品

非第一次上传内购产品

1 Select the the app from My Apps.

选择My Apps中的应用

2 Click Features.

点击功能

The In-App Purchases page displays all products configured for this app.

内购页面显示所有为应用配置的内购产品

3 Make any needed changes until all products have the status Ready to Submit.

做任何的改变直到所有的产品都有一个状态 — 准备好提交了

On the product page, click the in-app purchase Reference Name to open a product you want to release. See Working with Your Product’s Metadata.

在产品页面,点击内购的参考名称来打开你想要上传的产品。

4 Click Submit for Review.

点击提交审核The in-app purchase product must have the status Ready to Submit for this button to be available.

内购的产品必须有一个状态 — 准备好提交

5 Click Submit to confirm the submission.点击确认提交The status of the in-app purchase products change to Waiting for Review.

内购产品的状态会变成等待审核

6 To release more than one product for review at once, select the products from the In-App Purchases page list and click Submit In-App Purchase.

为了一次性上传多个产品,在内购页面列表中选择一个产品,点击提交内购产品。

The status of the in-app purchase products changes from "Ready to Submit" to "Waiting for Review”.

产品的状态会从 “准备提交” 到 “等待审核”

2.已经存在的内购产品什么属性修改时需要审核?什么属性能随时修改?

Changes before submission. If your in-app purchase product has never been submitted to Apple for review, you can make changes to the product details.

在提交前改变。如果你的内购产品从没有提供给苹果审核,你能对产品的细节做任何的改变。

• Reference Name. You can change the product reference name at any time without review. The reference name will be used on iTunes Connect and in Sales and Trends reports. It won't be displayed on the App Store. The name can't be longer than 64 characters.

参考名称。你能改变产品的参考名称在任意的时间不需要审核。参考名称将会使用在iTunes Connect和销售和趋势的报表中。不会显示在应用商店中。名称不能超过64个字符。

• Display Name and Description. Changes to the localized product descriptions require review. The existing text displays on the store until the new text is approved. The change has its own status separate from the overall status of the in-app purchase product. Before it is reviewed, you can revert the change.

显示名称和订阅。改变本地产品描述需要审核。存在的文本会显示在商店中直到新的文本被批准。这个改变有自己的状态区别于内购产品的整体状态。在被审核前,你能恢复改变。

• New Language Support. Because language settings are independent of one another, you can add and remove languages as needed. Text in new languages are reviewed individually. After a product is submitted, changes to localized text or new language support have their own status separate from the overall status of the in-app purchase product.

提供新的语言。因为语言的设置是相互独立的,因此你能根据需要添加和移除语言。新语言的文本是独自审核的。在一个产品提交之后,本地文本的改变和新语言的提交都和内购的产品相关独立的。

• Screenshot. A product must have a review screenshot in place for submission; after you upload a screenshot, you can replace it with another, but you can’t remove it. You can’t change the screenshot while the product is in review. You can update the screenshot if the product is rejected.

屏幕界面。在提交的时候一个产品必须有审核的截屏;在你上传一个截屏时,你能更换成变的,但是你不能移除它,在产品审核的时候你不能改变截屏。如果产品被拒绝了你能更新截屏。

• Hosting Content with Apple. You can change a product to be hosted by Apple before you submit the product for review.

To manage in-app purchase products, you must be signed in to iTunes Connect with the appropriate role.

让苹果托管内购。在你提交一个产品进行审核前你能改变让苹果进行一个产品的托管。为了管理内购的产品,你必须使用一个合适的角色登录iTunes Connect中。

To make changes that affect the product’s status, pricing, availability instead of its metadata, see Working with Your Product’s Pricing and Availability.

为了改变产品的状态,价格和可使用性而不是元数据,参考Working with Your Product Pricing and Availability。

在iTunes Connect中配置完内购产品之后,就该进入正式的代码开发考虑了。

2.内购产品开发

其实在看官方文档的时候,有一些重复说明的地方。汇总而言,就是对类型的开发说明以及开发的处理流程。

2.1 内购类型的开发说明

在iTunes Connect中已经略提了内购的类型有哪些,对于开发而言,每一个内购类型都需要不同的处理手段:

iOS 支付 --苹果内购解读_第6张图片
产品类型对比

非消耗型产品只需要购买一次,并且会由苹果同步和在不同设备中恢复购买的状态。

消耗型产品使用一次就没有了,所以只会出现在收据上一次(购买新的东西之后,更新收据的话那么消耗型产品会从收据上消失),并且需要开发者自己同步以及在不同设备中恢复状态。

iOS 支付 --苹果内购解读_第7张图片
订阅类型对比

自动续费订阅能多次购买,并且由苹果自己同步以及在不同设备汇总恢复状态。

非续费订阅能购买多次,但是同步等问题需要应用自己管理。比如订阅的激活期和过期时间,同步到不同的设备中都需要由你的应用自己负责。

2.2 开发的处理流程

步骤一 在iTunes Connect中配置了内购的产品信息之后,对于每一个产品都有唯一的一个标识符,向苹果请求产品信息时需要提供该标识符

首先,标识符可以存在:

① App bundle中:简单设置一个plist文件即可,但是静态更改不是很方便,所以对一些不是经常改变的内购产品而言可是使用该方法。

② 自己的服务器:通过一个接口请求数据,改变十分的方便。

iOS 支付 --苹果内购解读_第8张图片
获取当前产品的标识符列表
iOS 支付 --苹果内购解读_第9张图片
向苹果商店验证当前商品标识符

步骤二 支付前判断用户是否能支付

[SKPaymentQueue canMakePayments];

不能支付的原因:

① 可能用户已经包月

② 受到家长控制无法支付

.......

步骤三 用户选择购买产品后,向苹果服务器请求支付

iOS 支付 --苹果内购解读_第10张图片
请求支付

将支付加入到事务处理队列中,这里有一个注意点:刷机问题

苹果只知道用户的Apple ID,如果一个Apple ID为多个应用账号支付,那么可能存在不正当的问题,可以通过设置applicationUsername属性(确保提供的值是唯一值)

步骤四 实现代理方法,对交易状态的监听

对状态失败和成功的监听,失败了好说提示一下"支付失败了";

但是成功的话,上面也有提到有的支付类型是需要应用自己管理的,所以需要将收据信息(或者你存储需要的数据)发送给服务器



其实在这次在学习支付前,我一直不太敢接触,总认为跟钱相关的东西很复杂。但是真正接触之后发现其实还挺容易理解和操作的,包括苹果的官方文档中已经把所有的东西都讲的很明确了,下一步,整理Apple pay和微信支付、支付宝支付的内容。

你可能感兴趣的:(iOS 支付 --苹果内购解读)