diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..c730b0a Binary files /dev/null and b/.swiftpm/xcode/package.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/.swiftpm/xcode/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9cc5e45 --- /dev/null +++ b/.swiftpm/xcode/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + CardIO.xcscheme_^#shared#^_ + + orderHint + 1 + + CardIOSDK.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + CardIO + + primary + + + CardIOSDK + + primary + + + + + diff --git a/CardIOSDK.xcodeproj/project.pbxproj b/CardIOSDK.xcodeproj/project.pbxproj index 6638418..40cc04f 100644 --- a/CardIOSDK.xcodeproj/project.pbxproj +++ b/CardIOSDK.xcodeproj/project.pbxproj @@ -3,13 +3,14 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ 32886C3923ED7FDC001CCF33 /* CardIOSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32886C2F23ED7FDC001CCF33 /* CardIOSDK.framework */; }; 32886C3E23ED7FDC001CCF33 /* CardIOSDKTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */; }; - 32886C4023ED7FDC001CCF33 /* CardIOSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 32886C3223ED7FDC001CCF33 /* CardIOSDK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 446DA62F2643F55600DDBD5E /* CardIO.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 446DA62C2643F55600DDBD5E /* CardIO.xcframework */; }; + 446DA6302643F55600DDBD5E /* CardIOSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 446DA62D2643F55600DDBD5E /* CardIOSDK.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -24,11 +25,12 @@ /* Begin PBXFileReference section */ 32886C2F23ED7FDC001CCF33 /* CardIOSDK.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CardIOSDK.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 32886C3223ED7FDC001CCF33 /* CardIOSDK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CardIOSDK.h; sourceTree = ""; }; - 32886C3323ED7FDC001CCF33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 32886C3823ED7FDC001CCF33 /* CardIOSDKTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CardIOSDKTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CardIOSDKTests.m; sourceTree = ""; }; 32886C3F23ED7FDC001CCF33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 446DA62C2643F55600DDBD5E /* CardIO.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = CardIO.xcframework; sourceTree = ""; }; + 446DA62D2643F55600DDBD5E /* CardIOSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CardIOSDK.h; sourceTree = ""; }; + 446DA62E2643F55600DDBD5E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -36,6 +38,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 446DA62F2643F55600DDBD5E /* CardIO.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -53,7 +56,7 @@ 32886C2523ED7FDC001CCF33 = { isa = PBXGroup; children = ( - 32886C3123ED7FDC001CCF33 /* CardIOSDK */, + 446DA62A2643F55600DDBD5E /* Sources */, 32886C3C23ED7FDC001CCF33 /* CardIOSDKTests */, 32886C3023ED7FDC001CCF33 /* Products */, ); @@ -68,22 +71,31 @@ name = Products; sourceTree = ""; }; - 32886C3123ED7FDC001CCF33 /* CardIOSDK */ = { + 32886C3C23ED7FDC001CCF33 /* CardIOSDKTests */ = { isa = PBXGroup; children = ( - 32886C3223ED7FDC001CCF33 /* CardIOSDK.h */, - 32886C3323ED7FDC001CCF33 /* Info.plist */, + 32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */, + 32886C3F23ED7FDC001CCF33 /* Info.plist */, ); - path = CardIOSDK; + path = CardIOSDKTests; sourceTree = ""; }; - 32886C3C23ED7FDC001CCF33 /* CardIOSDKTests */ = { + 446DA62A2643F55600DDBD5E /* Sources */ = { isa = PBXGroup; children = ( - 32886C3D23ED7FDC001CCF33 /* CardIOSDKTests.m */, - 32886C3F23ED7FDC001CCF33 /* Info.plist */, + 446DA62B2643F55600DDBD5E /* CardIOSDK */, ); - path = CardIOSDKTests; + path = Sources; + sourceTree = ""; + }; + 446DA62B2643F55600DDBD5E /* CardIOSDK */ = { + isa = PBXGroup; + children = ( + 446DA62C2643F55600DDBD5E /* CardIO.xcframework */, + 446DA62D2643F55600DDBD5E /* CardIOSDK.h */, + 446DA62E2643F55600DDBD5E /* Info.plist */, + ); + path = CardIOSDK; sourceTree = ""; }; /* End PBXGroup section */ @@ -93,7 +105,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 32886C4023ED7FDC001CCF33 /* CardIOSDK.h in Headers */, + 446DA6302643F55600DDBD5E /* CardIOSDK.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -343,7 +355,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CardIOSDK/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/CardIOSDK/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -351,7 +363,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 5.5.4; + MARKETING_VERSION = 5.5.5; PRODUCT_BUNDLE_IDENTIFIER = com.dkh.io.CardIOSDK; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; @@ -369,7 +381,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CardIOSDK/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/CardIOSDK/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -377,7 +389,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 5.5.4; + MARKETING_VERSION = 5.5.5; PRODUCT_BUNDLE_IDENTIFIER = com.dkh.io.CardIOSDK; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; diff --git a/CardIOSDK.xcodeproj/project.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate b/CardIOSDK.xcodeproj/project.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..3ceb8c1 Binary files /dev/null and b/CardIOSDK.xcodeproj/project.xcworkspace/xcuserdata/eugene.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/CardIOSDK.xcodeproj/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist b/CardIOSDK.xcodeproj/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..14851f1 --- /dev/null +++ b/CardIOSDK.xcodeproj/xcuserdata/eugene.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + CardIOSDK.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..4284c5d --- /dev/null +++ b/Package.swift @@ -0,0 +1,20 @@ +// swift-tools-version:5.3 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "CardIOSDK", + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "CardIOSDK", + targets: ["CardIO"]), + ], + dependencies: [ + + ], + targets: [ + .binaryTarget(name: "CardIO", path: "./Sources/CardIOSDK/CardIO.xcframework") + ] +) diff --git a/Sources/CardIOSDK/CardIO.xcframework/Info.plist b/Sources/CardIOSDK/CardIO.xcframework/Info.plist new file mode 100644 index 0000000..3c02389 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/Info.plist @@ -0,0 +1,42 @@ + + + + + AvailableLibraries + + + LibraryIdentifier + ios-arm64_armv7 + LibraryPath + CardIO.framework + SupportedArchitectures + + arm64 + armv7 + + SupportedPlatform + ios + + + LibraryIdentifier + ios-arm64_i386_x86_64-simulator + LibraryPath + CardIO.framework + SupportedArchitectures + + arm64 + i386 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/CardIO b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/CardIO new file mode 100755 index 0000000..d71c536 Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/CardIO differ diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIO.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIO.h new file mode 100644 index 0000000..db1acec --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIO.h @@ -0,0 +1,14 @@ +// +// CardIO.h +// See the file "LICENSE.md" for the full license governing this code. +// + +// All-in-one header file for card.io sdk. +#import "CardIOCreditCardInfo.h" +#import "CardIODetectionMode.h" +#import "CardIOView.h" +#import "CardIOViewDelegate.h" +#import "CardIOPaymentViewController.h" +#import "CardIOPaymentViewControllerDelegate.h" +#import "CardIOUtilities.h" + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOCreditCardInfo.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOCreditCardInfo.h new file mode 100644 index 0000000..3defaba --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOCreditCardInfo.h @@ -0,0 +1,83 @@ +// +// CardIOCreditCardInfo.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import + +/// CardIOCreditCardType Identifies type of card. +typedef NS_ENUM(NSInteger, CardIOCreditCardType) { + /// The card number does not correspond to any recognizable card type. + CardIOCreditCardTypeUnrecognized = 0, + /// The card number corresponds to multiple card types (e.g., when only a few digits have been entered). + CardIOCreditCardTypeAmbiguous = 1, + /// American Express + CardIOCreditCardTypeAmex = '3', + /// Japan Credit Bureau + CardIOCreditCardTypeJCB = 'J', + /// VISA + CardIOCreditCardTypeVisa = '4', + /// MasterCard + CardIOCreditCardTypeMastercard = '5', + /// Discover Card + CardIOCreditCardTypeDiscover = '6' +}; + + +/// Container for the information about a card. +@interface CardIOCreditCardInfo : NSObject + +/// Card number. +@property(nonatomic, copy, readwrite) NSString *cardNumber; + +/// Card number with all but the last four digits obfuscated. +@property(nonatomic, copy, readonly) NSString *redactedCardNumber; + +/// January == 1 +/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested. +@property(nonatomic, assign, readwrite) NSUInteger expiryMonth; + +/// The full four digit year. +/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested. +@property(nonatomic, assign, readwrite) NSUInteger expiryYear; + +/// Security code (aka CSC, CVV, CVV2, etc.) +/// @note May be nil, if security code was not requested. +@property(nonatomic, copy, readwrite) NSString *cvv; + +/// Postal code. Format is country dependent. +/// @note May be nil, if postal code information was not requested. +@property(nonatomic, copy, readwrite) NSString *postalCode; + +/// Cardholder Name. +/// @note May be nil, if cardholder name was not requested. +@property(nonatomic, copy, readwrite) NSString *cardholderName; + +/// Was the card number scanned (as opposed to entered manually)? +@property(nonatomic, assign, readwrite) BOOL scanned; + +/// The rectified card image; usually 428x270. +@property(nonatomic, strong, readwrite) UIImage *cardImage; + +/// Derived from cardNumber. +/// @note CardIOCreditInfo objects returned by either of the delegate methods +/// userDidProvideCreditCardInfo:inPaymentViewController: +/// or cardIOView:didScanCard: +/// will never return a cardType of CardIOCreditCardTypeAmbiguous. +@property(nonatomic, assign, readonly) CardIOCreditCardType cardType; + +/// Convenience method which returns a card type string suitable for display (e.g. "Visa", "American Express", "JCB", "MasterCard", or "Discover"). +/// Where appropriate, this string will be translated into the language specified. +/// @param cardType The card type. +/// @param languageOrLocale See CardIOPaymentViewController.h for a detailed explanation of languageOrLocale. +/// @return Card type string suitable for display. ++ (NSString *)displayStringForCardType:(CardIOCreditCardType)cardType usingLanguageOrLocale:(NSString *)languageOrLocale; + +/// Returns a 36x25 credit card logo, at a resolution appropriate for the device. +/// @param cardType The card type. +/// @return 36x25 credit card logo. ++ (UIImage *)logoForCardType:(CardIOCreditCardType)cardType; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIODetectionMode.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIODetectionMode.h new file mode 100644 index 0000000..9c2f34b --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIODetectionMode.h @@ -0,0 +1,17 @@ +// +// CardIODetectionMode.h +// See the file "LICENSE.md" for the full license governing this code. +// +// + +#ifndef icc_CardIODetectionMode_h +#define icc_CardIODetectionMode_h + +typedef NS_ENUM(NSInteger, CardIODetectionMode) { + CardIODetectionModeCardImageAndNumber = 0, + CardIODetectionModeCardImageOnly, + CardIODetectionModeAutomatic +}; + +#endif + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewController.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewController.h new file mode 100644 index 0000000..0509c95 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewController.h @@ -0,0 +1,202 @@ +// +// CardIOPaymentViewController.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import "CardIOPaymentViewControllerDelegate.h" +#import "CardIODetectionMode.h" +#import + +/// CardIOPaymentViewController is one of two main entry points into the card.io SDK. +/// @see CardIOView +@interface CardIOPaymentViewController : UINavigationController + +- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled preferredDevicePosition:(AVCaptureDevicePosition)preferredDevicePosition; + +/// Initializer for scanning. +/// If scanning is not supported by the user's device, card.io will offer manual entry. +/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController). +/// @return Properly initialized CardIOPaymentViewController. +- (id)initWithPaymentDelegate:(id)aDelegate; + +/// Initializer for scanning, with extra hooks for controlling whether the camera will +/// be displayed (useful for testing). +/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController). +/// @param scanningEnabled If scanningEnabled is NO, card.io will offer manual entry, +/// regardless of whether scanning is supported by the user's device. +/// @return Properly initialized CardIOPaymentViewController. +- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled; + +/// The preferred language for all strings appearing in the user interface. +/// If not set, or if set to nil, defaults to the device's current language setting. +/// +/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.). +/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es". +/// If card.io does not contain localized strings for a specified language, then it will fall back to American English. +/// +/// If you specify only a language code, and that code matches the device's currently preferred language, +/// then card.io will attempt to use the device's current region as well. +/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB". +/// +/// These localizations are currently included: +/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW. +@property(nonatomic, copy, readwrite) NSString *languageOrLocale; + +/// @see keepStatusBarStyleForCardIO +@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyle; +/// @see navigationBarStyleForCardIO +@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyle; +/// @see navigationBarTintColorForCardIO +@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColor; + +/// Normally, card.io blurs the screen when the app is backgrounded, +/// to obscure card details in the iOS-saved screenshot. +/// If your app already does its own blurring upon backgrounding, +/// you might choose to disable this behavior. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL disableBlurWhenBackgrounding; + +/// Alter the card guide (bracket) color. Opaque colors recommended. +/// Defaults to nil; if nil, will use card.io green. +@property(nonatomic, retain, readwrite) UIColor *guideColor; + +/// If YES, don't have the user confirm the scanned card, just return the results immediately. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL suppressScanConfirmation; + +/// If YES, instead of displaying the image of the scanned card, +/// present the manual entry screen with the scanned card number prefilled. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL suppressScannedCardImage; + +/// After a successful scan, card.io will display an image of the card with +/// the computed card number superimposed. This property controls how long (in seconds) +/// that image will be displayed. +/// Set this to 0.0 to suppress the display entirely. +/// Defaults to 0.1. +@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration; + +/// Mask the card number digits as they are manually entered by the user. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL maskManualEntryDigits; + +/// Set the scan instruction text. If nil, use the default text. Defaults to nil. +/// Use newlines as desired to control the wrapping of text onto multiple lines. +@property(nonatomic, copy, readwrite) NSString *scanInstructions; + +/// Hide the PayPal or card.io logo in the scan view. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo; + +/// A custom view that will be overlaid atop the entire scan view. Defaults to nil. +/// If you set a scanOverlayView, be sure to: +/// +/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled. +/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an +/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate +/// rotation notifications; see CardIOScanningOrientationDidChangeNotification +/// and associated userInfo key documentation below. +/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait. +/// +/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera +/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons. +/// +/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities +@property(nonatomic, retain, readwrite) UIView *scanOverlayView; + +/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number. +/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card. +/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to +/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time. +/// Defaults to CardIODetectionModeCardImageAndNumber. +/// +/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning +/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus +/// hard to calculate accurate focus scores for. +@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode; + +/// Set to NO if you don't need to collect the card expiration. Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL collectExpiry; + +/// Set to NO if you don't need to collect the CVV from the user. Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL collectCVV; + +/// Set to YES if you need to collect the billing postal code. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL collectPostalCode; + +/// Set to YES if the postal code should only collect numeric input. Defaults to NO. Set this if you know the +/// expected country's postal code has only numeric postal +/// codes. +@property(nonatomic, assign, readwrite) BOOL restrictPostalCodeToNumericOnly; + +/// Set to YES if you need to collect the cardholder name. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL collectCardholderName; + +/// Set to NO if you don't want the camera to try to scan the card expiration. +/// Applies only if collectExpiry is also YES. +/// Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL scanExpiry; + +/// Set to YES to show the card.io logo over the camera view instead of the PayPal logo. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL useCardIOLogo; + +/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation. +/// All four orientations are permitted, regardless of any app or viewcontroller constraints. +/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including +/// the UISupportedInterfaceOrientations settings in your app's plist. +/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.) +@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide; + +/// Set to YES to prevent card.io from showing its "Enter Manually" button. Defaults to NO. +/// +/// @note If [CardIOUtilities canReadCardWithCamera] returns false, then if card.io is presented it will +/// automatically display its manual entry screen. +/// Therefore, if you want to prevent users from *ever* seeing card.io's manual entry screen, +/// you should first check [CardIOUtilities canReadCardWithCamera] before initing the view controller. +@property(nonatomic, assign, readwrite) BOOL disableManualEntryButtons; + +/// Access to the delegate. +@property(nonatomic, weak, readwrite) id paymentDelegate; + +/// Name for orientation change notification. +extern NSString * const CardIOScanningOrientationDidChangeNotification; + +/// userInfo key for orientation change notification, to get the current scanning orientation. +/// +/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code: +/// @code +/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation]; +/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe +/// [wrappedOrientation getValue:&scanningOrientation]; +/// // use scanningOrientation... +/// @endcode +extern NSString * const CardIOCurrentScanningOrientation; + +/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations. +/// +/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double). +extern NSString * const CardIOScanningOrientationAnimationDuration; + +@end + +/// Methods with names that do not conflict with Apple's private APIs. +@interface CardIOPaymentViewController (NonConflictingAPINames) + +/// If YES, the status bar's style will be kept as whatever your app has set it to. +/// If NO, the status bar style will be set to the default style. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyleForCardIO; + +/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault; +/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7). +/// Set either or both of these properties if you want to override these defaults. +/// @see navigationBarTintColorForCardIO +@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyleForCardIO; + +/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault; +/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7). +/// Set either or both of these properties if you want to override these defaults. +/// @see navigationBarStyleForCardIO +@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColorForCardIO; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h new file mode 100644 index 0000000..277d63f --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h @@ -0,0 +1,30 @@ +// +// CardIOPaymentViewControllerDelegate.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import + +@class CardIOPaymentViewController; +@class CardIOCreditCardInfo; + +/// The receiver will be notified when the CardIOPaymentViewController flow completes, due to either success or user-cancellation. +/// +/// Exactly one of these delegate methods will be called. +/// +/// Each of them MUST dismiss the CardIOPaymentViewController. +@protocol CardIOPaymentViewControllerDelegate + +@required + +/// This method will be called if the user cancels the scan. You MUST dismiss paymentViewController. +/// @param paymentViewController The active CardIOPaymentViewController. +- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController; + +/// This method will be called when there is a successful scan (or manual entry). You MUST dismiss paymentViewController. +/// @param cardInfo The results of the scan. +/// @param paymentViewController The active CardIOPaymentViewController. +- (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOUtilities.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOUtilities.h new file mode 100644 index 0000000..996f65d --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOUtilities.h @@ -0,0 +1,52 @@ +// +// CardIOUtilities.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import + +@interface CardIOUtilities : NSObject + +/// Please send the output of this method with any technical support requests. +/// @return Human-readable version of this library. ++ (NSString *)libraryVersion; + +/// Determine whether this device supports camera-based card scanning, considering +/// factors such as hardware support and OS version. +/// +/// card.io automatically provides manual entry of cards as a fallback, +/// so it is not typically necessary for your app to check this. +/// +/// @return YES iff the user's device supports camera-based card scanning. ++ (BOOL)canReadCardWithCamera; + +/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested. +/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster. +/// The best time to call preload is when displaying a view from which card.io might be launched; +/// e.g., inside your view controller's viewWillAppear: method. +/// preload works in the background; the call to preload returns immediately. ++ (void)preload; + +/// Returns a doubly Gaussian-blurred screenshot, intended for screenshots when backgrounding. +/// @return Blurred screenshot. ++ (UIImageView *)blurredScreenImageView; + +@end + +/// Methods with names that do not conflict with Apple's private APIs. +@interface CardIOUtilities (NonConflictingAPINames) + +/// Please send the output of this method with any technical support requests. +/// @return Human-readable version of this library. ++ (NSString *)cardIOLibraryVersion; + +/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested. +/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster. +/// The best time to call preload is when displaying a view from which card.io might be launched; +/// e.g., inside your view controller's viewWillAppear: method. +/// preload works in the background; the call to preload returns immediately. ++ (void)preloadCardIO; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOView.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOView.h new file mode 100644 index 0000000..b55ab35 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOView.h @@ -0,0 +1,127 @@ +// +// CardIOView.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import "CardIOViewDelegate.h" +#import "CardIODetectionMode.h" +#import + +/// CardIOView is one of two main entry points into the card.io SDK. +/// @see CardIOPaymentViewController +@interface CardIOView : UIView + + +#pragma mark - Properties you MUST set + +/// Typically, your view controller will set itself as this delegate. +@property(nonatomic, weak, readwrite) id delegate; + + +#pragma mark - Properties you MAY set + +@property(nonatomic, assign, readwrite) AVCaptureDevicePosition preferredDevicePosition; + +/// The preferred language for all strings appearing in the user interface. +/// If not set, or if set to nil, defaults to the device's current language setting. +/// +/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.). +/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es". +/// If card.io does not contain localized strings for a specified language, then it will fall back to American English. +/// +/// If you specify only a language code, and that code matches the device's currently preferred language, +/// then card.io will attempt to use the device's current region as well. +/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB". +/// +/// These localizations are currently included: +/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW. +@property(nonatomic, copy, readwrite) NSString *languageOrLocale; + +/// Alter the card guide (bracket) color. Opaque colors recommended. +/// Defaults to nil; if nil, will use card.io green. +@property(nonatomic, retain, readwrite) UIColor *guideColor; + +/// Set to YES to show the card.io logo over the camera instead of the PayPal logo. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL useCardIOLogo; + +/// Hide the PayPal or card.io logo in the scan view. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo; + +/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation. +/// All four orientations are permitted, regardless of any app or viewcontroller constraints. +/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including +/// the UISupportedInterfaceOrientations settings in your app's plist. +/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.) +@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide; + +/// Set the scan instruction text. If nil, use the default text. Defaults to nil. +/// Use newlines as desired to control the wrapping of text onto multiple lines. +@property(nonatomic, copy, readwrite) NSString *scanInstructions; + +/// A custom view that will be overlaid atop the entire scan view. Defaults to nil. +/// If you set a scanOverlayView, be sure to: +/// +/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled. +/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an +/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate +/// rotation notifications; see CardIOScanningOrientationDidChangeNotification +/// and associated userInfo key documentation below. +/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait. +/// +/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera +/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons. +/// +/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities +@property(nonatomic, retain, readwrite) UIView *scanOverlayView; + +/// Set to NO if you don't want the camera to try to scan the card expiration. +/// Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL scanExpiry; + +/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number. +/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card. +/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to +/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time. +/// Defaults to CardIODetectionModeCardImageAndNumber. +/// +/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning +/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus +/// hard to calculate accurate focus scores for. +@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode; + +/// After a successful scan, the CardIOView will briefly display an image of the card with +/// the computed card number superimposed. This property controls how long (in seconds) +/// that image will be displayed. +/// Set this to 0.0 to suppress the display entirely. +/// Defaults to 1.0. +@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration; + +/// Name for orientation change notification. +extern NSString * const CardIOScanningOrientationDidChangeNotification; + +/// userInfo key for orientation change notification, to get the current scanning orientation. +/// +/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code: +/// @code +/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation]; +/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe +/// [wrappedOrientation getValue:&scanningOrientation]; +/// // use scanningOrientation... +/// @endcode +extern NSString * const CardIOCurrentScanningOrientation; + +/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations. +/// +/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double). +extern NSString * const CardIOScanningOrientationAnimationDuration; + + +#pragma mark - Property you MAY get + +/// The actual camera preview area within the CardIOView. Location is relative to the CardIOView's origin. +/// You might want to use this, for example, when adjusting your view controller's view layout. +@property(nonatomic, assign, readonly) CGRect cameraPreviewFrame; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOViewDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOViewDelegate.h new file mode 100644 index 0000000..c2fbe34 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Headers/CardIOViewDelegate.h @@ -0,0 +1,25 @@ +// +// CardIOViewDelegate.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import + +@class CardIOCreditCardInfo; +@class CardIOView; + +/// The receiver will be notified when the CardIOView completes it work. +@protocol CardIOViewDelegate + +@required + +/// This method will be called when the CardIOView completes its work. +/// It is up to you to hide or remove the CardIOView. +/// At a minimum, you should give the user an opportunity to confirm that the card information was captured correctly. +/// @param cardIOView The active CardIOView. +/// @param cardInfo The results of the scan. +/// @note cardInfo will be nil if exiting due to a problem (e.g., no available camera). +- (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)cardInfo; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Info.plist b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Info.plist new file mode 100644 index 0000000..7f1dc6c Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Info.plist differ diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Modules/module.modulemap b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Modules/module.modulemap new file mode 100644 index 0000000..eda5a50 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_armv7/CardIO.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module CardIO { + umbrella header "CardIO.h" + + export * + module * { export * } +} diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/CardIO b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/CardIO new file mode 100755 index 0000000..9bc40d4 Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/CardIO differ diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIO.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIO.h new file mode 100644 index 0000000..db1acec --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIO.h @@ -0,0 +1,14 @@ +// +// CardIO.h +// See the file "LICENSE.md" for the full license governing this code. +// + +// All-in-one header file for card.io sdk. +#import "CardIOCreditCardInfo.h" +#import "CardIODetectionMode.h" +#import "CardIOView.h" +#import "CardIOViewDelegate.h" +#import "CardIOPaymentViewController.h" +#import "CardIOPaymentViewControllerDelegate.h" +#import "CardIOUtilities.h" + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOCreditCardInfo.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOCreditCardInfo.h new file mode 100644 index 0000000..3defaba --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOCreditCardInfo.h @@ -0,0 +1,83 @@ +// +// CardIOCreditCardInfo.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import + +/// CardIOCreditCardType Identifies type of card. +typedef NS_ENUM(NSInteger, CardIOCreditCardType) { + /// The card number does not correspond to any recognizable card type. + CardIOCreditCardTypeUnrecognized = 0, + /// The card number corresponds to multiple card types (e.g., when only a few digits have been entered). + CardIOCreditCardTypeAmbiguous = 1, + /// American Express + CardIOCreditCardTypeAmex = '3', + /// Japan Credit Bureau + CardIOCreditCardTypeJCB = 'J', + /// VISA + CardIOCreditCardTypeVisa = '4', + /// MasterCard + CardIOCreditCardTypeMastercard = '5', + /// Discover Card + CardIOCreditCardTypeDiscover = '6' +}; + + +/// Container for the information about a card. +@interface CardIOCreditCardInfo : NSObject + +/// Card number. +@property(nonatomic, copy, readwrite) NSString *cardNumber; + +/// Card number with all but the last four digits obfuscated. +@property(nonatomic, copy, readonly) NSString *redactedCardNumber; + +/// January == 1 +/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested. +@property(nonatomic, assign, readwrite) NSUInteger expiryMonth; + +/// The full four digit year. +/// @note expiryMonth & expiryYear may be 0, if expiry information was not requested. +@property(nonatomic, assign, readwrite) NSUInteger expiryYear; + +/// Security code (aka CSC, CVV, CVV2, etc.) +/// @note May be nil, if security code was not requested. +@property(nonatomic, copy, readwrite) NSString *cvv; + +/// Postal code. Format is country dependent. +/// @note May be nil, if postal code information was not requested. +@property(nonatomic, copy, readwrite) NSString *postalCode; + +/// Cardholder Name. +/// @note May be nil, if cardholder name was not requested. +@property(nonatomic, copy, readwrite) NSString *cardholderName; + +/// Was the card number scanned (as opposed to entered manually)? +@property(nonatomic, assign, readwrite) BOOL scanned; + +/// The rectified card image; usually 428x270. +@property(nonatomic, strong, readwrite) UIImage *cardImage; + +/// Derived from cardNumber. +/// @note CardIOCreditInfo objects returned by either of the delegate methods +/// userDidProvideCreditCardInfo:inPaymentViewController: +/// or cardIOView:didScanCard: +/// will never return a cardType of CardIOCreditCardTypeAmbiguous. +@property(nonatomic, assign, readonly) CardIOCreditCardType cardType; + +/// Convenience method which returns a card type string suitable for display (e.g. "Visa", "American Express", "JCB", "MasterCard", or "Discover"). +/// Where appropriate, this string will be translated into the language specified. +/// @param cardType The card type. +/// @param languageOrLocale See CardIOPaymentViewController.h for a detailed explanation of languageOrLocale. +/// @return Card type string suitable for display. ++ (NSString *)displayStringForCardType:(CardIOCreditCardType)cardType usingLanguageOrLocale:(NSString *)languageOrLocale; + +/// Returns a 36x25 credit card logo, at a resolution appropriate for the device. +/// @param cardType The card type. +/// @return 36x25 credit card logo. ++ (UIImage *)logoForCardType:(CardIOCreditCardType)cardType; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIODetectionMode.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIODetectionMode.h new file mode 100644 index 0000000..9c2f34b --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIODetectionMode.h @@ -0,0 +1,17 @@ +// +// CardIODetectionMode.h +// See the file "LICENSE.md" for the full license governing this code. +// +// + +#ifndef icc_CardIODetectionMode_h +#define icc_CardIODetectionMode_h + +typedef NS_ENUM(NSInteger, CardIODetectionMode) { + CardIODetectionModeCardImageAndNumber = 0, + CardIODetectionModeCardImageOnly, + CardIODetectionModeAutomatic +}; + +#endif + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewController.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewController.h new file mode 100644 index 0000000..0509c95 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewController.h @@ -0,0 +1,202 @@ +// +// CardIOPaymentViewController.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import "CardIOPaymentViewControllerDelegate.h" +#import "CardIODetectionMode.h" +#import + +/// CardIOPaymentViewController is one of two main entry points into the card.io SDK. +/// @see CardIOView +@interface CardIOPaymentViewController : UINavigationController + +- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled preferredDevicePosition:(AVCaptureDevicePosition)preferredDevicePosition; + +/// Initializer for scanning. +/// If scanning is not supported by the user's device, card.io will offer manual entry. +/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController). +/// @return Properly initialized CardIOPaymentViewController. +- (id)initWithPaymentDelegate:(id)aDelegate; + +/// Initializer for scanning, with extra hooks for controlling whether the camera will +/// be displayed (useful for testing). +/// @param aDelegate Your CardIOPaymentViewControllerDelegate (typically a UIViewController). +/// @param scanningEnabled If scanningEnabled is NO, card.io will offer manual entry, +/// regardless of whether scanning is supported by the user's device. +/// @return Properly initialized CardIOPaymentViewController. +- (id)initWithPaymentDelegate:(id)aDelegate scanningEnabled:(BOOL)scanningEnabled; + +/// The preferred language for all strings appearing in the user interface. +/// If not set, or if set to nil, defaults to the device's current language setting. +/// +/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.). +/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es". +/// If card.io does not contain localized strings for a specified language, then it will fall back to American English. +/// +/// If you specify only a language code, and that code matches the device's currently preferred language, +/// then card.io will attempt to use the device's current region as well. +/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB". +/// +/// These localizations are currently included: +/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW. +@property(nonatomic, copy, readwrite) NSString *languageOrLocale; + +/// @see keepStatusBarStyleForCardIO +@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyle; +/// @see navigationBarStyleForCardIO +@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyle; +/// @see navigationBarTintColorForCardIO +@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColor; + +/// Normally, card.io blurs the screen when the app is backgrounded, +/// to obscure card details in the iOS-saved screenshot. +/// If your app already does its own blurring upon backgrounding, +/// you might choose to disable this behavior. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL disableBlurWhenBackgrounding; + +/// Alter the card guide (bracket) color. Opaque colors recommended. +/// Defaults to nil; if nil, will use card.io green. +@property(nonatomic, retain, readwrite) UIColor *guideColor; + +/// If YES, don't have the user confirm the scanned card, just return the results immediately. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL suppressScanConfirmation; + +/// If YES, instead of displaying the image of the scanned card, +/// present the manual entry screen with the scanned card number prefilled. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL suppressScannedCardImage; + +/// After a successful scan, card.io will display an image of the card with +/// the computed card number superimposed. This property controls how long (in seconds) +/// that image will be displayed. +/// Set this to 0.0 to suppress the display entirely. +/// Defaults to 0.1. +@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration; + +/// Mask the card number digits as they are manually entered by the user. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL maskManualEntryDigits; + +/// Set the scan instruction text. If nil, use the default text. Defaults to nil. +/// Use newlines as desired to control the wrapping of text onto multiple lines. +@property(nonatomic, copy, readwrite) NSString *scanInstructions; + +/// Hide the PayPal or card.io logo in the scan view. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo; + +/// A custom view that will be overlaid atop the entire scan view. Defaults to nil. +/// If you set a scanOverlayView, be sure to: +/// +/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled. +/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an +/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate +/// rotation notifications; see CardIOScanningOrientationDidChangeNotification +/// and associated userInfo key documentation below. +/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait. +/// +/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera +/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons. +/// +/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities +@property(nonatomic, retain, readwrite) UIView *scanOverlayView; + +/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number. +/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card. +/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to +/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time. +/// Defaults to CardIODetectionModeCardImageAndNumber. +/// +/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning +/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus +/// hard to calculate accurate focus scores for. +@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode; + +/// Set to NO if you don't need to collect the card expiration. Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL collectExpiry; + +/// Set to NO if you don't need to collect the CVV from the user. Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL collectCVV; + +/// Set to YES if you need to collect the billing postal code. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL collectPostalCode; + +/// Set to YES if the postal code should only collect numeric input. Defaults to NO. Set this if you know the +/// expected country's postal code has only numeric postal +/// codes. +@property(nonatomic, assign, readwrite) BOOL restrictPostalCodeToNumericOnly; + +/// Set to YES if you need to collect the cardholder name. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL collectCardholderName; + +/// Set to NO if you don't want the camera to try to scan the card expiration. +/// Applies only if collectExpiry is also YES. +/// Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL scanExpiry; + +/// Set to YES to show the card.io logo over the camera view instead of the PayPal logo. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL useCardIOLogo; + +/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation. +/// All four orientations are permitted, regardless of any app or viewcontroller constraints. +/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including +/// the UISupportedInterfaceOrientations settings in your app's plist. +/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.) +@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide; + +/// Set to YES to prevent card.io from showing its "Enter Manually" button. Defaults to NO. +/// +/// @note If [CardIOUtilities canReadCardWithCamera] returns false, then if card.io is presented it will +/// automatically display its manual entry screen. +/// Therefore, if you want to prevent users from *ever* seeing card.io's manual entry screen, +/// you should first check [CardIOUtilities canReadCardWithCamera] before initing the view controller. +@property(nonatomic, assign, readwrite) BOOL disableManualEntryButtons; + +/// Access to the delegate. +@property(nonatomic, weak, readwrite) id paymentDelegate; + +/// Name for orientation change notification. +extern NSString * const CardIOScanningOrientationDidChangeNotification; + +/// userInfo key for orientation change notification, to get the current scanning orientation. +/// +/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code: +/// @code +/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation]; +/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe +/// [wrappedOrientation getValue:&scanningOrientation]; +/// // use scanningOrientation... +/// @endcode +extern NSString * const CardIOCurrentScanningOrientation; + +/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations. +/// +/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double). +extern NSString * const CardIOScanningOrientationAnimationDuration; + +@end + +/// Methods with names that do not conflict with Apple's private APIs. +@interface CardIOPaymentViewController (NonConflictingAPINames) + +/// If YES, the status bar's style will be kept as whatever your app has set it to. +/// If NO, the status bar style will be set to the default style. +/// Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL keepStatusBarStyleForCardIO; + +/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault; +/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7). +/// Set either or both of these properties if you want to override these defaults. +/// @see navigationBarTintColorForCardIO +@property(nonatomic, assign, readwrite) UIBarStyle navigationBarStyleForCardIO; + +/// The default appearance of the navigation bar is navigationBarStyleForCardIO == UIBarStyleDefault; +/// tintColor == nil (pre-iOS 7), barTintColor == nil (iOS 7). +/// Set either or both of these properties if you want to override these defaults. +/// @see navigationBarStyleForCardIO +@property(nonatomic, retain, readwrite) UIColor *navigationBarTintColorForCardIO; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h new file mode 100644 index 0000000..277d63f --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOPaymentViewControllerDelegate.h @@ -0,0 +1,30 @@ +// +// CardIOPaymentViewControllerDelegate.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import + +@class CardIOPaymentViewController; +@class CardIOCreditCardInfo; + +/// The receiver will be notified when the CardIOPaymentViewController flow completes, due to either success or user-cancellation. +/// +/// Exactly one of these delegate methods will be called. +/// +/// Each of them MUST dismiss the CardIOPaymentViewController. +@protocol CardIOPaymentViewControllerDelegate + +@required + +/// This method will be called if the user cancels the scan. You MUST dismiss paymentViewController. +/// @param paymentViewController The active CardIOPaymentViewController. +- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController; + +/// This method will be called when there is a successful scan (or manual entry). You MUST dismiss paymentViewController. +/// @param cardInfo The results of the scan. +/// @param paymentViewController The active CardIOPaymentViewController. +- (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOUtilities.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOUtilities.h new file mode 100644 index 0000000..996f65d --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOUtilities.h @@ -0,0 +1,52 @@ +// +// CardIOUtilities.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import + +@interface CardIOUtilities : NSObject + +/// Please send the output of this method with any technical support requests. +/// @return Human-readable version of this library. ++ (NSString *)libraryVersion; + +/// Determine whether this device supports camera-based card scanning, considering +/// factors such as hardware support and OS version. +/// +/// card.io automatically provides manual entry of cards as a fallback, +/// so it is not typically necessary for your app to check this. +/// +/// @return YES iff the user's device supports camera-based card scanning. ++ (BOOL)canReadCardWithCamera; + +/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested. +/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster. +/// The best time to call preload is when displaying a view from which card.io might be launched; +/// e.g., inside your view controller's viewWillAppear: method. +/// preload works in the background; the call to preload returns immediately. ++ (void)preload; + +/// Returns a doubly Gaussian-blurred screenshot, intended for screenshots when backgrounding. +/// @return Blurred screenshot. ++ (UIImageView *)blurredScreenImageView; + +@end + +/// Methods with names that do not conflict with Apple's private APIs. +@interface CardIOUtilities (NonConflictingAPINames) + +/// Please send the output of this method with any technical support requests. +/// @return Human-readable version of this library. ++ (NSString *)cardIOLibraryVersion; + +/// The preload method prepares card.io to launch faster. Calling preload is optional but suggested. +/// On an iPhone 5S, for example, preloading makes card.io launch ~400ms faster. +/// The best time to call preload is when displaying a view from which card.io might be launched; +/// e.g., inside your view controller's viewWillAppear: method. +/// preload works in the background; the call to preload returns immediately. ++ (void)preloadCardIO; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOView.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOView.h new file mode 100644 index 0000000..b55ab35 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOView.h @@ -0,0 +1,127 @@ +// +// CardIOView.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import +#import "CardIOViewDelegate.h" +#import "CardIODetectionMode.h" +#import + +/// CardIOView is one of two main entry points into the card.io SDK. +/// @see CardIOPaymentViewController +@interface CardIOView : UIView + + +#pragma mark - Properties you MUST set + +/// Typically, your view controller will set itself as this delegate. +@property(nonatomic, weak, readwrite) id delegate; + + +#pragma mark - Properties you MAY set + +@property(nonatomic, assign, readwrite) AVCaptureDevicePosition preferredDevicePosition; + +/// The preferred language for all strings appearing in the user interface. +/// If not set, or if set to nil, defaults to the device's current language setting. +/// +/// Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.). +/// If card.io does not contain localized strings for a specified locale, then it will fall back to the language. E.g., "es_CO" -> "es". +/// If card.io does not contain localized strings for a specified language, then it will fall back to American English. +/// +/// If you specify only a language code, and that code matches the device's currently preferred language, +/// then card.io will attempt to use the device's current region as well. +/// E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB". +/// +/// These localizations are currently included: +/// ar,da,de,en,en_AU,en_GB,es,es_MX,fi,fr,he,is,it,ja,ko,ms,nb,nl,pl,pt,pt_BR,ru,sv,th,tr,zh-Hans,zh-Hant,zh-Hant_TW. +@property(nonatomic, copy, readwrite) NSString *languageOrLocale; + +/// Alter the card guide (bracket) color. Opaque colors recommended. +/// Defaults to nil; if nil, will use card.io green. +@property(nonatomic, retain, readwrite) UIColor *guideColor; + +/// Set to YES to show the card.io logo over the camera instead of the PayPal logo. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL useCardIOLogo; + +/// Hide the PayPal or card.io logo in the scan view. Defaults to NO. +@property(nonatomic, assign, readwrite) BOOL hideCardIOLogo; + +/// By default, in camera view the card guide and the buttons always rotate to match the device's orientation. +/// All four orientations are permitted, regardless of any app or viewcontroller constraints. +/// If you wish, the card guide and buttons can instead obey standard iOS constraints, including +/// the UISupportedInterfaceOrientations settings in your app's plist. +/// Set to NO to follow standard iOS constraints. Defaults to YES. (Does not affect the manual entry screen.) +@property(nonatomic, assign, readwrite) BOOL allowFreelyRotatingCardGuide; + +/// Set the scan instruction text. If nil, use the default text. Defaults to nil. +/// Use newlines as desired to control the wrapping of text onto multiple lines. +@property(nonatomic, copy, readwrite) NSString *scanInstructions; + +/// A custom view that will be overlaid atop the entire scan view. Defaults to nil. +/// If you set a scanOverlayView, be sure to: +/// +/// * Consider rotation. Be sure to test on the iPad with rotation both enabled and disabled. +/// To make rotation synchronization easier, whenever a scanOverlayView is set, and card.io does an +/// in-place rotation (rotates its UI elements relative to their containers), card.io will generate +/// rotation notifications; see CardIOScanningOrientationDidChangeNotification +/// and associated userInfo key documentation below. +/// As with UIKit, the initial rotation is always UIInterfaceOrientationPortrait. +/// +/// * Be sure to pass touches through to the superview as appropriate. Note that the entire camera +/// preview responds to touches (triggers refocusing). Test the light button and the toolbar buttons. +/// +/// * Minimize animations, redrawing, or any other CPU/GPU/memory intensive activities +@property(nonatomic, retain, readwrite) UIView *scanOverlayView; + +/// Set to NO if you don't want the camera to try to scan the card expiration. +/// Defaults to YES. +@property(nonatomic, assign, readwrite) BOOL scanExpiry; + +/// CardIODetectionModeCardImageAndNumber: the scanner must successfully identify the card number. +/// CardIODetectionModeCardImageOnly: don't scan the card, just detect a credit-card-shaped card. +/// CardIODetectionModeAutomatic: start as CardIODetectionModeCardImageAndNumber, but fall back to +/// CardIODetectionModeCardImageOnly if scanning has not succeeded within a reasonable time. +/// Defaults to CardIODetectionModeCardImageAndNumber. +/// +/// @note Images returned in CardIODetectionModeCardImageOnly mode may be less focused, to accomodate scanning +/// cards that are dominantly white (e.g., the backs of drivers licenses), and thus +/// hard to calculate accurate focus scores for. +@property(nonatomic, assign, readwrite) CardIODetectionMode detectionMode; + +/// After a successful scan, the CardIOView will briefly display an image of the card with +/// the computed card number superimposed. This property controls how long (in seconds) +/// that image will be displayed. +/// Set this to 0.0 to suppress the display entirely. +/// Defaults to 1.0. +@property(nonatomic, assign, readwrite) CGFloat scannedImageDuration; + +/// Name for orientation change notification. +extern NSString * const CardIOScanningOrientationDidChangeNotification; + +/// userInfo key for orientation change notification, to get the current scanning orientation. +/// +/// Returned as an NSValue wrapping a UIDeviceOrientation. Sample extraction code: +/// @code +/// NSValue *wrappedOrientation = notification.userInfo[CardIOCurrentScanningOrientation]; +/// UIDeviceOrientation scanningOrientation = UIDeviceOrientationPortrait; // set a default value just to be safe +/// [wrappedOrientation getValue:&scanningOrientation]; +/// // use scanningOrientation... +/// @endcode +extern NSString * const CardIOCurrentScanningOrientation; + +/// userInfo key for orientation change notification, to get the duration of the card.io rotation animations. +/// +/// Returned as an NSNumber wrapping an NSTimeInterval (i.e. a double). +extern NSString * const CardIOScanningOrientationAnimationDuration; + + +#pragma mark - Property you MAY get + +/// The actual camera preview area within the CardIOView. Location is relative to the CardIOView's origin. +/// You might want to use this, for example, when adjusting your view controller's view layout. +@property(nonatomic, assign, readonly) CGRect cameraPreviewFrame; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOViewDelegate.h b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOViewDelegate.h new file mode 100644 index 0000000..c2fbe34 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Headers/CardIOViewDelegate.h @@ -0,0 +1,25 @@ +// +// CardIOViewDelegate.h +// See the file "LICENSE.md" for the full license governing this code. +// + +#import + +@class CardIOCreditCardInfo; +@class CardIOView; + +/// The receiver will be notified when the CardIOView completes it work. +@protocol CardIOViewDelegate + +@required + +/// This method will be called when the CardIOView completes its work. +/// It is up to you to hide or remove the CardIOView. +/// At a minimum, you should give the user an opportunity to confirm that the card information was captured correctly. +/// @param cardIOView The active CardIOView. +/// @param cardInfo The results of the scan. +/// @note cardInfo will be nil if exiting due to a problem (e.g., no available camera). +- (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)cardInfo; + +@end + diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Info.plist b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Info.plist new file mode 100644 index 0000000..4a1f52a Binary files /dev/null and b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Info.plist differ diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Modules/module.modulemap b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Modules/module.modulemap new file mode 100644 index 0000000..eda5a50 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module CardIO { + umbrella header "CardIO.h" + + export * + module * { export * } +} diff --git a/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/_CodeSignature/CodeResources b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..1e7c199 --- /dev/null +++ b/Sources/CardIOSDK/CardIO.xcframework/ios-arm64_i386_x86_64-simulator/CardIO.framework/_CodeSignature/CodeResources @@ -0,0 +1,237 @@ + + + + + files + + Headers/CardIO.h + + 3eXTstrH/h5t7E7ppxgwWawJ6LM= + + Headers/CardIOCreditCardInfo.h + + DwDiKnrazFcHS26uUuJNTYpQgN0= + + Headers/CardIODetectionMode.h + + O3frO/ZjVgR0galAxcVpT4zhMU4= + + Headers/CardIOPaymentViewController.h + + Ji+vJhnbPD541kWmVy47KQf3qDM= + + Headers/CardIOPaymentViewControllerDelegate.h + + Vaq56qgP65LDTA2w8enzxns0+78= + + Headers/CardIOUtilities.h + + Vb8NrAsSYWXhadG/n1HDbvAQOBc= + + Headers/CardIOView.h + + j6m4gGQKluRwwNanM1sbrxIbSdM= + + Headers/CardIOViewDelegate.h + + zyFHnyWpTU9g3Q3WW1zedKckBco= + + Info.plist + + Fhjo13gaLOf9REEAUs9+Xvox7YE= + + Modules/module.modulemap + + 8g+o/1F6ghz1BUdrphSv3LRj/sc= + + + files2 + + Headers/CardIO.h + + hash + + 3eXTstrH/h5t7E7ppxgwWawJ6LM= + + hash2 + + 1zOZdClNPqdRCU8yMuBDDCM3ME+tGciHe/AFTkI+ALo= + + + Headers/CardIOCreditCardInfo.h + + hash + + DwDiKnrazFcHS26uUuJNTYpQgN0= + + hash2 + + 4eTlQ7lFddRzDvPcyr1JNX5l5guWbvBzhtGL7B1sK4k= + + + Headers/CardIODetectionMode.h + + hash + + O3frO/ZjVgR0galAxcVpT4zhMU4= + + hash2 + + VAjUh/OfCC1yD0nsPe4PhvK/U779O3kiAQTr/q/0y4U= + + + Headers/CardIOPaymentViewController.h + + hash + + Ji+vJhnbPD541kWmVy47KQf3qDM= + + hash2 + + b3ud4gj2Ats6oZwPDctIK9J75QdbX9RRCRZ1pdSbNX8= + + + Headers/CardIOPaymentViewControllerDelegate.h + + hash + + Vaq56qgP65LDTA2w8enzxns0+78= + + hash2 + + n4rEvmqiNzjlrhMhu7M6tbxUAB6pzlB4Q4nS6zhGeAc= + + + Headers/CardIOUtilities.h + + hash + + Vb8NrAsSYWXhadG/n1HDbvAQOBc= + + hash2 + + O6nHdv9fFoKjIqUsuJW/x4iPI+vyfXbRUQqgHQmnUQI= + + + Headers/CardIOView.h + + hash + + j6m4gGQKluRwwNanM1sbrxIbSdM= + + hash2 + + mOQuC56OoO6BFf+guO6Y6T2LO/H45r4tXsm4G/lmDVg= + + + Headers/CardIOViewDelegate.h + + hash + + zyFHnyWpTU9g3Q3WW1zedKckBco= + + hash2 + + 7YQxH961OtpLmLwqIA9ohq5t+glPn0bK6m02W7/YmJA= + + + Modules/module.modulemap + + hash + + 8g+o/1F6ghz1BUdrphSv3LRj/sc= + + hash2 + + RlcK4Xe7/x3QF7iH4YwlpvDBNb0tvxX43aprkD+OyHY= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/CardIOSDK/CardIOSDK.h b/Sources/CardIOSDK/CardIOSDK.h similarity index 100% rename from CardIOSDK/CardIOSDK.h rename to Sources/CardIOSDK/CardIOSDK.h diff --git a/CardIOSDK/Info.plist b/Sources/CardIOSDK/Info.plist similarity index 100% rename from CardIOSDK/Info.plist rename to Sources/CardIOSDK/Info.plist