Silent Order Post SDK iOS
Introdução
Silent Order Post SDK 是 Cielo 为商家提供的一种集成方式,用于安全地传输支付数据,并保持对结账体验的完全控制。
此方法可以将您的客户的支付数据以安全的方式直接发送到我们的系统。支付数据,例如卡号和有效期,将存储在符合 PCI DSS 3.2 认证的 Cielo 环境中。
功能
- 通过 SDK 在您的结账页面定义的字段直接捕获支付数据到 Cielo 系统中。
- 兼容 Gateway Pagador 提供的所有支付方式(国内和国际)
- 减少 PCI DSS 范围
- 保持对结账体验的完全控制,同时保持您的品牌的外观和感觉
集成
1. 获取AccessToken
为了使用SDK,需要从Cielo的认证API(oAuth)生成AccessToken。
这是通过向以下端点发送POST请求来完成的:
https://transactionsandbox.pagador.com.br/post/api/public/v1/accesstoken?merchantid={mid}
在这里,需要将{mid}
替换成你在平台 Pagador da Cielo 上的 商店 MerchantID。
示例
https://transactionsandbox.pagador.com.br/post/api/public/v1/accesstoken?merchantid=00000000-0000-0000-0000-000000000000
请求
POST /v1/accesstoken?merchantid={mid}
属性 | 描述 | 类型 | 大小 | 必填 |
---|---|---|---|---|
mid | Pagador上的商店标识符 | Guid | 36 | 是 |
响应
作为响应,商店会收到一个json(HTTP 201 Created),其中包含了一些信息,如凭证(AccessToken)
属性 | 描述 | 类型 | 大小 | 格式 |
---|---|---|---|---|
MerchantId | Pagador上的商店标识符 | Guid | 36 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
AccessToken | 访问令牌。出于安全考虑,此凭证将允许商店在一个默认设置在响应中的时间范围内(默认为20分钟)内保存一张卡片,通过ExpiresIn属性。哪个先发生将使同一凭证失效,以用于未来使用。 | 文本 | – | NjBhMjY1ODktNDk3YS00NGJkLWI5YTQtYmNmNTYxYzhlNjdiLTQwMzgxMjAzMQ== |
Issued | 生成时间和日期 | 文本 | – | AAAA-MM-DDTHH:MM:SS |
ExpiresIn | 过期日期和时间 | 文本 | - | AAAA-MM-DDTHH:MM:SS |
Por questões de segurança, será requerido obrigatoriamente o cadastro de um IP válido do estabelecimento na Cielo. Caso contrário a requisição não será autorizada (HTTP 401 NotAuthorized). Por favor, identifique qual será o IP de saída que acessará a API e na sequência solicitar o cadastro do mesmo através do canal de atendimento Cielo
2. 使用SDK和发送卡片数据
一旦获得AccessToken后,需要实例化SDK并发送卡片数据。
要使用SDK,需要将SilentOrderPost.framework库包含到您的项目中。
2.1 安装
CocoaPods是一个用于Xcode项目的依赖性管理器。有关其使用和安装的更多信息,请访问官方网站。
要在项目中使用CocoaPods的Silent Order Post SDK,请将以下代码添加到您的项目的Podfile中:
pod 'CieloSilentOrderPost'
在将Silent Order Post添加到Podfile后,只需在项目目录的终端中运行以下命令:pod install
。
完成这些步骤后,我们可以继续进行使用示例。
3. 如何使用
3.1 导入
import CieloSilentOrderPost
3.2 - 实例化SDK
private var sdk: SilentOrderPostProtocol!
override func viewDidLoad() {
super.viewDidLoad()
sdk = SilentOrderPost.createInstance(environment: .production)
}
需要指定想要使用的环境 - 沙盒(开发)或生产。
环境 | 枚举 |
---|---|
沙盒(开发) | Environment.sandbox |
生产 | Environment.production |
2.3 - 提供AccessToken
获取AccessToken后,是时候发送卡片数据了。发送卡片数据时,使用方法sendCardData
。
sdk.sendCardData(
accessToken: accessToken
cardHolderName: "Cliente Cielo",
cardNumber: "4000000000001091",
cardExpirationDate: "10/2029",
cardCvv: "621",
enableBinQuery: true
onValidation: { (results) -> Void? in
// tratar o retorno da validação aqui
},
onSuccess: { (result) in
// manipular o paymentToken recebido aqui
},
onEror: { (error) -> Void? in
// manipular o erro aqui
}
)
注意:您还可以启用binQuery(默认为false)。
2.4 - 发送卡片数据
属性 | 描述 |
---|---|
cardHolderName | 信用卡持卡人姓名 |
cardNumber | 信用卡/借记卡号 |
cardExpirationDate | 信用卡/借记卡有效期(DD/YYYY) |
cardCvv | 信用卡/借记卡安全码 |
onError | 用于处理错误情况的回调。将返回错误代码和描述 |
onSuccess | 用于成功情况的回调。将返回PaymentToken,如果请求卡验证,还将返回卡信息。出于安全原因,此PaymentToken仅可用于授权。处理后将失效。 |
onValidation | 用于验证的回调(数据错误)。将返回错误字段的详细信息。 |
2.5 - 回调返回详情
onValidation
public class ValidationResults: NSObject, Codable {
public var field, message: String
@objc init(field: String, message: String) {
self.field = field
self.message = message
}
}
如果发生,此回调将返回一个包含ValidationResults
类型对象的列表。
onError
public class ErrorResult: NSObject, Codable {
public var errorCode, errorMessage: String
init(errorCode: String, errorMessage: String) {
self.errorCode = errorCode
self.errorMessage = errorMessage
}
}
如果发生,此回调将返回一个ErrorResult
类型的对象。
onSuccess
public class SuccessResult: NSObject, Codable {
public var paymentToken,
brand,
foreignCard,
binQueryReturnCode,
binQueryReturnMessage: String?
init(paymentToken: String,
brand: String,
foreignCard: String,
binQueryReturnCode: String,
binQueryReturnMessage: String) {
self.paymentToken = paymentToken
self.brand = brand
self.foreignCard = foreignCard
self.binQueryReturnCode = binQueryReturnCode
self.binQueryReturnMessage = binQueryReturnMessage
}
}
如果发生,此回调将返回一个SuccessResult
类型的对象。