EasyPay 1.0.2

EasyPay 1.0.2

ndraper 维护。



EasyPay 1.0.2

  • Easy Pay Solutions

README

Easy Pay iOS SDK

Easy Pay 库提供对 Easy Pay API 的访问,以实现与 iOS 应用的流畅集成。

通用 Easy Pay 开发者文档

要求

  • Xcode 15 或更高版本
  • 适用于 iOS 13.0 或更高版本

开始使用

  1. 先决条件 - 从 Easy Pay HMAC 秘钥和 API 密钥获取

  2. 配置 Easy Pay 类,例如在支付模块或 AppDelegate (didFinishLaunchingWithOptions) 中

EasyPay.shared.configureSecrets(apiKey: "YOURAPIKEY",
                                hmacSecret: "YOURHMACSECRET")
  1. 请注意,Easy Pay 初始化过程中会开始下载证书的过程。在下载完成之前进行任何调用将导致错误(RsaCertificateError.failedToLoadCertificateData)。您可以通过访问以下枚举来检查下载状态
EasyPay.shared.certificateStatus

安装

  1. 使用 Swift Package Manager 进行设置
.package(url: "https://github.com/Easy-Pay-Solutions/Mobile-SDK-IOS.git", from: "0.1.0")
  1. 使用 Cocoapods 进行设置
pod 'EasyPay'

EasyPay 类中的公共方法

EasyPay.shared.configureSecrets(apiKey: String, hmacSecret: String)
EasyPay.shared.loadCertificate(_ completion: @escaping (Result<Data, Error>) -> Void)

EasyPay 中的 ApiClient 中的公共方法

1. 充值信用卡 - CreditCardSale_Manual Easy Pay API 文档

当手动输入信用卡详情时,处理信用卡销售。详情包括卡号、到期日、CVV、持卡人姓名和地址。

EasyPay.apiClient.chargeCreditCard(request: CardSaleManualRequest,
                                   completion: @escaping (Result<CreditCardSaleResponse, Error>) -> Void)

数据类(请求)

  • ChargeCreditCard
    • TransactionRequest
      • creditCardInfo: CreditCardInfo
      • accountHolder: AccountHolder
      • endCustomer: EndCustomer?
      • amounts: Amounts
      • purchItems: PurchItems
      • merchantId: Int

数据类(响应)

  • ChargeCreditCard
    • CardSaleManualResponseModel

2. 查询年度同意 - ConsentAnnual_Query Easy Pay API 文档

一个返回年度同意详细信息的查询。根据发送的查询,可能返回单个或多个同意。

EasyPay.apiClient.listAnnualConsents(request: ConsentAnnualListingRequest,
                                     completion: @escaping (Result<ListingConsentAnnualResponse, Error>) -> Void)

数据类(请求)

  • ListAnnualConsents
    • AnnualQueryHelper
      • merchantId: String
      • customerReferenceId: String?
      • endDate: Date?

数据类(响应)

  • ListAnnualConsents
    • ConsentAnnualListingResponseModel

3. 创建年度同意 - ConsentAnnual_Create_MAN Easy Pay API 文档

此方法通过发送包含卡号、到期日、CVV 和持卡人联系信息的信用卡详情来创建年度同意。它不会通过阅读器设备刷卡创建。

EasyPay.apiClient.createAnnualConsent(request: CreateConsentAnnualRequest,
                                      completion: @escaping (Result<CreateConsentAnnualResponse, Error>) -> Void)

数据类(请求)

  • CreateAnnualConsent
    • CreateConsentAnnualManualRequestModel
      • creditCardInfo: CreditCardInfo
      • consentAnnualCreate: CreateConsentAnnual
      • accountHolder: AccountHolder
      • endCustomer: AnnualEndCustomer?

数据类(响应)

  • CreateAnnualConsent
    • CreateConsentAnnualResponseModel

4. 取消年度同意 - ConsentAnnual_Cancel Easy Pay API 文档

取消年度同意。在取消完成后,从系统中删除信用卡数据。

EasyPay.apiClient.cancelAnnualConsent(request: CancelConsentAnnualRequest,
                                      completion: @escaping (Result<CancelConsentAnnualResponse, Error>) -> Void)

数据类(请求)

  • CancelAnnualConsent
    • CancelConsentAnnualManualRequestModel
      • consentId: Int

数据类(响应)

  • CancelAnnualConsent
    • CancelConsentAnnualResponseModel

5. 处理年度同意支付 - ConsentAnnual_ProcPayment Easy Pay API 文档

此方法使用存储的信用卡处理现有同意的支付。

EasyPay.apiClient.processPaymentAnnualConsent(request: ProcessPaymentAnnualRequest,
                                              completion: @escaping (Result<ProcessPaymentAnnualResponse, Error>) -> Void)

数据类(请求)

  • ProcessPaymentAnnualConsent
    • ProcessPaymentAnnualRequestModel
      • consentId: Int
      • processAmount: String

数据类(响应)

  • ProcessPaymentAnnualConsent
    • ProcessPaymentAnnualResponseModel

SecureTextField

SDK中包含名为SecureTextField的组件,旨在确保信用卡详细信息输入的安全性。它是UITextField的子类,可以实现所需风格的自由定制。

设置时需要配置证书,一旦下载到本地,即可加密信用卡数据。

nameOfYourTextField.setupConfig(EasyPay.shared.config)

要接收需要发送到API的加密卡字符串,可以使用以下方法

nameOfYourTextField.encryptCardData()

如何正确使用API响应

响应必须以预期的顺序和格式进行处理,否则可能会出现非预期行为。

if response.data.errorMessage != "" && response.data.errorCode != 0 {
    //This indicates an error which was handled on the EasyPay servers, consume the ErrCode and the ErrMsg 
    return
} else if response.data.functionOk == true && response.data.txApproved == false {
    //This indicates a declined authorization, display the TXID, RspMsg (friendly decline message), also the decline Code (TxnCode)
} else {
   //Transaction has been approved, display the TXID,  and approval code (also in TXNCODE)  
}

对于所有其他调用,您将按相同的方式消费响应。如果没有TxApproved标志,则可以省略最后的评估。

可能出现的错误

RsaCertificateError

错误名称 建议解决方案
failedToLoadCertificateData 检查证书状态,等待下载完成后继续调用,手动重新下载
failedToCreateCertificate 联系Easy Pay
failedToExtractPublicKey 联系Easy Pay

AuthenticationError

错误名称 建议解决方案
missingSessionKeyOrExpired 检查是否提供了正确的API密钥和hmac密钥,联系Easy Pay获取更新的密钥

NetworkingError

错误名称 建议解决方案
unsuccesfullRequest 检查HTTP状态码
noDataReceived 后端数据为空,请联系Easy Pay
dataDecodingFailure 后端数据未正确解码,请联系Easy Pay
invalidCertificatePathURL 联系Easy Pay

语义版本控制

语义版本控制遵循三部分版本号:MAJOR.MINOR.PATCH。

当您进行不兼容的API更改时,增加

  • MAJOR版本;
  • MINOR版本当您以向后兼容的方式添加功能时;
  • PATCH版本当您进行向后兼容的缺陷修复时。