Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@adyen/react-native
Advanced tools
Wrapps Adyen Checkout SDKs for iOS and Android for convinient use on React Native.
This project is currently under development. Timelines and scope are still to be defined.
Adyen React Native provides you with the building blocks to create a checkout experience for your shoppers, allowing them to pay using the payment method of their choice.
You can integrate with Adyen React Native in two ways:
We strongly encourage you to contribute to our repository. Find out more in our contribution guidelines
Drop-in and Components require a client key, that should be provided in the Configuration
.
Add @adyen/react-native
to your react-native project.
$ yarn add @adyen/react-native
pod install
AppDelegate.m
@import adyen_react_native;
...
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [RedirectComponentProxy proccessURL:url];
}
AdyenDropInService
to manifest:<service android:name="com.adyenreactnativesdk.component.dropin.AdyenDropInService" />
rootProject.ext.adyenRectNativeRedirectScheme
to your App's manifests.
To do so, add folowing to your App's build.gradle defaultConfig
defaultConfig {
...
manifestPlaceholders = [redirectScheme: rootProject.ext.adyenRectNativeRedirectScheme]
}
intent-filter
to your Checkout activity:<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="${applicationId}" android:scheme="${redirectScheme}" />
</intent-filter>
DropInLauncher
. This will improve responsiveness of DropIn and standalone native components:@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AdyenDropInComponent.setDropInLauncher(this);
}
onNewIntent
:@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
ActionHandler.Companion.handle(intent);
}
onActivityResult
:@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
AdyenGooglePayComponent.handleActivityResult(requestCode, resultCode, data);
}
For general understanding of how prebuilt UI components of Adyen work you can follow our documentation.
Example of configuration properties:
const configuration = {
environment: 'test', // When you're ready to accept live payments, change the value to one of our live environments.
clientKey: '{YOUR_CLIENT_KEY}',
countryCode: 'NL',
amount: { currency: 'EUR', value: 1000 }, // Value in minor units
reference: 'React Native', // The reference to uniquely identify a payment. Can be send from your backend
shopperReference: 'Checkout Shopper', // Your reference to uniquely identify this shopper
returnUrl: 'myapp://', // Custom URL scheme of your iOS app. This value is overridden for Android by `AdyenCheckout`. Can be send from your backend
};
To use @adyen/react-native
you can use our helper component AdyenCheckout
and helper functions from useAdyenCheckout
with standalone component:
import { useAdyenCheckout } from '@adyen/react-native';
const MyChekoutView = () => {
const { start } = useAdyenCheckout();
return (
<Button
title="Open DropIn"
onPress={() => { start('dropIn'); }} />
);
};
import { AdyenCheckout } from '@adyen/react-native';
<AdyenCheckout
config={configuration}
paymentMethods={paymentMethods}
onSubmit={didSubmit}
onProvide={didProvide}
onFail={didFail}
onComplete={didComplete} >
<MyChekoutView/>
</AdyenCheckout>
Or use @adyen/react-native
you can use our helper component AdyenCheckout
with AdyenCheckoutContext.Consumer
directly:
import {
AdyenCheckout,
AdyenCheckoutContext,
} from '@adyen/react-native';
<AdyenCheckout
config={configuration}
paymentMethods={paymentMethods}
onSubmit={didSubmit}
onProvide={didProvide}
onFail={didFail}
onComplete={didComplete} >
<AdyenCheckoutContext.Consumer>
{({ start }) => (
<Button
title="Open DropIn"
onPress={() => { start('dropIn'); }}
/>
)}
</AdyenCheckoutContext.Consumer>
</AdyenCheckout>
Or manage native events manually by
import { NativeModules } from 'react-native';
const { AdyenDropIn } = NativeModules;
<Button
title="Checkout"
onPress={() => {
const eventEmitter = new NativeEventEmitter(AdyenDropIn);
this.didSubmitListener = eventEmitter.addListener('PAYMENT_SUBMIT_EVENT', onSubmit);
this.didProvideListener = eventEmitter.addListener('PAYMENT_PROVIDE_DETAILS_EVENT', onProvide);
this.didCompleteListener = eventEmitter.addListener('PAYMENT_COMPLETED_EVENT', onComplete);
this.didFailListener = eventEmitter.addListener('PAYMENT_FAILED_EVENT', onFail);
AdyenDropIn.open(paymentMethods, configuration);
}}
/>
:exclamation: Native components only handling actions after payment was started(nativeComponent.open) and before it was hidden(nativeComponent.hide) Handling of actions on its own is not supported
Some payment methods require additional action from the shopper such as: to scan a QR code, to authenticate a payment with 3D Secure, or to log in to their bank's website to complete the payment. To handle these additional front-end actions, use nativeComponent.handle(action)
from onSubmit
callback.
const handleSubmit = (payload, nativeComponent) => {
server.makePayment(payload)
.then((result) => {
if (result.action) {
nativeComponent.handle(result.action);
} else {
// process result
}
});
};
<AdyenCheckout
...
onSubmit={ handleSubmit }
>
...
</AdyenCheckout>
Or call .handle(action)
on a Native Module you are working with:
import { NativeModules } from 'react-native';
const { AdyenDropIn } = NativeModules;
AdyenDropIn.handle(action);
:construction: ** Adyen Docs documentation in progress**
If you have a feature request, or spotted a bug or a technical problem, create a GitHub issue. For other questions, contact our support team.
MIT license. For more information, see the LICENSE file.
FAQs
Wraps Adyen Checkout Drop-In and Components for iOS and Android for convenient use with React Native
The npm package @adyen/react-native receives a total of 2,968 weekly downloads. As such, @adyen/react-native popularity was classified as popular.
We found that @adyen/react-native demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.