react-native-adyen
v1.2.7
Published
React Native bridge for Adyen Swift SDK and Adyen Android SDK
Downloads
7
Readme
How to install
npm i react-native-adyen —-save
react-native link
You must then take the following steps for iOS only:
iOS
0. Copy the Adyen folder with the Swift files and the bridging header into your main iOS project
1. Add `pod Adyen` to your Podfile and then run cocoapods to install
2. Follow the steps listed here (https://bohemianpolymorph.wordpress.com/2014/07/11/manually-adding-a-swift-bridging-header/) to create a bridging header
3. import your bridging header into your project's AppDelegate
4. add `PaymentManagerDelegate` to the interface
5. add the following code in your `- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions`
`[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(showCheckout:)
name:@"AFShowCheckout"
object:nil];`
6. define the `showCheckout` function!
`- (void)showCheckout:(NSNotification *)notification{
NSLog(@"-----AppDelegate::ShowCheckout ------- ");
self.paymentManager.paymentDetails = [notification userInfo];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.paymentManager.paymentDetails[@"adyenAppSecretKey"] forKey:@"adyenAppSecretKey"];
[defaults setObject:self.paymentManager.paymentDetails[@"adyenURL"] forKey:@"adyenURL"];
[defaults setObject:self.paymentManager.paymentDetails[@"adyenAuthHeader"] forKey:@"adyenAuthHeader"];
[defaults synchronize];
[[self paymentManager] beginPaymentWithHostViewController:self.window.rootViewController];
}`
7. add the following code at the end of AppDeleate before the "@end"
`#pragma mark -
#pragma mark Payment Manager - Adyen
- (PaymentManager *)paymentManager {
if (_paymentManager) {
return _paymentManager;
}
PaymentManager *paymentManager = [[PaymentManager alloc] init];
[paymentManager setDelegate:self];
_paymentManager = paymentManager;
return paymentManager;
}
- (void)paymentManager:(PaymentManager *)paymentManager didFinishWithResult:(PaymentManagerResult *)result andToken:(NSString*)token{
NSString *resultString = [self alertTitleForPaymentManagerResult:result];
NSMutableDictionary *adyenResult = [NSMutableDictionary dictionary];
[adyenResult setObject: resultString forKey: @"adyenResult"];
[adyenResult setObject: token forKey: @"adyenToken"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"onCheckoutDone" object:nil userInfo:adyenResult];
}
- (NSString *)alertTitleForPaymentManagerResult:(PaymentManagerResult *)result {
switch ([result status]) {
case PaymentManagerResultStatusReceived:
return @"Payment received";
case PaymentManagerResultStatusAuthorised:
return @"Payment authorised";
case PaymentManagerResultStatusRefused:
return @"Payment refused";
case PaymentManagerResultStatusCancelled:
return @"Payment canceled";
case PaymentManagerResultStatusError:
return [NSString stringWithFormat:@"Payment failed with error (%@)", [result error]];
}
}`
`