Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ViewController.m
- // TestAppNMI
- //
- // Created by Dimitar Stojchev on 5/17/19.
- // Copyright © 2019 Dimitar Stojchev. All rights reserved.
- //
- #import "ViewController.h"
- #import "ChipDnaMobile.h"
- #import "VersionInformation.h"
- #import "ChipDnaMobileSerializer.h"
- NSString *const TID = @"99963257";
- NSString *const TK = @"9URNQjAA7BzENnQn";
- NSString *const CURRENCY = @"GBP";
- @interface ViewController ()
- @end
- @implementation ViewController
- -(IBAction)makeTransaction:(UIButton *)sender{
- CCParameters *params = [CCParameters.alloc init];
- [params setValue:CCValueTrue forKey:CCParamForceTmsUpdate];
- CCParameters *response = [ChipDnaMobile.sharedInstance connectAndConfigure:params];
- NSLog(@"%@",response.allValues);
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- [self setUpCEM];
- }
- -(void)setCredentials{
- //The credentials consist of a Terminal ID and Transaction Key. This demo application has it's own terminal ID and transaction key hard coded at the top of this file.
- //If you don't have a terminal ID or transaction key you can sign up for a test WebMIS account at https://testwebmis.creditcall.com
- NSLog(@"Using TID %@, TK %@", TID, TK);
- CCParameters *request = [[CCParameters alloc]init];
- [request setValue:TID forKey:CCParamTerminalId];
- [request setValue:TK forKey:CCParamTransactionKey];
- [request setValue:CCValueEnvironmentTest forKey:CCParamEnvironment];
- [request setValue:@"TYTEST" forKey:CCParamApplicationIdentifier];
- CCParameters *response = [[ChipDnaMobile sharedInstance]setProperties:request];
- if([[response valueForKey:CCParamResult] isEqualToString:CCValueFalse]){
- NSLog(@"Failed to set credentials, %@", [response valueForKey:CCParamError]);
- }else{
- CCParameters *status = [[ChipDnaMobile sharedInstance] getStatus:nil];
- VersionInformation *version = [ChipDnaMobileSerializer deserializeVersionInformation:[status valueForKey:CCParamVersionInformation]];
- NSLog(@"ChipDNA Mobile VersionNumber=%@ VersionName=%@", version.chipDnaVersion, version.chipDnaReleaseName);
- }
- }
- -(void)setUpCEM{
- //Initialise ChipDNA Mobile before we can start interacting with the API.
- //It's passible check if this has already been done using isInitialised.
- if (![ChipDnaMobile isInitialized]) {
- NSLog(@"Initialize ChipDNA Mobile");
- //Sending an initial password request with appropriate message
- CCParameters *request = [[CCParameters alloc]init];
- [request setValue:@"Test" forKey:CCParamPassword];
- CCParameters *response = [ChipDnaMobile initialize:request];
- NSLog(@"Initialize result: %@", [response valueForKey:CCParamResult]);
- [self initialisationCompleted:response];
- }
- }
- - (void)initialisationCompleted:(CCParameters *)response
- {
- BOOL initialised = [[response valueForKey:CCParamResult] isEqualToString:CCValueTrue];
- if (initialised)
- {
- // ChipDNA Mobile has been successfully initialized.
- NSLog(@"ChipDnaMobile initialization completed");
- [ChipDnaMobile addDeviceUpdateTarget:self action:@selector(deviceUpdate:)];
- [ChipDnaMobile addConfigurationUpdateTarget:self action:@selector(configurationUpdate:)];
- [ChipDnaMobile addConnectAndConfigureFinishedTarget:self action:@selector(connectAndConfigureFinished:)];
- [ChipDnaMobile addTmsUpdateTarget:self action:@selector(updateFinished:)];
- // We can start setting our ChipDNA Mobile credentials.
- [self setCredentials];
- }
- else
- {
- NSLog(@"ChipDNA Mobile initialization failed <%@>", [response valueForKey:CCParamError]);
- NSString *message = nil;
- if ([response valueForKey:CCParamRemainingAttempts].integerValue > 1)
- {
- message = [NSString stringWithFormat:@"Please enter password. (Remaining Attempts %@)", [response valueForKey:CCParamRemainingAttempts]];
- }else if([response valueForKey:CCParamRemainingAttempts].integerValue == 1){
- message = @"Please enter password. (Last Attempt)";
- }else{
- message = @"Please enter password.";
- }
- }
- }
- -(void)updateFailed:(NSString *)error {
- //TMS update failed. Check error returned.
- NSLog(@"TMS update failed - %@", error);
- }
- -(void)updateFinished:(CCParameters *)response{
- //TMS update completed. We're ready to connect to the PINpad.
- NSLog(@"TMS update completed at %@", [response valueForKey:CCParamTmsUpdateUtc]);
- if([[response valueForKey:CCParamResult] isEqualToString:CCValueFalse]){
- [self updateFailed:[response valueForKey:CCParamError]];
- }
- }
- #pragma mark PinPadConnectionDelegate
- -(void)deviceUpdate:(CCParameters *)response {
- DeviceStatus *deviceStatus = [ChipDnaMobileSerializer deserializeDeviceStatus:[response valueForKey:CCParamDeviceStatusUpdate]];
- NSLog(@"Device Update: %@", [DeviceStatus getDeviceStatusString:deviceStatus.deviceStatus]);
- if(deviceStatus.availablityError){
- NSLog(@"Availablility Error: %@", deviceStatus.availablityError);
- if(deviceStatus.errorInformation.count > 0){
- NSLog(@"Error Information:");
- for (NSString *key in deviceStatus.errorInformation.allKeys) {
- NSLog(@"%@ : %@", key, [deviceStatus.errorInformation objectForKey:key]);
- }
- }
- }
- }
- -(void)configurationUpdate:(CCParameters *)response {
- NSLog(@"Configuration update: %@", [response valueForKey:CCParamConfigurationUpdate]);
- }
- -(void)connectAndConfigureFinished:(CCParameters *)response{
- if([[response valueForKey:CCParamResult] isEqualToString:CCValueTrue]){
- //Configuration has completed successfully and we are ready to perform transactions.
- NSLog( @"Ready for transactions");
- }else{
- //Configuration of the PINpad has failed. Check error code.
- NSLog(@"Failed to initialize PINpad - %@", [response valueForKey:CCParamError]);
- }
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement