Obsłuż wynik i dostępność portfeli
Na tej stronie odbierzesz wynik płatności Google Pay lub Apple Pay i zdecydujesz, kiedy pokazać przyciski portfeli.
Zdarzenia instancji
Płatności portfelami raportują wynik przez zdarzenia instancji. Tokenizacja karty (tokenize())
zwraca wynik bezpośrednio i nie korzysta z tych zdarzeń.
paymentic.on('complete', (data) => {
// data.pointId
// data.token nieprzezroczysta referencja tokenu
// data.jwt podpisany JWT — TO wysyłasz do backendu
// data.maskedCard np. "**** **** **** 1111" ("" gdy portfel nie ujawnił numeru)
// data.cardBrand 'VISA' | 'MASTERCARD' | 'AMEX' | 'DISCOVER' | null
// data.expiresIn 60
});
paymentic.on('error', (data) => {
// data.code stabilny kod SdkErrorCode
// data.error komunikat dla człowieka
});
paymentic.on('cancel', (data) => {
// data.method 'GOOGLE_PAY' | 'APPLE_PAY' — klient zamknął arkusz
});
on() zwraca instancję (łańcuchowanie), off(event, handler) usuwa handler, a destroy() usuwa
wszystkie. Zarejestruj handlery przed zamontowaniem przycisków, żeby nie przegapić wczesnej
płatności.
Po zdarzeniu complete wyślij data.jwt do swojego backendu w ciągu 60 sekund razem z danymi
przeglądarki. Backend realizuje płatność przez POST .../transactions/{transactionId}/cards
z tokenType: SDK_GOOGLE_PAY albo SDK_APPLE_PAY; cardHolder nie jest wtedy wymagany.
Zob. Zrealizuj płatność tokenem. Kody z data.code
znajdziesz w Błędy i rozwiązywanie problemów.
Sprawdź dostępność
Dwa poziomy sprawdzeń:
// Tylko możliwości urządzenia/przeglądarki, bez zapytania do Paymentic. Użyj, żeby
// zdecydować, czy w ogóle rezerwować miejsce na przyciski portfeli.
await PaymenticCard.isGooglePaySupported(); // boolean
await PaymenticCard.isApplePaySupported(); // boolean
// Pełne sprawdzenie: możliwości urządzenia ORAZ portfel włączony dla Twojego punktu.
await paymentic.isGooglePayAvailable(); // { available, reason? }
await paymentic.isApplePayAvailable(); // { available, reason? }
mountGooglePay i mountApplePay zwracają ten sam kształt { available, reason? }. Nigdy nie
odrzucają promise'a z powodu niedostępności portfela. Odrzucają tylko przy błędach integracji:
nieznany kontener (CONTAINER_NOT_FOUND) albo brak danych płatności (INVALID_CONFIG).
reason | Znaczenie | Co zrobić |
|---|---|---|
DEVICE_UNSUPPORTED | Ta przeglądarka lub urządzenie nie może zapłacić portfelem. Apple Pay wymaga też HTTPS i zweryfikowanej domeny; Google Pay wymaga karty spełniającej metody uwierzytelnienia punktu. | Ukryj przycisk. |
NOT_CONFIGURED | Portfel nie jest włączony dla Twojego punktu płatności. | Skontaktuj się z Paymentic, żeby go włączyć. |
CONFIG_FETCH_FAILED | Nie udało się pobrać konfiguracji portfela (problem sieciowy albo awaria po stronie Paymentic). | Przejściowe. Ukryj przycisk, spróbuj przy kolejnym wczytaniu. |
FRAME_LOAD_FAILED | Hostowana ramka Google Pay nie zainicjalizowała się: Twoja strona blokuje osadzanie cards.paymentic.com (CSP frame-src), odmawia funkcji payment (Permissions-Policy) albo Paymentic był nieosiągalny. | Popraw politykę; w pozostałych przypadkach przejściowe. |
Każdy wynik „niedostępne" jest też raportowany raz przez logger z podpowiedzią, która warstwa
blokuje portfel. Na produkcji kieruj logger do swojego monitoringu zamiast do konsoli.
Co dalej
- Zrealizuj płatność tokenem
- Content Security Policy, jeśli widzisz
FRAME_LOAD_FAILED