TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | Commercial |
ReleasedLast Release | Mar 2016 |
Maintained by Alok Jha.
Note : This repository gives dynamic framework which is supported on iOS 8.0+ only. If you need to support iOS 7.0 also then go to this repository to use static library approach.
Go to Repository release section and download the GetSimpl.framework.zip file from the latest release and unarchive it to get the latest framework file.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
// smp + YourMerchantID, like; smp55d72761ec60ytbnk97414182
<string>smpYourMerchantID</string>
</array>
</dict>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>simplApp</string>
</array>
//Objective-C
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation: (id)annotation
{ if ([[GSCallBackHandler sharedInstance] canHandleURL:url]) {
return [[GSCallBackHandler sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation] ;
}
return YES;
}
//Swift
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
{
if GSCallBackHandler.sharedInstance.canHandleURL(url) {
return GSCallBackHandler.sharedInstance.application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
return true
}
//Objective-C
[GSManager enableSandBoxEnvironment:YES]
//Swift
GSManager.enableSandBoxEnvironment(true)
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
This is needed to circumvent the App Store Submission bug which requires before submission to AppStore, iOS framework binaries must be stripped off back from simulator slices. There is radar: Xcode 6.1.1 & 6.2: iOS frameworks containing simulator slices can't be submitted to the App Store and a long discussion around it on Realm#1163 and Carthage#188
//Objective-C
#import <GetSimpl/GetSimpl.h>
//Swift
import GetSimpl
//Objective-C
[GSManager initializeWithMerchantID@:@"Your merchant id"];
//Swift
GSManager.initializeWithMerchantID("Your merchant id")
//Objective-C
GSUser *user = [[GSUser alloc] initWithPhoneNumber:@"user mobile number" email:@"user email"];
[[GSManager sharedManager] checkApprovalForUser:user onCompletion:^(BOOL approved, BOOL isFirstTransactionOfUser, NSString *buttonText ,NSError *error) {
}]
//Swift
let user : GSUser = GSUser(phoneNumber :"user mobile number" email:@"user email")
GSManager.sharedManager.checkApprovalForUser(user){(approved:Bool,isFirstTransactionOfUser:Bool,buttonText : String?,error:NSError?)
}
Bool approved : If GSUser is pre-approved or not
Bool isFirstTransactionOfUser : If user has already done transactions previously or not
String/NSString buttonText : The text to display on Simpl button. If GSUser is pre-approved,this will contain a value specific to merchant with default value of "Buy Now, Pay Later". Will be nil if GSUser is not pre-approved.
NSError error : Error if any
If the user is approved and merchant should show Simpl button and if the user is not an approved user,do not show the Simpl button.
//Objective-C
GSUser *user = [[GSUser alloc] initWithHashedPhoneNumber:@"hashed value of user phone number"];
user.extraParams = @{@"wallet_balance_in_paise" : @30000,@"transaction_amount_in_paise" : @20000};
[[GSManager sharedManager] checkApprovalForUser:user onCompletion:^(BOOL approved, BOOL isFirstTransactionOfUser, NSString *buttonText ,NSError *error) {
}]
//Swift
let user = GSUser(hashedPhoneNumber: "hashed value of user phone number")
user.extraParams = ["wallet_balance_in_paise" : 30000,"transaction_amount_in_paise" : 20000]
GSManager.sharedManager.checkApprovalForUser(user){(approved:Bool,isFirstTransactionOfUser:Bool,buttonText : String?,error:NSError?)
}
extraParams -> Extra properties of GSUser to be set as Key-Value pairs.Example of some keys are transaction_amount_in_paise, wallet_balance_in_paise,failed_transaction_bank_name,user_location,theatre_location,member_since, signed_in , etc.
This property has been provided so that merchants can provide additional parameters for real-time approval without upgrading the SDK.
If merchant is using hashedPhoneNumber to check for pre-approval then the above keys will be used for realtime approval of users provided merchant has realtime configuration enabled on server side.
//Objective-C
/// Button background color. Defaults to Simpl branding color
@property (nonatomic, strong) UIColor *buttonColor;
/// Button border color. Defaults to Black Color with 10% alpha
@property (nonatomic, strong) UIColor *buttonBorderColor;
/// Title text of button. Defaults to "Buy Now, Pay Later"
@property (nonatomic, copy) NSString *titleText;
/// Title Color of Button. Defaults to White color
@property (nonatomic, strong) UIColor *titleColor;
/// Font of button
@property (nonatomic, strong) UIFont *titleFont;
/// Text color of "Powered by Simpl" text. Defaults to R94 G107 B125 A1
@property (nonatomic, strong) UIColor *poweredByTextColor;
/// Separator line color. Defaults to Black Color with 8% alpha
@property (nonatomic, strong) UIColor *separatorColor;
//Objective-C
GSUser *user = [[GSUser alloc] initWithPhoneNumber:@"user mobile number" email:@"user email"];
GSTransaction *transaction = [[GSTransaction alloc] initWithUser:user amountInPaise:500];
[ [GSManager sharedManager] authorizeTransaction:transaction onCompletion:^(NSDictionary * jsonResponse, NSError * error) {
}];
//Swift
let user : GSUser = GSUser(phoneNumber :"user mobile number" email :@"user email")
let transaction = GSTransaction(user: user, amountInPaise: 500)
GSManager.sharedManager.authorizeTransaction(transaction) { (jsonResponse : NSDictionary?, error:NSError?) -> Void in
}
Phone number of GSUser must be set before making authorizeTransaction call. Once you have the transaction_token, pass it over to your server which in turn can pass the transaction details to Simpl.