iOS 支付 --苹果内购解读

作者: 李周 | 来源:发表于2017-06-18 17:23 被阅读4185次

这段时间除了项目的开发,也一直在看内购、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和微信支付、支付宝支付的内容。

相关文章

  • iOS 支付 --苹果内购解读

    这段时间除了项目的开发,也一直在看内购、Apple Pay、微信支付和支付宝支付的相关官方文档。刚好把需要的文档都...

  • ios-内购(IAP)

    StoreKit 框架内购:在ios中专指苹果内购,在app内购买商品时使用苹果的支付方式进行购买;如果在app内...

  • TT--TTOtherPayManager(iOS微信和支付宝支

    前言 针对iOS的支付,在之前,TTFrameWork仅仅写了关于苹果的内购AppPurchaseManager,...

  • 五. 内购

    内购 一. 内购的简介 何谓内购在iOS的App中, 如果你要购买某件商品, 使用苹果的支付方式进行购买, 即为内...

  • Flutter 接入iOS苹果内购支付踩坑过程

    如何配置内购商品 坑1:项目与价格配置 苹果内购支付和我们平时接入支付宝或者微信支付有很大的差别。 苹果内购支付的...

  • iOS支付

    支付宝支付 支付宝支付支付宝补充 微信支付 微信支付 内购 iOS开发 内购流程

  • iOS H5支付宝 微信支付.

    iOS开发中, 如果不想接入支付的SDK 或者 商品只能走内购, 但是又不想要走内购(不想给苹果手续费...), ...

  • iOS支付

    iOS支付分为两类,第三方支付和应用内支付(内购)。 应用内支付(In-App Purchase):在应用程序内购...

  • iOS集成苹果内购

    一、创建苹果内购支付管理工具 SIAPManager 二、调用内购支付工具 导入内购工具#import "SIAP...

  • 苹果内购和Apple Pay 的区别

    苹果内购 和 Apple Pay 的区别 关注苹果支付和内购也是从苹果发布打赏功能必须走“内购”流程后,引发微信以...

网友评论

  • 查世煜:您好,请问下协议中添加的银行账户必须要开通美元结汇吗?到时是否能进行更换?去银行开通美元结汇是否要提供和苹果签订的合同和苹果的付费发票?
  • 90后的晨仔:你好请问内购可以一次性传入多个商品进行充值吗?
  • 公孙青阳:您好,我注意到您说“一定要意识到苹果的内购只能出售虚拟物件。” 我的App中的虚拟物品是以rmb为单位,用于购买真人的服务,请问需要走内购吗?
    李周:虽然现在的货币和人民币是1:1兑换的,而且最终购买的是真实服务。但是之前遇到过的问题是:突然有一次审核苹果说不能再通过微信和支付宝购买这种虚拟货币了。所以最终的话还是要以苹果审核为主,毕竟现在审核真的越来越严格了
    公孙青阳:@李周 谢谢你的回答,我明白了:blush:。我的APP是1:1的比例的虚拟货币,购买的是真人现实服务
    李周:我不知道你的虚拟物品是直接以rmb进行交易还是以自己平台的虚拟货币(如:和rmb是1:1兑换的虚拟币),如果只是rmb交易购买真人服务(物理真实的服务)就不需要走内购,如果是以虚拟货币购买真人服务,按理说也不需要走内购,但是苹果在审核的时候可能会对这一块有疑问,不过解释清楚即可。
    真人服务这个一定要是现实的服务。
  • coder_小玖:我想问一下 我的app里面 是通过游戏币去购买一些虚拟物品的 而游戏币 又不再app充值 这样的要做内购吗
    李周:@程序猿之路 需要,只要在iOS应用中出现了对虚拟物品的购买
  • 一抹相思泪成雨:问下: 看你的文档意思是,整个流程跟自己的后台无关,只是在支付成功后,给后台一个支付成功的标识。对吗????
    李周:在整个支付的过程中只是在客户端使用了苹果封装好的库,当支付完成之后,信息传递给服务器端,这时候为了安全,服务器要不断的和苹果的服务器进行沟通,判断该条支付信息的真实性以及结束时间等
    zmjchuan:我也有同样的问题,请问你解决了吗?
  • a浮生若梦a:你好,我现在有一个问题,苹果填写内购产品,最多6个吗?我在添加的时候,显示已储存,但是返回列表后还是没有添加的那条数据,请问这是苹果什么原因吗,
    a浮生若梦a:做内购后,Xcode里面的Capabilitles选项里面的In-App Purchase 这个开关需要打开吗?
    a浮生若梦a:@李周 好的,我试一下,谢谢:pray:
    李周:@a浮生若梦a 官方文档中并没有标识限制内购产品的数量,其次就是我之前添加的时候也有这种情况,一般是网络原因导致显示的问题。你可以测试一下到底有没有添加上,方法:
    1.重新添加同一个标识符的产品在iTunes Connect中,如果苹果确认添加成功,会提示你“重复添加”
    2.使用代码验证,你把所有添加的内购产品同时请求苹果的服务器,查看返回的数据情况。如果那个产品未添加上,苹果会返回该标识符错误。
  • a浮生若梦a:我想问一下,如果配置好相关的银行,税务,等信息,添加到app内购项目里面了,到这里为止,可以用测试账号自己测试吗?我这里测试没有获取到数据!不知道为什么,还是因为我没有提交审核,
    a浮生若梦a:@李周 好的,我在试试,,多谢🙏
    李周:@a浮生若梦a 不需要审核就能进行测试的。如果你正确配置完了银行等信息,可以按以下步骤进行检测:
    1.在iTunes Connect中是否配置正确内购项,是否正确添加测试账号 --->测试账号是之前未使用过并且不能再实际中运用的,在手机上应该先退出自己的账号再登入测试,一旦在实际中登入,测试账号不能再使用。
    2.打断点,查看错误信息 --->判断是否为手机设备的原因
    3.证书配置 --->如果手机验证正确,判断是否你的证书配置出现问题

本文标题:iOS 支付 --苹果内购解读

本文链接:https://www.haomeiwen.com/subject/hamiqxtx.html