cybersource-mpos-sdk 2.0

cybersource-mpos-sdk 2.0

RakeshVisa 维护。



  • Cybersource

CyberSource 移动销售点

通过 BBPOS 终端在各种渠道(零售、互联网和 MOTO)上接受卡片支付的能力。我们的通用 SDK(iOS、Android)旨在接受 EMV-接触式、非接触式、滑动和手动输入交易。我们的解决方案集成到令牌管理解决方案中,以将卡片数据作为令牌提供。这些令牌可用于后续操作,为商家提供最終的安全保障。无尽货架用例为客户提供方便地订购缺货或不在店内销售的产品,并将它们送到家的服务。通过 Bluefin 提供的端到端加密 PCI 认证解决方案提供最高级别的安全性。SDK 的白色标签化提供丰富定制的商家应用程序以进行品牌化。SDK 提供的附加价值包括支付搜索历史记录、电子签名存储和检索。

使用 MPOS SDK

请参阅此处获取详细的实现指南。 https://www.cybersource.com/developers/integration_methods/mpos/

  1. 在商家应用程序中包含 CYBSMposKit.framework。选择目标,在嵌入式二进制中,按加号(+)并选择框架。一旦包含,确保在《构建设置》选项卡中,在《搜索路径》部分中正确添加了这些框架的路径。
  2. 如果应用程序是用 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
  1. 在您的项目 Info.plist 文件中,添加属性“支持的静态外部辅助协议”,并将“com.bbpos.bt.wisepad”添加为其中一个值。
  2. 对于蓝牙 MFi 设备,在扫描可用的读取器之前,请在“设置”-“蓝牙”中连接您的读取器。

创建并提交一个EMV交易

  1. 使用环境和设备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];
  1. 连接到卡片读取器
  • 蓝牙
// 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 {}
  1. 创建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];
  1. 启动支付流程使用已初始化的paymentRequest,您可以启动支付并处理支付响应(见步骤5)。
// Swift
manager.performPayment(paymentRequest, parentViewController: self, delegate: self)
// Objective-C
[manager performPayment:paymentRequest parentViewController:self delegate:self];
  1. 处理支付响应。更多详情请参考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 {
    }
}