iOS 支付 --苹果内购解读

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


第一阶段 内购相关

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

相关的官方文档地址:

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

关于内购

1.iTunes Connect中的配置

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

1.1内购的类型

内购类型

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

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

上传审核前的两种状态

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

▪ iOS requires at least 640 x 920 pixels.

▪ tvOS requires 1920 x1080 pixels.

▪ macOS requires 1280 x 800 pixels.

审核的状态

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

当然还有几个状态

其他状态

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

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.

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

第一次上传内购产品

非第一次上传内购产品

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中已经略提了内购的类型有哪些,对于开发而言,每一个内购类型都需要不同的处理手段:

产品类型对比

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

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

订阅类型对比

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

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

2.2 开发的处理流程

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

首先,标识符可以存在:

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

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

获取当前产品的标识符列表
向苹果商店验证当前商品标识符

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

[SKPaymentQueue canMakePayments];

不能支付的原因:

① 可能用户已经包月

② 受到家长控制无法支付

.......

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

请求支付

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

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

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

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

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



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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容