Przejdź do głównej zawartości

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).

reasonZnaczenieCo zrobić
DEVICE_UNSUPPORTEDTa 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_CONFIGUREDPortfel nie jest włączony dla Twojego punktu płatności.Skontaktuj się z Paymentic, żeby go włączyć.
CONFIG_FETCH_FAILEDNie udało się pobrać konfiguracji portfela (problem sieciowy albo awaria po stronie Paymentic).Przejściowe. Ukryj przycisk, spróbuj przy kolejnym wczytaniu.
FRAME_LOAD_FAILEDHostowana 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