A powerful React Native library that provides full Apple Pay integration on iOS and a customizable Apple Pay button. The goal is to offer a unified library for handling multiple wallet-based payment systems, including Google Pay and Samsung Pay, in future versions.
- Apple Pay integration on iOS:
- Customizable Apple Pay button with support for all button types and styles.
- Dynamic shipping options and summary items update during the payment process from the React Native side.
- Localized error handling to validate the shipping address and shipping methods.
- Google Pay integration on Android.
- Samsung Pay integration on Android.
npm install react-native-wallet-payments
# or
yarn add react-native-wallet-payments
cd ios
pod install
- Add the Apple Pay capability to your app in Xcode. Open your project in Xcode, navigate to the Signing & Capabilities tab, and click the + Capability button. Search for Apple Pay and add it to your project.
- Add the Merchant ID to the Apple Pay capability. Press the + button below Merchant IDs and enter your Merchant ID that is registered with Apple Pay in the Apple Developer Portal.
See the Apple Pay documentation for more information.
const { startPayment, confirmPayment, rejectPayment } = useApplePay();
const handleApplePay = async () => {
try {
const paymentRequest = {
merchantId: 'merchant.com.example',
supportedNetworks: ['visa', 'masterCard', 'amex'],
merchantCapabilities: ['3DS'],
countryCode: 'US',
currencyCode: 'USD',
items: [
{
label: 'Item 1',
amount: '10.00',
},
{
label: 'Total',
amount: '10.00',
},
],
shippingMethods: [
{
identifier: 'standard',
label: 'Standard Shipping',
amount: '0.00',
},
{
identifier: 'express',
label: 'Express Shipping',
amount: '5.00',
},
],
requiredShippingContactFields: ['postalAddress', 'email', 'phone'],
};
const paymentResponse = await startPayment(paymentRequest);
// Do any additional processing before confirming the payment
// Confirm the payment to complete the transaction and show a success message on the Payment Sheet
confirmPayment();
} catch (error) {
// Handle errors by showing an error on the Payment Sheet and rejecting the payment
rejectPayment();
}
};
return (
<ApplePayButton
type="buy"
style={{ width: 200, height: 50 }}
cornerRadius={4}
onPress={handleApplePay}
/>
);
Check out the example app for a complete demonstration of the library's features.
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT
Made with create-react-native-library