diff --git a/Demo/VTDirectDemo/ViewController.m b/Demo/VTDirectDemo/ViewController.m index bad20a8e8..b816f67d2 100755 --- a/Demo/VTDirectDemo/ViewController.m +++ b/Demo/VTDirectDemo/ViewController.m @@ -76,8 +76,8 @@ - (IBAction)checkoutPressed:(UIBarButtonItem *)sender { VTTransactionDetails *transactionDetails = [[VTTransactionDetails alloc] initWithOrderID:[NSString randomWithLength:20] andGrossAmount:[self grossAmountOfItemDetails:self.itemDetails]]; if (customerDetails) { - - VTCardListController *vc = [[VTCardListController alloc] initWithCustomerDetails:customerDetails itemDetails:self.itemDetails transactionDetails:transactionDetails]; + VTAddCardController *vc = [[VTAddCardController alloc] initWithCustomerDetails:customerDetails itemDetails:self.itemDetails transactionDetails:transactionDetails]; + // VTCardListController *vc = [[VTCardListController alloc] initWithCustomerDetails:customerDetails itemDetails:self.itemDetails transactionDetails:transactionDetails]; [vc presentOnViewController:self]; // [[VTCardControllerConfig sharedInstance] setEnableOneClick:YES]; diff --git a/MidtransKit/MidtransKit/VTAddCardController.h b/MidtransKit/MidtransKit/VTAddCardController.h index 828cd272b..84b6cea1c 100755 --- a/MidtransKit/MidtransKit/VTAddCardController.h +++ b/MidtransKit/MidtransKit/VTAddCardController.h @@ -14,10 +14,13 @@ @interface VTAddCardController : VTPaymentController @property (nonatomic, assign) iddelegate; + +- (void)presentOnViewController:(UIViewController *)viewController; + @end @protocol VTAddCardControllerDelegate - (void)viewController:(VTAddCardController *)viewController didRegisterCard:(VTMaskedCreditCard *)registeredCard; -@end \ No newline at end of file +@end diff --git a/MidtransKit/MidtransKit/VTAddCardController.m b/MidtransKit/MidtransKit/VTAddCardController.m index 550f7609a..a5d448ffc 100755 --- a/MidtransKit/MidtransKit/VTAddCardController.m +++ b/MidtransKit/MidtransKit/VTAddCardController.m @@ -20,20 +20,20 @@ #import @interface VTAddCardController () - - @property (strong, nonatomic) IBOutlet VTTextField *cardNumber; - @property (strong, nonatomic) IBOutlet VTTextField *cardExpiryDate; - @property (strong, nonatomic) IBOutlet VTTextField *cardCvv; - @property (strong, nonatomic) IBOutlet UIScrollView *fieldScrollView; - @property (strong, nonatomic) IBOutlet VTCCFrontView *cardFrontView; - @property (strong, nonatomic) IBOutlet UILabel *amountLabel; - @property (strong, nonatomic) IBOutlet UISwitch *saveCardSwitch; - @property (strong, nonatomic) IBOutlet UIView *saveOptionView; - - @end + +@property (strong, nonatomic) IBOutlet VTTextField *cardNumber; +@property (strong, nonatomic) IBOutlet VTTextField *cardExpiryDate; +@property (strong, nonatomic) IBOutlet VTTextField *cardCvv; +@property (strong, nonatomic) IBOutlet UIScrollView *fieldScrollView; +@property (strong, nonatomic) IBOutlet VTCCFrontView *cardFrontView; +@property (strong, nonatomic) IBOutlet UILabel *amountLabel; +@property (strong, nonatomic) IBOutlet UISwitch *saveCardSwitch; +@property (strong, nonatomic) IBOutlet UIView *saveOptionView; + +@end @implementation VTAddCardController - + - (void)viewDidLoad { [super viewDidLoad]; @@ -54,70 +54,80 @@ - (void)viewDidLoad { self.saveOptionView.hidden = YES; } } - + - (void)dealloc { [_cardExpiryDate removeObserver:self forKeyPath:@"text"]; } - + +- (void)presentOnViewController:(UIViewController *)viewController { + UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:self]; + self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(closePressed:)]; + [viewController presentViewController:nvc animated:YES completion:nil]; +} + +- (void)closePressed:(id)sender { + [self dismissViewControllerAnimated:YES completion:nil]; +} + - (void)handleTransactionSuccess:(VTTransactionResult *)result { [super handleTransactionSuccess:result]; [self hideLoadingHud]; } - + - (void)handleTransactionError:(NSError *)error { [super handleTransactionError:error]; [self hideLoadingHud]; } - + - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"text"] && [object isEqual:_cardExpiryDate]) { _cardFrontView.expiryLabel.text = _cardExpiryDate.text; } } - + - (IBAction)textFieldChanged:(id)sender { if ([sender isEqual:_cardNumber]) { _cardFrontView.iconView.image = [self iconWithNumber:_cardNumber.text]; _cardFrontView.numberLabel.text = _cardNumber.text; } } - + - (UIImage *)iconDarkWithNumber:(NSString *)number { switch ([VTCreditCardHelper typeFromString:number]) { case VTCreditCardTypeVisa: - return [UIImage imageNamed:@"VisaDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"VisaDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; case VTCreditCardTypeJCB: - return [UIImage imageNamed:@"JCBDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"JCBDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; case VTCreditCardTypeMasterCard: - return [UIImage imageNamed:@"MasterCardDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"MasterCardDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; case VTCreditCardTypeAmex: - return [UIImage imageNamed:@"AmexDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"AmexDark" inBundle:VTBundle compatibleWithTraitCollection:nil]; default: - return nil; + return nil; } } - + - (UIImage *)iconWithNumber:(NSString *)number { switch ([VTCreditCardHelper typeFromString:number]) { case VTCreditCardTypeVisa: - return [UIImage imageNamed:@"Visa" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"Visa" inBundle:VTBundle compatibleWithTraitCollection:nil]; case VTCreditCardTypeJCB: - return [UIImage imageNamed:@"JCB" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"JCB" inBundle:VTBundle compatibleWithTraitCollection:nil]; case VTCreditCardTypeMasterCard: - return [UIImage imageNamed:@"MasterCard" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"MasterCard" inBundle:VTBundle compatibleWithTraitCollection:nil]; case VTCreditCardTypeAmex: - return [UIImage imageNamed:@"Amex" inBundle:VTBundle compatibleWithTraitCollection:nil]; + return [UIImage imageNamed:@"Amex" inBundle:VTBundle compatibleWithTraitCollection:nil]; default: - return nil; + return nil; } } - + - (IBAction)cvvInfoPressed:(UIButton *)sender { VTCvvInfoController *guide = [[VTCvvInfoController alloc] init]; [self.navigationController presentCustomViewController:guide onViewController:self.navigationController completion:nil]; } - + - (IBAction)registerPressed:(UIButton *)sender { NSString *cardNumber = [_cardNumber.text stringByReplacingOccurrencesOfString:@" " withString:@""]; NSArray *dates = [_cardExpiryDate.text componentsSeparatedByString:@"/"]; @@ -151,7 +161,7 @@ - (IBAction)registerPressed:(UIButton *)sender { } }]; } - + - (void)handleRegisterCreditCardError:(NSError *)error { [self hideLoadingHud]; if (error.code == -20) { @@ -169,9 +179,9 @@ - (void)handleRegisterCreditCardError:(NSError *)error { [alert show]; } } - + #pragma mark - UITextFieldDelegate - + - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ([textField isKindOfClass:[VTTextField class]]) { ((VTTextField *) textField).warning = nil; @@ -198,9 +208,9 @@ - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRang return YES; } } - + #pragma mark - Helper - + - (void)payWithToken:(NSString *)token { VTPaymentCreditCard *paymentDetail = [[VTPaymentCreditCard alloc] initWithFeature:VTCreditCardPaymentFeatureNormal token:token]; paymentDetail.saveToken = _saveCardSwitch.on; @@ -215,5 +225,5 @@ - (void)payWithToken:(NSString *)token { } }]; } - - @end + +@end