react-native-adyen

React Native bridge for Adyen Swift SDK and Adyen Android SDK

Usage no npm install needed!

<script type="module">
  import reactNativeAdyen from 'https://cdn.skypack.dev/react-native-adyen';
</script>

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]];
             }
       }`

`