iOS 的 PrimerNolPaySDK
PrimerNolPaySDK 是一个便捷的 iOS 框架,它基于 Nol 支付的 TransitSDK。它简化了与 NFC Nol 支付卡的信息交互。使用此 SDK,您可以扫描、链接、解除链接以及选择用于交易的 NFC Nol 支付卡。
SDK 提供了一个简单的用户界面来演示所有可用的实施流程。
功能
- NFC 扫描:扫描 NFC Nol 支付卡。
- 链接/存档:安全地存储支付卡详细信息。
- 解除链接:删除已链接的支付卡详细信息。
- 交易:使用所选卡片进行支付。
要求
- iOS 13.1 或更高版本
- 兼容支持 NFC(近场通信)的设备
- Xcode 12 或更高版本
安装
使用 CocoaPods
要使用 CocoaPods 将 `primer-nol-pay-sdk-ios` 集成到 Xcode 项目中,请将以下行添加到您的 `Podfile` 中
pod 'PrimerNolPaySDK'
然后,在终端中运行以下命令
pod install
初始化
为了示例项目能够工作
- 将您的应用捆绑标识符设置为与 Nol 注册的一个相匹配。
- 从 Nol 获取
AppId
。此 ID 必须在初始化库时使用。 - 添加 NFC 功能
- 更新 Info.plist 文件内容
NFC 功能
要与 NFC Nol 支付卡交互,需要在您的 Xcode 项目中启用 NFC 功能
- 在 Xcode 中打开您的项目。
- 导航到目标设置。
- 在“签名与功能”选项卡下,单击“+ 功能”按钮。
- 添加“近场通信标签读取”。
Info.plist 设置
请将以下设置添加到您的 `Info.plist` 以确保正确的 NFC 通信和网络访问
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
</array>
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>D2760000850100</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NFCReaderUsageDescription</key>
<string>We use NFC to scan Nol payment card. (or whatever fits your needs)</string>
在开发期间使用沙盒环境时需要将 `NSAllowsArbitraryLoads` 设置为 `true`。
用法
...
import PrimerNolPaySDK
let primerNolPay = PrimerNolPay(appId: "<Your-AppID>", isDebug: true, isSandbox: true) { sdkId, deviceId in
return ""
}
您可能需要在生产环境中将调试和沙盒标志设置为 false。
链接卡片
primerNolPay.scanNFCCard { result in
switch result {
case .success(let cardNumber):
print("Scanned Card Number: \(cardNumber)")
case .failure(let error):
print("Error scanning card: \(error)")
}
}
首先,为扫描的卡片创建一个令牌
primerNolPay.makeLinkingTokenFor(cardNumber: "<Scanned-Card-Number>") { result in
// Handle result
}
然后,发送用于链接的 OTP
primerNolPay.sendLinkOTPto(mobileNumber: "<Mobile-Number>", withCountryCode: "<Country-Code>", andToken: "<Token>") { result in
// Handle result
}
最后,使用 OTP 链接卡片
primerNolPay.linkCardFor(otp: "<OTP>", andLinkToken: "<Token>") { result in
// Handle result
}
解除链接卡片
从发送用于解除链接的 OTP 开始
primerNolPay.sendUnlinkOTPTo(mobileNumber: "<Mobile-Number>", withCountryCode: "<Country-Code>", andCardNumber: "<Card-Number>") { result in
// Handle result
}
然后,使用 OTP 解除卡片
primerNolPay.unlinkCardWith(cardNumber: "<Card-Number>", otp: "<OTP>", andUnlinkToken: "<Token>") { result in
// Handle result
}
获取已链接的卡片
primerNolPay.getAvaliableCardsFor(mobileNumber: "<Mobile-Number>", withCountryCode: "<Country-Code>") { result in
// Handle result
}
请求支付
primerNolPay.requestPaymentFor(cardNumber: "<Card-Number>", andTransactionNumber: "<Transaction-Number>") { result in
// Handle result
}
示例项目
仓库包括一个示例项目,它展示了 PrimerNolPaySDK
的全部功能。
故障排除
如果您遇到任何问题,请检查您的捆绑标识符是否与 Nol 注册的相匹配,并确保在初始化期间正确使用了 Nol 提供的 `AppId`。
许可协议
有关详细信息,请参阅 LICENSE 文件。
贡献
欢迎提交拉取请求!我们很高兴听到您的反馈和改进意见。