Realex Payments iOS 库
您可以在 https://developer.realexpayments.com 上找到有关如何使用此库以及如何注册免费 Realex Payments 沙盒账号的更多信息
要求
- iOS 9.0+
- Xcode 7.1.1+
安装
CocoaPods
- 要将 Realex Payments iOS 库集成到您的 Xcode 项目中,请使用 CocoaPods 指定它
pod 'RXPiOS', '~> 1.7.0'
- 然后,运行以下命令
$ pod install
用户手册
如果您不希望使用依赖管理器,可以将Realex Payments iOS库手动集成到您的项目中。
- 从GitHub下载最新版本
https://github.com/realexpayments/rxp-ios/releases
- 将文件夹'RealexComponent'拖放到Xcode中,以使用库的HPP部分。
- 运行以下命令
$ pod install
- 如果您想使用卡片数据验证库,将文件夹'RealexRemote'拖放到您的Xcode项目中。
使用HPP库
实例化
要实例化HPP管理器,请执行以下操作
let hppManager = HPPManager()
与您的服务器集成
HPP管理器需要三个服务器URL。
-
请求生产者URL:使用Realex HPP服务器SDK之一;此URL创建用于组件的必要请求JSON,并使用存储在服务器端的共享密钥。
-
HPP URL:组件发送编码请求的位置。实时交易的默认值为https://pay.realexpayments.com/pay
-
响应消费者URL:使用Realex HPP服务器SDK之一;从HPP接收到的编码响应中检查哈希的有效性并解码响应。
hppManager.HPPRequestProducerURL = URL(string: "https://myserver.com/hppRequestProducer")
hppManager.HPPURL = URL(string: "https://pay.realexpayments.com/pay")
hppManager.HPPResponseConsumerURL = URL(string: "https://myserver.com/hppResponseConsumer")
设置委托
接下来,您需要设置一个对象作为HPPManager的代理。这个代理应实现HPPManagerDelegate协议,从而能够接收来自HPP Manager的响应。
hppManager.delegate = self
代理回调
从HPP交互中有三种可能的结局。
-
它成功完成。这返回HPP的解码JSON,解析为本地字典的形式,包含名称/值对。
-
它失败并出现错误。这返回一个Error类的对象,您可以访问如code和localizedDescription等属性,以获取更多错误详情。
-
它被用户取消。
HPP Manager的代理应实现以下三个函数以接收来自HPP Manager的结果。
func HPPManagerCompletedWithResult(_ result: [String: String])
func HPPManagerFailedWithError(_ error: Error?)
func HPPManagerCancelled()
显示支付表单
使用presentViewInViewController()方法,HPP Manager将处理给定的参数,从服务器获取请求,将编码的请求发送到HPP,并显示返回的表单。
hppManager.presentViewInViewController(self)
处理HPP响应JSON
在服务器端,使用我们的服务器SDK之一,设置您的响应消费者以接收响应JSON并创建HPP响应。
RealexHpp realexHpp = new RealexHpp("secret");
HppResponse hppResponse = realexHpp.responseFromJson(responseJson);
另一种设置
如果您的客户端代码需要在接收HPPManagerCompletedWithResult代理时接受不同于
-
将HPPManagerDelegate更改为GenericHPPManagerDelegate。
-
将HPPManager()更改为GenericHPPManager
(),其中HPPResponse是一个自定义定义的结构或类。 -
更改函数签名
from
func HPPManagerCompletedWithResult(_ result: [String: String]) { ... }
into
func HPPManagerCompletedWithResult(_ result: HPPResponse) { ... }
示例
final class ViewController: UIViewController, GenericHPPManagerDelegate {
func pay() {
let hppManager = GenericHPPManager<HPPResponse>()
hppManager.setGenericDelegate(self)
...
}
func HPPManagerCompletedWithResult(_ result: HPPResponse) { ... }
func HPPManagerFailedWithError(_ error: Error?) { ... }
func HPPManagerCancelled() { ... }
}
注意:默认情况下,HPPManager使用
常见问题解答(FAQ)
设置 HPP 属性
您也可以在组件中设置所需的所有 HPP 属性,例如:
hppManager.merchantId = "realexsandbox"
hppManager.account = "internet"
hppManager.amount = "100"
hppManager.currency = "EUR"
这些将被发送到 请求生产者 URL,您的服务器端代码必须配置为接收这些值并将它们传递给 HPP 服务器端 SDK 以便包含在请求中。
注意,除了预定义属性外,您可以添加任何数量的额外任意属性,如下所示:
hppManager.supplementaryData["UNKNOWN_1"] = "Unknown value 1"
hppManager.supplementaryData["UNKNOWN_2"] = "Unknown value 2"
此外,除了预定义的头部值外,您可以添加任何数量的额外值,如下所示:
hppManager.additionalHeaders = ["custom-header-1": "test param 1",
"custom-header-2": "test param 2",
"custom-header-3": "test param 3"]
测试
Realex Payments 为实时和测试交易维护单独的端点。您需要覆盖 SDK 中的 HPP URL 以便进行测试。使用以下代码:
hppManager.HPPURL = URL(string: "https://pay.sandbox.realexpayments.com/pay")
许可协议
请参阅 LICENSE 文件。