裸露的最低Apple Pay(Xcode 9 + Swift 4)

我最近有机会涉嫌添加Apple Pay以在应用程序内接受付款。 请务必注意Apple Pay的含义:
–购买实物产品(例如T恤)
–付费服务(例如乘坐出租车)
另一方面,Apple Pay不适用于应用内购买:
–服务订阅(例如记笔记应用程序)
–数字资源(例如宝石或数字音乐)

在这个最低限度的教程中,我将向您展示如何使用Stripe在您的应用程序中接受Apple Pay,而没有任何多余的装饰,以便您可以取出代码并在自己的应用程序中使用它。 请注意,这不会从您的信用卡中扣除费用,因此不必担心测试此代码。

  1. 首先,让我们创建一个单视图项目。

2.添加项目设置。

3.添加Apple Pay功能。

4.添加商家ID。 点按我圈出的加号按钮。 Xcode将在您的开发人员帐户中自动创建此商家ID。

关于Xcode的新版本的妙处在于,您无需去developer.apple.com或itunesconnect.apple.com来进行一些晦涩的设置。 许多事情会自动为您完成。

Apple Pay的目的是授权开发人员并向其提供令牌,以便向用户收费。 您需要一项服务才能实际执行收费。 我们将使用Stripe,因为它非常容易设置和使用。

5.在www.stripe.com上创建一个Stripe帐户。

6.为Stripe创建证书以能够处理付款。 转到Stripe中的仪表板,选择“付款”,然后选择“ Apple Pay”。 点击添加新应用程序,然后按照提示进行操作。 它们非常详细,并包含指向开发人员门户中生成证书并上传到条带中所需去的链接。

7.从Stripe获取API密钥,因为稍后将使用它们。

8.我们将使用cocoapods将Stripe SDK包含到项目中。

9.现在,我们终于可以开始编码了! 在您的AppDelegate中,导入Stripe并更新您的applicationDidLaunch代码。 您需要添加在Stripe的步骤8中获得的可发布密钥,您会在其中看到“您的可发布密钥”:

12.现在,我们可以添加代码以实际显示Apple Pay对话框。 为此,我们使用PKPaymentAuthorizationViewController。 我们添加了PKPaymentAuthorizationViewControllerDelegate,以便能够在用户与Apple Pay UI交互时处理事件。

14.如果单击“使用密码付款”按钮,则可以完成交易,但实际上不会从用户的信用卡中扣款。 为此,我们需要向应用程序添加一个后端。 在本教程中,我将使用node.js Express服务器。 (您可以使用所需的任何类型的后端服务器来执行此操作。您只需要公开一个供我们调用的API即可。您可以通过此处安装节点。安装节点后,您可以创建一个文件夹,运行“ npm init ”,然后按照提示进行操作。

15.我们将需要安装三个软件包才能启动快速服务器。 为此,您可以运行“ npm install stripe express body-parser –save”。

16.在目录中,创建一个index.js文件,并使用以下代码填充它。 这段代码启动了一个快速的API应用程序,它将监听两条不同的路线。 第一个是(GET /),用作健全性检查。 第二个是(POST / pay),用于处理付款。 处理付款的代码仅在应用程序主体中获取数据条令牌,金额和描述,​​我们将让应用发送该数据并将其发送到数据条。 如果Stripe一切正常,我们将返回200,如果出现问题,我们将返回400。您需要添加在Stripe的步骤8中看到的“您的STRIPE密钥”中添加的密钥。

18.在浏览器中,转到http:// localhost:3000再次检查一切是否正常运行。 对于最后一步,我们返回到xcode并添加代码,以使我们的应用将付款令牌传递到后端,并为我们调用Stripe。 更新UIViewController中的委托方法。

20.完成所有设置后,您可以运行该应用并进行购买。 如果一切正常,您将在node.js服务器终端窗口中看到“付款请求”日志。 您还应该在Stripe仪表板中看到3.00付款。

如果一切正常,并且您看到了上面的内容,那么让我祝贺您第一次成功的Apple Pay交易!

有一点我需要说明。 这不是生产就绪代码。 这是最低限度的教程。 在本教程中,与后端的通信是通过HTTP进行的。 必须将其更改为HTTPS。 本教程很好,因为它们不是真实的交易,但是对于现实世界的使用,您需要保护通过Apple Pay获得的令牌。

我在模拟器中测试应用程序时发现了一个问题。 PassbookUIService会反复崩溃,因此我不得不继续重新启动它。 (在看到对话框时,点击“重新打开”)

我希望本教程对您有所帮助。 如果您有疑问或发现代码有问题,请发表评论。 (我至少确保在计算机上运行代码code)

更新:我目前正在致力于通过将目标跟踪转化为冒险游戏来帮助人们完成目标的项目。 请在此处注册以获取有关该项目的最新信息:http://eepurl.com/ggqKR1。

    Interesting Posts