Advertisement
Guest User

Untitled

a guest
May 17th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. //  ViewController.m
  3. //  TestAppNMI
  4. //
  5. //  Created by Dimitar Stojchev on 5/17/19.
  6. //  Copyright © 2019 Dimitar Stojchev. All rights reserved.
  7. //
  8.  
  9. #import "ViewController.h"
  10. #import "ChipDnaMobile.h"
  11. #import "VersionInformation.h"
  12. #import "ChipDnaMobileSerializer.h"
  13.  
  14.  
  15. NSString *const TID = @"99963257";
  16. NSString *const TK = @"9URNQjAA7BzENnQn";
  17. NSString *const CURRENCY = @"GBP";
  18.  
  19. @interface ViewController ()
  20.  
  21. @end
  22.  
  23. @implementation ViewController
  24.  
  25. -(IBAction)makeTransaction:(UIButton *)sender{
  26.     CCParameters *params = [CCParameters.alloc init];
  27.     [params setValue:CCValueTrue forKey:CCParamForceTmsUpdate];
  28.     CCParameters *response = [ChipDnaMobile.sharedInstance connectAndConfigure:params];
  29.     NSLog(@"%@",response.allValues);
  30. }
  31.  
  32. - (void)viewDidLoad {
  33.     [super viewDidLoad];
  34.     // Do any additional setup after loading the view.
  35.     [self setUpCEM];
  36. }
  37.  
  38. -(void)setCredentials{
  39.     //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.
  40.     //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
  41.     NSLog(@"Using TID %@, TK %@", TID, TK);
  42.    
  43.     CCParameters *request = [[CCParameters alloc]init];
  44.     [request setValue:TID forKey:CCParamTerminalId];
  45.     [request setValue:TK forKey:CCParamTransactionKey];
  46.     [request setValue:CCValueEnvironmentTest forKey:CCParamEnvironment];
  47.     [request setValue:@"TYTEST" forKey:CCParamApplicationIdentifier];
  48.    
  49.     CCParameters *response = [[ChipDnaMobile sharedInstance]setProperties:request];
  50.    
  51.     if([[response valueForKey:CCParamResult] isEqualToString:CCValueFalse]){
  52.         NSLog(@"Failed to set credentials, %@", [response valueForKey:CCParamError]);
  53.     }else{
  54.         CCParameters *status = [[ChipDnaMobile sharedInstance] getStatus:nil];
  55.         VersionInformation *version = [ChipDnaMobileSerializer deserializeVersionInformation:[status valueForKey:CCParamVersionInformation]];
  56.         NSLog(@"ChipDNA Mobile VersionNumber=%@ VersionName=%@", version.chipDnaVersion, version.chipDnaReleaseName);
  57.     }
  58. }
  59.  
  60. -(void)setUpCEM{
  61.     //Initialise ChipDNA Mobile before we can start interacting with the API.
  62.     //It's passible check if this has already been done using isInitialised.
  63.     if (![ChipDnaMobile isInitialized]) {
  64.         NSLog(@"Initialize ChipDNA Mobile");
  65.         //Sending an initial password request with appropriate message
  66.         CCParameters *request = [[CCParameters alloc]init];
  67.         [request setValue:@"Test" forKey:CCParamPassword];
  68.        
  69.         CCParameters *response = [ChipDnaMobile initialize:request];
  70.         NSLog(@"Initialize result: %@", [response valueForKey:CCParamResult]);
  71.         [self initialisationCompleted:response];
  72.     }
  73. }
  74.  
  75. - (void)initialisationCompleted:(CCParameters *)response
  76. {
  77.     BOOL initialised = [[response valueForKey:CCParamResult] isEqualToString:CCValueTrue];
  78.     if (initialised)
  79.     {
  80.         // ChipDNA Mobile has been successfully initialized.
  81.         NSLog(@"ChipDnaMobile initialization completed");
  82.        
  83.         [ChipDnaMobile addDeviceUpdateTarget:self action:@selector(deviceUpdate:)];
  84.         [ChipDnaMobile addConfigurationUpdateTarget:self action:@selector(configurationUpdate:)];
  85.         [ChipDnaMobile addConnectAndConfigureFinishedTarget:self action:@selector(connectAndConfigureFinished:)];
  86.         [ChipDnaMobile addTmsUpdateTarget:self action:@selector(updateFinished:)];
  87.        
  88.         // We can start setting our ChipDNA Mobile credentials.
  89.         [self setCredentials];
  90.     }
  91.     else
  92.     {
  93.         NSLog(@"ChipDNA Mobile initialization failed <%@>", [response valueForKey:CCParamError]);
  94.         NSString *message = nil;
  95.         if ([response valueForKey:CCParamRemainingAttempts].integerValue > 1)
  96.         {
  97.             message = [NSString stringWithFormat:@"Please enter password. (Remaining Attempts %@)", [response valueForKey:CCParamRemainingAttempts]];
  98.         }else if([response valueForKey:CCParamRemainingAttempts].integerValue == 1){
  99.             message = @"Please enter password. (Last Attempt)";
  100.         }else{
  101.             message = @"Please enter password.";
  102.         }
  103.     }
  104. }
  105. -(void)updateFailed:(NSString *)error {
  106.     //TMS update failed. Check error returned.
  107.     NSLog(@"TMS update failed - %@", error);
  108.    
  109. }
  110.  
  111. -(void)updateFinished:(CCParameters *)response{
  112.     //TMS update completed. We're ready to connect to the PINpad.
  113.     NSLog(@"TMS update completed at %@", [response valueForKey:CCParamTmsUpdateUtc]);
  114.     if([[response valueForKey:CCParamResult] isEqualToString:CCValueFalse]){
  115.         [self updateFailed:[response valueForKey:CCParamError]];
  116.     }
  117. }
  118.  
  119. #pragma mark PinPadConnectionDelegate
  120. -(void)deviceUpdate:(CCParameters *)response {
  121.     DeviceStatus *deviceStatus = [ChipDnaMobileSerializer deserializeDeviceStatus:[response valueForKey:CCParamDeviceStatusUpdate]];
  122.    
  123.     NSLog(@"Device Update: %@", [DeviceStatus getDeviceStatusString:deviceStatus.deviceStatus]);
  124.     if(deviceStatus.availablityError){
  125.         NSLog(@"Availablility Error: %@", deviceStatus.availablityError);
  126.         if(deviceStatus.errorInformation.count > 0){
  127.             NSLog(@"Error Information:");
  128.             for (NSString *key in deviceStatus.errorInformation.allKeys) {
  129.                 NSLog(@"%@ : %@", key, [deviceStatus.errorInformation objectForKey:key]);
  130.             }
  131.         }
  132.     }
  133. }
  134.  
  135. -(void)configurationUpdate:(CCParameters *)response {
  136.     NSLog(@"Configuration update: %@", [response valueForKey:CCParamConfigurationUpdate]);
  137. }
  138.  
  139. -(void)connectAndConfigureFinished:(CCParameters *)response{
  140.     if([[response valueForKey:CCParamResult] isEqualToString:CCValueTrue]){
  141.         //Configuration has completed successfully and we are ready to perform transactions.
  142.         NSLog( @"Ready for transactions");
  143.     }else{
  144.         //Configuration of the PINpad has failed. Check error code.
  145.         NSLog(@"Failed to initialize PINpad - %@", [response valueForKey:CCParamError]);
  146.     }
  147. }
  148.  
  149.  
  150. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement