# Płatności Google Pay i Apple Pay 0 level # Google Pay ## Wprowadzenie W ramach integracji możliwe jest zainicjalizowanie płatności Google Pay poprzez imoje w ramach widgetu na stronie podsumowania sklepu, bez konieczności przechodzenia na stronę bramki imoje. ## Dane konfiguracyjne Aby zaimplementować widget Google Pay na Twojej stronie postępuj zgodnie z instrukcjami z dokumentacji **[Google Pay API](https://developers.google.com/pay/api/web/guides/tutorial)**. W **[`tokenizationSpecification`](https://developers.google.com/pay/api/web/guides/tutorial#tokenization)** jako `gateway` użyj wartości `imoje`, a jako `gatewayMerchantId` Twojego identyfikatora sklepu w imoje. >UWAGA! Aby uzyskać `merchantName` oraz `merchantId` dla obiektu **[`paymentDataRequest.merchantInfo`](https://developers.google.com/pay/api/web/guides/tutorial#paymentdatarequest)** w ramach środowiska produkcyjnego musisz w pierwszej kolejności uzyskać **[dostęp produkcyjny](https://developers.google.com/pay/api/android/guides/test-and-deploy/request-prod-access)** w ramach Twojego **[Google Pay Business Console](https://pay.google.com/business/console)**. ## Utworzenie transakcji Google Pay w imoje Po poprawnym zainicjalizowaniu widgetu Google Pay otrzymasz zwrotnie obiekt `PaymentMethodData`, który zawierać będzie m.in. obiekt `tokenizationData`. Do utworzenia transakcji Google Pay w imoje będziesz potrzebować wartości z parametru `token` w obiekcie `tokenizationData`, którą musisz przekazać w odpowiednich parametrach. ### Przykład odpowiedzi Google Pay API ```json { "type": "CARD", "description": "Visa••••1234", "info": { "cardNetwork": "VISA", "cardDetails": "1234" }, "tokenizationData": { "type": "PAYMENT_GATEWAY", "token": "examplePaymentMethodToken" } } ``` ### Wykonanie zapytania do imoje Do zapytania tworzącego [transakcję](https://bump.sh/pgw/doc/imoje-api/operation/operation-post-parameter-transaction) musisz dodać obiekt [`wallet`](https://bump.sh/pgw/doc/imoje-api/operation/operation-post-parameter-transaction#operation-post-parameter-transaction-body-application-json-wallet) oraz [`additionalData`](https://bump.sh/pgw/doc/imoje-api/operation/operation-post-parameter-transaction#operation-post-parameter-transaction-body-application-json-additionaldata). ### Przykład BODY zapytania do imoje ```json { "type": "sale", "serviceId": "yourServiceId", "amount": 1000, "currency": "PLN", "orderId": "yourOrderId", "customer": { "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com" }, "successReturnUrl": "https://yourshopname.com/success", "failureReturnUrl": "https://yourshopname.com/failure", "paymentMethod": "wallet", "paymentMethodCode": "gpay", "wallet": { "signature": "signature", "protocolVersion": "protocolVersion", "signedMessage": "signedMessage" }, "additionalData": { "browser": { "ip": "127.0.0.1", "language": "pl-PL", "jsEnabled": true, "timezoneOffset": 100, "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36", "accept": "application/json, text/javascript, */*; q=0.01", "javaEnabled": false, "screenColorDepth": 24, "screenHeight": 1080, "screenWidth": 2560 } } } ``` ### Odpowiedź do zapytania Odpowiedź do zapytania ma standardową formę i zawiera przydatne informacje na temat transakcji. W zależności od wydawcy karty Płatnika, przy transakcji może być wymagana autoryzacja 3DSecure. W takiej sytuacji jeśli zostanie zwrócony obiekt `action` wraz z parametrem `url` należy przekierować Płatnika pod przekazany adres w celu umozliwienia autoryzacji 3DSecure. Po pomyślnej autoryzacji Płatnik zostanie automatycznie przekierowany na stronę w wskazaną w parametrze `successReturnUrl`. Jeśli obiekt `action` nie zostanie zwrócony lub nie będzie zawierał parametru `url` to należy przekierować Płatnika dalej do strony z `successReturnUrl` lub innej wybranej przez Ciebie dla procesu składania zamówienia. # Apple Pay ## Wprowadzenie Integracja pozwala na inicjalizację transakcji imoje w ramach płatności Apple Pay przy wykorzystaniu Apple Pay API bezpośrednio na stronie Twojego sklepu lub w aplikacji mobilnej. ## Pierwsze kroki Przed zintegrowaniem płatności Apple Pay na Twojej stronie internetowej lub w aplikacji mobilnej będziesz potrzebować **[Apple Development Account](https://developer.apple.com/)**. Konieczne jest również złożenie wniosku o przystąpienie do **[Apple Developer Program](https://developer.apple.com/programs/)**. Następnie postępuj zgodnie z wytycznymi w **[dokumentacji Apple Pay](https://developer.apple.com/help/account/)**. ## Konfiguracja W celu prawidłowego działania płatności konieczne jest wykonanie odpowiedniej konfiguracji. Ogólne wytyczne konfiguracji Apple Pay znajdziesz **[tutaj](https://developer.apple.com/help/account/capabilities/configure-apple-pay)**. Wytyczne konfiguracji Apple Pay na stronie internetowej znajdziesz **[tutaj](https://developer.apple.com/help/account/capabilities/configure-apple-pay-on-the-web)**. ## Payment Processing Certificate Jednym z etapów konfiguracji jest utworzenie **[Payment Processing Certificate](https://developer.apple.com/help/account/capabilities/configure-apple-pay#create-a-payment-processing-certificate)**. W tym celu będziesz potrzebować odpowiedni plik CSR, który otrzymasz kontaktując się znami pod adresem kontakt.tech@imoje.pl. Następnie wygenerowany certyfikat (plik **apple_pay.cer**) prześlij do nas na adres kontakt.tech@imoje.pl. ## Integracja ### Integracja w aplikacji mobilnej W celu zintegrowania płatności Apple Pay w Twojej aplikacji mobilnej, postępuj zgodnie z wytycznymi dokumentacji **[Apple Pay](https://developer.apple.com/documentation/passkit/apple-pay)**. ### Integracja na stronie internetowej W celu zintegrowania płatności Apple Pay na Twojej stronie internetowej, postępuj zgodnie z wytycznymi dokumentacji **[Apple Pay on the Web](https://developer.apple.com/documentation/applepayontheweb)**. Zwróć uwagę, że dla dla płatności **[Apple Pay na stronie internetowej](https://developer.apple.com/help/account/capabilities/configure-apple-pay-on-the-web)** konieczne jest również **[zarejestrowanie i walidacja Twojej strony](https://developer.apple.com/help/account/capabilities/configure-apple-pay-on-the-web#register-a-merchant-domain)**, a także utworzenie **[Merchant identity certificate](https://developer.apple.com/help/account/capabilities/configure-apple-pay-on-the-web#create-a-merchant-identity-certificate)**. ## Utworzenie transakcji Apple Pay w imoje W celu utworzenia transakcji Apple Pay w imoje, która obciąży użytą przez Płatnika kartę w ramach Apple Pay musisz wysłać zapytanie tworzące [transakcję](https://bump.sh/pgw/doc/imoje-api/operation/operation-post-parameter-transaction). W BODY zapytania konieczne jest dołączenie obiektu [`additionalData`](https://bump.sh/pgw/doc/imoje-api/operation/operation-post-parameter-transaction#operation-post-parameter-transaction-body-application-json-additionaldata) oraz obiektu [wallet](https://bump.sh/pgw/doc/imoje-api/operation/operation-post-parameter-transaction#operation-post-parameter-transaction-body-application-json-wallet) i w ramach niego obiektu [`paymentData`](https://bump.sh/pgw/doc/imoje-api/operation/operation-post-parameter-transaction#operation-post-parameter-transaction-body-application-json-wallet-paymentdata). Obiekt `paymentData` powinien zawierać wartości otrzymane w **Tokenie Apple Pay**. ### Przykład zawartości Tokena Apple Pay ```json { "version": "EC_v1", "data": "DjI8Ez7nPhVo742aGEzABz/TfxCPt9LSdf2/h+0xIgVJbi3fQqd4lv3ogoTI3SQ7vZrDAWI8g2lbd5sflXBHc0z+wSeybsCcqZB3n1edRFXU7+6DYmdhFFWWCejwUc6XZWmsSaVNEQf+Kc0SeYrj8Eskdapj8bYX/QXxXSPqS4IKSjB+f3O0gUXSq7LK/jA9dl+BbWW0l3gXERU6n5rcYndO5rnjiwNUpnm7EMIMfNU+IPbsubpL82kbL2MdMJB1grel03J4JKld6G0pFSmjR2mF/xBY/yKkADRhoQkVlDRicuKVMpdRXXbIQjw/yRkLv/u8iy1wXI5YmEBB+W4QpPYsuxys94gMPaKhcaEK/OaT099aFrNBezbuLMTcTzbhXOpPwWn9pkAK0eZNOQ==", "signature": "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", "header": { "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZMzlWOx8Xo8pXlOvzYONy+gvUy59ZOeuCov3kzc7fESczZTyvmA9dU9AdVMFaYyfCXlMG5oedi3Wy4yubqfxtg==", "publicKeyHash": "xrJqUFO2jN5edGS8iETkfNXtwqnwSqRUUrQJBysFpZ8=", "transactionId": "aa0b77fbb4f64cd3e5deef65177938b2d836e0d7d93d58000d8d54cfca19ae13" } } ``` ### Przykład BODY zapytania do imoje ```json { "type": "sale", "serviceId": "yourServiceId", "amount": 1000, "currency": "PLN", "orderId": "yourOrderId", "customer": { "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com" }, "successReturnUrl": "https://yourshopname.com/success", "failureReturnUrl": "https://yourshopname.com/failure", "paymentMethod": "wallet", "paymentMethodCode": "applepay", "wallet": { "paymentData": { "version": "version", "data": "data", "signature": "signature", "header": { "ephemeralPublicKey": "ephemeralPublicKey", "publicKeyHash": "publicKeyHash", "transactionId": "transactionId" } } }, "additionalData": { "browser": { "ip": "127.0.0.1", "language": "pl-PL", "jsEnabled": true, "timezoneOffset": 100, "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36", "accept": "application/json, text/javascript, */*; q=0.01", "javaEnabled": false, "screenColorDepth": 24, "screenHeight": 1080, "screenWidth": 2560 } } } ``` ### Odpowiedź do zapytania Odpowiedź do zapytania ma standardową formę i zawiera informacje na temat transakcji. W zależności od wydawcy karty Płatnika, przy transakcji może być wymagana autoryzacja 3DSecure. W takiej sytuacji jeśli zostanie zwrócony obiekt `action` wraz z parametrem `url` należy przekierować Płatnika pod przekazany adres w celu umozliwienia autoryzacji 3DSecure. Po pomyślnej autoryzacji Płatnik zostanie automatycznie przekierowany na stronę w wskazaną w parametrze `successReturnUrl`. Jeśli obiekt `action` nie zostanie zwrócony lub nie będzie zawierał parametru `url` to należy przekierować Płatnika dalej do strony z `successReturnUrl` lub innej wybranej przez Ciebie dla procesu składania zamówienia.