Möchten Sie Google Pay im Web verwenden, müssen Sie ebenfalls den 3D Secure 2 Prozess via Server-Zu-Server implementieren, sofern Sie sich innerhalb der Europäischen Union befinden.
Das bedeutet insbesondere, dass Sie erforderliche Daten wie das billToCustomer- und billingAddress-JSON übergeben müssen, für welche Sie aber alle erforderlichen Werte direkt von Google Pay beziehen können.
Beispiel, um eine Rechnungsadresse in der Antwort von Google zu erhalten:
const BillingAddressParameters = { "format": "FULL" };
const baseCardPaymentMethod = {
type: 'CARD',
parameters: {
allowedAuthMethods: allowedCardAuthMethods,
allowedCardNetworks: allowedCardNetworks,
billingAddressRequired: true,
billingAddressParameters: BillingAddressParameters
},
};
Beispiel-Objekt, welches Sie von Google erhalten:
{
"apiVersion": 2,
"apiVersionMinor": 0,
"paymentMethodData": {
"description": "Mastercard •••• 8081",
"info": {
"billingAddress": {
"address1": "Teststraße 1",
"address2": "",
"address3": "",
"administrativeArea": "",
"countryCode": "DE",
"locality": "Bamberg",
"name": "Max Mustermann",
"postalCode": "96050",
"sortingCode": ""
},
"cardDetails": "8081",
"cardNetwork": "MASTERCARD"
},
"tokenizationData": {
"token": "examplePaymentMethodToken",
"type": "PAYMENT_GATEWAY"
},
"type": "CARD"
}
}
Das Mapping ist dann für das billingAddress-Objekt:
{
"city": paymentResponse.paymentMethodData.info.billingAddress.locality,
"country": {
"countryA3": convertToA3(paymentResponse.paymentMethodData.info.billingAddress.countryCode)
},
"addressLine1": {
"street": paymentResponse.paymentMethodData.info.billingAddress.address1
},
"postalCode": paymentResponse.paymentMethodData.info.billingAddress.postalCode
}
Und für billToCustomer:
{
"consumer": {
"firstName": getFirstName(paymentResponse.paymentMethodData.info.billingAddress.name),
"lastName": getLastName(paymentResponse.paymentMethodData.info.billingAddress.name),
},
"email": (Nicht im billingAddress enthalten)
}
Zu beachten ist dabei:
- Google gibt den CountryCode im Format A2 zurück, der 3DS-Server der Banken benötigt ihn aber in A3, daher ist eine Funktion zur Konvertierung erforderlich
- Auch Vor- und Nachnamen müssen bestmöglichst separiert werden, sofern Sie aus dem Google-Antwortobjekt bezogen werden sollen.
Es bietet sich daher an, Namen und Ländercodes aus dem Shop zu beziehen, wann immer möglich, um die Implementierung zu erleichtern und Fehler zu vermeiden.