应用内支付
一般支付流程(非技术层面)
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
)类型的输入,表示以里亚尔为单位的付款金额。