RXPiOS 1.7.3

RXPiOS 1.7.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2021 年 9 月
SPM支持 SPM

Realex Payments ITSOHPS 开发门户团队全球支付开发团队 维护。



RXPiOS 1.7.3

  • Damian Sullivan 和 Realex Payments

Realex Payments iOS 库

您可以在 https://developer.realexpayments.com 上找到有关如何使用此库以及如何注册免费 Realex Payments 沙盒账号的更多信息

要求

  • iOS 9.0+
  • Xcode 7.1.1+

安装

CocoaPods

  1. 要将 Realex Payments iOS 库集成到您的 Xcode 项目中,请使用 CocoaPods 指定它
pod 'RXPiOS', '~> 1.7.0'
  1. 然后,运行以下命令
$ 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。

  1. 请求生产者URL:使用Realex HPP服务器SDK之一;此URL创建用于组件的必要请求JSON,并使用存储在服务器端的共享密钥。

  2. HPP URL:组件发送编码请求的位置。实时交易的默认值为https://pay.realexpayments.com/pay

  3. 响应消费者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交互中有三种可能的结局。

  1. 它成功完成。这返回HPP的解码JSON,解析为本地字典的形式,包含名称/值对。

  2. 它失败并出现错误。这返回一个Error类的对象,您可以访问如code和localizedDescription等属性,以获取更多错误详情。

  3. 它被用户取消。

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代理时接受不同于的其他类型,您需要以不同的方式设置库。

  1. 将HPPManagerDelegate更改为GenericHPPManagerDelegate。

  2. 将HPPManager()更改为GenericHPPManager(),其中HPPResponse是一个自定义定义的结构或类。

  3. 更改函数签名

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 文件。