CyberSource 移动销售点
通过 BBPOS 终端在各种渠道(零售、互联网和 MOTO)上接受卡片支付的能力。我们的通用 SDK(iOS、Android)旨在接受 EMV-接触式、非接触式、滑动和手动输入交易。我们的解决方案集成到令牌管理解决方案中,以将卡片数据作为令牌提供。这些令牌可用于后续操作,为商家提供最終的安全保障。无尽货架用例为客户提供方便地订购缺货或不在店内销售的产品,并将它们送到家的服务。通过 Bluefin 提供的端到端加密 PCI 认证解决方案提供最高级别的安全性。SDK 的白色标签化提供丰富定制的商家应用程序以进行品牌化。SDK 提供的附加价值包括支付搜索历史记录、电子签名存储和检索。
使用 MPOS SDK
请参阅此处获取详细的实现指南。 https://www.cybersource.com/developers/integration_methods/mpos/
- 在商家应用程序中包含 CYBSMposKit.framework。选择目标,在嵌入式二进制中,按加号(+)并选择框架。一旦包含,确保在《构建设置》选项卡中,在《搜索路径》部分中正确添加了这些框架的路径。
- 如果应用程序是用 Swift 开发的,由于 CYBSMposKit.framework 是用 Objective-C 编写的,因此应用程序必须创建一个桥接头文件。
// Example: CybsMposDemo-Bridging-Header.h
#ifndef CYBSMposDemo_Bridging_Header_h
#define CYBSMposDemo_Bridging_Header_h
#import <CYBSMposKit/CYBSMposKit.h>
#endif
- 在您的项目 Info.plist 文件中,添加属性“支持的静态外部辅助协议”,并将“com.bbpos.bt.wisepad”添加为其中一个值。
- 对于蓝牙 MFi 设备,在扫描可用的读取器之前,请在“设置”-“蓝牙”中连接您的读取器。
创建并提交一个EMV交易
- 使用环境和设备ID初始化SDK
// Swift
let manager = CYBSMposManager.sharedInstance()
let settings = CYBSMposSettings(environment: .live, deviceID: deviceID)
manager.settings = settings
manager.updateSettings()
// Objective-C
CYBSMposManager *manager = [CYBSMposManager sharedInstance];
CYBSMposSettings *settings = [[CYBSMposSettings alloc] initWithEnvironment:CYBSMposEnvironmentLive deviceID:"deviceId"];
manager.settings = settings;
[manager updateSettings];
- 连接到卡片读取器
- 蓝牙
// Swift
// Scan devices, and check scan result in CYBSMposManagerDelegate callback method
manager.scanBTDevices(self)
// Scan callback method in CYBSMposManagerDelegate
func onBTReturnScanResults(_ devices:[CYBSMposBluetoothDevice]? {
deviceList = devices
//loop devices array list
for device in deviceList {
let name = device.name
}
}
// Connect to a card reader
let selectedDevice = deviceList[0]
manager.connectBTDevice(selectedDevice)
// Connect callback method in CYBSMposManagerDelegate
func onBTConnected() {
// Now you can get the card reader info
manager.getDeviceInfo(self)
}
// Objective-C
// For devices with bluetooth MFi (wisepad2), connect from Settings - Bluetooth first.
// Scan for available device
[manager scanBTDevices:self delegate:self];
// Wait for callback method deviceList in CYBSMposManagerDelegate
// Scan callback method in CYBSMposManagerDelegate
- (void)deviceList:(nullable NSArray *) deviceList {
if (nil == devices) {
return;
}
// Loop devices array list
for (int i = 0; i < deviceList.count; ++i) {
NSObject *deviceDict = [deviceList objectAtIndex:i];
NSString *serial = [deviceDict valueForKey:@"serialNumber"];
NSString *model = [deviceDict valueForKey:@"name"];
NSString *version = [deviceDict valueForKey:@"firmwareRevision"];
}
}
// Passing one of the object returned by above callback to connect to reader.
[manager connectBTDevice:device];
// Connect callback method in CYBSMposManagerDelegate
- (void)onBTConnected {
// Now you can get the card reader info
[manager getDeviceInfo:self];
}
- 音频插孔
// Swift
// Start audio
manager.startAudio(self)
// Audio callback methods in CYBSMposManagerDelegate
func onAudioDevicePlugged() {}
func onAudioInterrupted() {}
func onNoAudioDeviceDetected() {}
// Objective-C
// Start audio
[manager startAudio:self];
// Audio callback methods
- (void)onAudioDevicePlugged {}
- (void)onAudioInterrupted {}
- (void)onNoAudioDeviceDetected {}
- 创建CYBSMposPaymentRequest。更多详情请参考CYBSMposPaymentRequest.h
// Swift
var amount:NSDecimalNumber = 10.0
let paymentRequest = CYBSMposPaymentRequest(
merchantID: merchantID,
accessToken: accessToken,
amount: amount,
entryMode: .swipeOrInsertOrTap
)
// Objective-C
NSDecimalNumber* amount = [[NSDecimalNumber alloc] initWithString:@"10.0"];
CYBSMposPaymentRequest *paymentRequest = [[CYBSMposPaymentRequest alloc] initWithMerchantID: merchantID
accessToken:accessToken
amount:amount
entryMode:CYBSMposPaymentRequestEntryModeSwipeOrInsertOrTap];
- 启动支付流程使用已初始化的paymentRequest,您可以启动支付并处理支付响应(见步骤5)。
// Swift
manager.performPayment(paymentRequest, parentViewController: self, delegate: self)
// Objective-C
[manager performPayment:paymentRequest parentViewController:self delegate:self];
- 处理支付响应。更多详情请参考CYBSMposPaymentResponse.h
// Swift
func performPaymentDidFinish(result: CYBSMposPaymentResponse?, error: NSError?) {
if error != nil {
// Error handling
} else {
}
}
// Objective-C
- (void) performPaymentDidFinish:(nullable CYBSMposPaymentResponse *)result error:(nullable NSError *)error {
if (error != nil) {
// Error handling
} else {
}
}