KIPOIAPKit 0.0.2

KIPOIAPKit 0.0.2

Omid Golparvar 维护。



  • Omid Golparvar

应用内支付

一般支付流程(非技术层面)

1. 在调用支付/转账指令之前,必须根据所需的信息对库进行配置。如果在调用支付/转账指令时未满足库所需的条件,库将向开发者返回一个适当的错误。

2. 根据开发者的要求,软件(给出支付/转账要求的金额)将向库发起支付/转账请求。

3. 库将使用在配置阶段获得的信息来模拟支付/转账请求,并将用户从软件中转到 Safari 浏览器中,以便用户继续支付/转账流程。

4. 用户在浏览器中查看支付信息(例如金额、收款方等)后,将做出是否继续支付或取消支付的决定。

5. 如果用户选择支付,最终将显示一个页面给用户,其中包括适当的消息(根据成功或错误显示),还有一个返回到软件的按钮。

6. 点击返回软夔按钮后,将从交易中获取的信息也将传递给软件;开发者将根据这些信息继续采取必要的行动。

7. 然后,开发者、软件、用户以及我们都将幸福地继续我们的生活。

安装和配置流程

为了安装和使用此工具,我们采用了iOS编程中的常用方法或使用Cocoapod(项目依赖项管理工具)。

1. 开发者可以通过将指令 pod 'KIPOIAPKit' 添加到项目的 Podfile 文件中,并使用 pod install 命令安装依赖项,将此库添加到项目中。

2. 交易结果的传输将使用Deep Linking进行。为此,将使用应用程序标识符或Bundle Identifier作为URLScheme;以确保URLScheme的唯一性。为了配置Deep Linking,将以下代码添加到 info.plist 文件中:

<key>CFBundleURLTypes</key>
<array>
   <dict>
      <key>CFBundleURLName</key>
      <string>{{APP_BUNDLE_ID}}</string>
      <key>CFBundleURLSchemes</key>
      <array>
         <string>{{APP_BUNDLE_ID}}</string>
      </array>
   </dict>
</array>

3. 下一个配置步骤是在应用程序内配置该库。

3.1. 要使用从浏览器传输到应用程序的信息,必须使用 Check(_ url:) 方法。我们将把这个方法放到 AppDelegate 文件的相关部分。

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    return KipoIAP.Check(url)
}

如果此方法接收到的URL结构正确(根据库的结构和预期变量),则将根据接收到信息发生以下两种情况之一:

3.1.1. 如果支付过程顺利完成且已生成支付令牌,将调用下面的方法:

KipoIAP.delegate?.kipoPayment(paymentToken:)

3.1.2. 如果在支付过程中出现错误,将调用下面的方法以及出现的错误信息:

KipoIAP.delegate?.kipoPayment(errorMessage:)

3.2. 下一步是使用 Setup(merchantKey:) 方法。此方法的输入类型为 String,开发者必须在调用支付请求/转账请求之前,以该方法的参数形式提供在Kipo系统中注册的手机号码。

调用付款请求/转账请求

1. 为了调用付款请求,开发者首先需要指定标识符。这与给 UITableView 元素指定 delegate 的方式相同。正如使用 UITableView 时,将元素作为 delegate 并实现必要的 UITableViewDelegate 方法一样,在此处,必须指定与 KipoIAP 相关的 delegate 并实现其方法;这样就会实现 KipoIAPDelegate 协议。此协议有三个必须实现的方法

  • kipoCannotPerform(error:) 方法:在无法执行调用时,将带有相关错误信息提供给开发者。
  • kipoPayment(paymentToken:) 方法:在支付成功完成并生成支付令牌后,将支付令牌提供给开发者。
  • kipoPayment(errorMessage:) 方法:在支付过程中出现错误时,将出现错误信息提供给开发者。

配置 delegate 也使用 Setup(delegate:) 方法进行。

2. 调用付款请求/转账请求使用 Pay(amount:) 方法,该方法只有一个数字(Int)类型的输入,表示以里亚尔为单位的付款金额。