1. Wprowadzenie
Co utworzysz
Po ukończeniu tego ćwiczenia będziesz mieć minimalną działającą aplikację React Native z działającą integracją Google Pay na Androida. Ten projekt pobiera token płatności, który może zostać wysłany do dostawcy usług płatniczych w celu przetworzenia.
Czego się nauczysz
- Instalowanie i konfigurowanie biblioteki Google Pay React Native
- Wyświetlanie przycisku Google Pay i obsługa kliknięć
- Jak poprosić o token płatności w Google Pay
Czego potrzebujesz
- edytor tekstu do edytowania plików JavaScript;
- Środowisko programistyczne React Native skonfigurowane pod kątem Androida.
- W przypadku środowiska produkcyjnego potrzebujesz
merchantIdGoogle Pay. Rejestracja w Konsoli usług Google Pay i Portfela Google zajmuje tylko minutę, więc warto to zrobić od razu.
2. Tworzenie projektu React Native
Tworzenie plików projektu
- Utwórz nowy projekt React Native o nazwie
googlepayrn.npx @react-native-community/cli@latest init googlepayrn
- Zainstaluj bibliotekę Google Pay React Native.
cd googlepayrn npm install @google/react-native-make-payment
- Otwórz plik
App.tsxw wybranym IDE i zastąp jego zawartość tym kodem:import React from 'react'; import { SafeAreaView, StatusBar, StyleSheet, Text, useColorScheme, View, } from 'react-native'; const App = () => { const isDarkMode = useColorScheme() === 'dark'; const backgroundStyle = { backgroundColor: isDarkMode ? '#121212' : '#F3F3F3', }; return ( <SafeAreaView style={backgroundStyle}> <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} backgroundColor={backgroundStyle.backgroundColor} /> <View style={styles.container}> <Text style={styles.title}>Google Pay Codelab</Text> <View id="gpay-container" /> <Text>Transaction info and errors will be logged to the console.</Text> </View> </SafeAreaView> ); }; const styles = StyleSheet.create({ container: { padding: 24, }, title: { fontSize: 24, fontWeight: '600', marginBottom: 24, }, }); export default App;
3. Konfigurowanie Google Pay
Żądanie płatności Google Pay wymaga obiektu żądania. Obiekt zdefiniowany tutaj jako baseGooglePayRequest zawiera minimalne wspólne ustawienia wszystkich żądań. W zależności od zgłoszenia zostaną dodane dodatkowe ustawienia, które omówimy w tym laboratorium.
Dodaj stałe konfiguracji Google Pay do parametru App.tsx:
// This is the base configuration for all Google Pay payment data requests.
const baseGooglePayRequest = {
apiVersion: 2,
apiVersionMinor: 0,
allowedPaymentMethods: [
{
type: 'CARD',
parameters: {
allowedAuthMethods: [
"PAN_ONLY", "CRYPTOGRAM_3DS"
],
allowedCardNetworks: [
"AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"
]
},
tokenizationSpecification: {
type: 'PAYMENT_GATEWAY',
parameters: {
gateway: 'example',
gatewayMerchantId: 'exampleGatewayMerchantId'
}
}
}
]
};
Zasoby
- Dokumentacja API: dokumentacja obiektów żądań interfejsu Google Pay API
- Dokumentacja interfejsu API: więcej informacji o dozwolonych metodach autoryzacji, dozwolonych sieciach kart i specyfikacjach tokenizacji, w tym o prawidłowej wartości bramy, znajdziesz w
PaymentMethod.
4. Wysyłanie prośby o płatność
Gdy użytkownik naciśnie przycisk Google Pay, zostanie utworzone i wyświetlone żądanie płatności.
Dodaj dane do płatności i formy płatności do App.tsx:
const paymentDetails = {
total: {
amount: {
currency: 'USD',
value: '14.95',
},
},
};
const paymentMethods = [
{
supportedMethods: 'google_pay',
data: baseGooglePayRequest,
},
];
5. Dodawanie przycisku Google Pay
Biblioteka react-native-make-payment zawiera natywny komponent przycisku Google Pay.
- Dodaj instrukcję importu u góry pliku
App.tsx:
import { GooglePayButton, GooglePayButtonConstants, PaymentRequest } from '@google/react-native-make-payment';
- Dodaj funkcję obsługi kliknięć w komponencie
App:
const checkCanMakePayment = () => {
const paymentRequest = new PaymentRequest(paymentMethods, paymentDetails);
paymentRequest.canMakePayment().then((canMakePayment) => {
if (canMakePayment) {
paymentRequest.show().then((response) => {
console.log(response);
});
} else {
console.log('Google Pay unavailable');
}
});
};
- Dodaj przycisk i styl do JSX oraz jego stylu:
<GooglePayButton
style={styles.googlepaybutton}
onPress={checkCanMakePayment}
allowedPaymentMethods={baseGooglePayRequest.allowedPaymentMethods}
theme={GooglePayButtonConstants.Themes.Dark}
type={GooglePayButtonConstants.Types.Buy}
radius={4}
/>
googlepaybutton: {
width: 200,
height: 48,
},
App.tsx po dodaniu przycisku i funkcji obsługi:
import React from 'react';
import {
SafeAreaView,
StatusBar,
StyleSheet,
Text,
useColorScheme,
View,
} from 'react-native';
import { GooglePayButton, GooglePayButtonConstants, PaymentRequest } from '@google/react-native-make-payment';
const baseGooglePayRequest = {
apiVersion: 2,
apiVersionMinor: 0,
allowedPaymentMethods: [
{
type: 'CARD',
parameters: {
allowedAuthMethods: [
'PAN_ONLY', 'CRYPTOGRAM_3DS'
],
allowedCardNetworks: [
'AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'
]
},
tokenizationSpecification: {
type: 'PAYMENT_GATEWAY',
parameters: {
gateway: 'example',
gatewayMerchantId: 'exampleGatewayMerchantId'
}
}
}
]
};
const paymentDetails = {
total: {
amount: {
currency: 'USD',
value: '14.95',
},
},
};
const paymentMethods = [
{
supportedMethods: 'google_pay',
data: baseGooglePayRequest,
},
];
const App = () => {
const isDarkMode = useColorScheme() === 'dark';
const backgroundStyle = {
backgroundColor: isDarkMode ? '#121212' : '#F3F3F3',
};
const checkCanMakePayment = () => {
const paymentRequest = new PaymentRequest(paymentMethods, paymentDetails);
paymentRequest.canMakePayment().then((canMakePayment) => {
if (canMakePayment) {
paymentRequest.show().then((response) => {
// Send 'token' to your payment service provider (PSP)
console.log(response);
});
} else {
console.log('Google Pay unavailable');
}
});
};
return (
<SafeAreaView style={backgroundStyle}>
<StatusBar
barStyle={isDarkMode ? 'light-content' : 'dark-content'}
backgroundColor={backgroundStyle.backgroundColor}
/>
<View style={styles.container}>
<Text style={styles.title}>Google Pay Codelab</Text>
<GooglePayButton
style={styles.googlepaybutton}
onPress={checkCanMakePayment}
allowedPaymentMethods={baseGooglePayRequest.allowedPaymentMethods}
theme={GooglePayButtonConstants.Themes.Dark}
type={GooglePayButtonConstants.Types.Buy}
radius={4}
/>
<Text>Transaction info and errors will be logged to the console.</Text>
</View>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
container: {
padding: 24,
},
title: {
fontSize: 24,
fontWeight: '600',
marginBottom: 24,
},
googlepaybutton: {
width: 200,
height: 48,
},
});
export default App;
Wyjaśnienie kodu
paymentDetailsopisuje transakcję, która ma zostać przetworzona.paymentMethodskonfiguruje obsługiwane metody. W przypadku Google Pay użyjgoogle_payzbaseGooglePayRequest.checkCanMakePaymentwyświetla arkusz płatności, gdy jest dostępny, i rejestruje odpowiedź.
6. Podsumowanie
Gratulujemy ukończenia tego ćwiczenia! Wiesz już, jak zintegrować Google Pay API z aplikacją React Native na Androida.
Uruchamianie projektu
Aby uruchomić aplikację, wpisz to polecenie:
npx react-native run-android
Co dalej
Dodatkowe materiały
- Dołącz do rozmowy na kanale#payments w Discordzie
- Obserwuj @GooglePayDevs na X
- Oglądaj filmy związane z Google Pay w YouTube