Android with google wallet

8 Steps to Google Pay on Android

Within our Android Apps we can use the Google Pay API to plugin a convenient way for our users to checkout in our app, without the need for them to enter any of their payment information (after an initial setup). This brings the user a collection of advantages such as:

  • A centralised place to complete all their payments within your apps, just like they are able to do on the web or in stores
  • A streamlined process when completing the checkout stage of a purchase from within your app
  • A feeling of safety whilst paying due to the secure storage of payment information fro Google pay

The Google Pay API for android allows developers to easily integrate a payment method that provides this streamlined, secure and familiar experience for our users.

We all want to make things simpler and better or users, so in this article I want to show you can get Google Pay integrated into your Android Application with 8 individual steps.

Configure payment methods

Before we go ahead and start configuring the class used to handle payments within our app, we need to declare some fundamental data used in the requests that we are going to perform.

We begin by defining a list of accepted cards, this collection can currently include Amex, Discover, Mastercard, JCB and Visa cards.

Next we need to define the accepted authentication methods that can be used for the transaction. The given choice can include the following options:

  • PAN_ONLY — Associated with cards that are stored alongside the Google Account of the current user. The data returned includes a corresponding account number alongside the expiration month and year.
  • CRYPTOGRAM_3DS — Associated with cards that are stored as Android device tokens. The data returned includes a 3DS cryptogram generated on the given device.

Now that we have the above details defined, we can go ahead and prepare this data for use with the Google Pay API. These need to go under the following properties:

  • allowedAuthMethods — Takes the accepted authentication methods that can be used when making payment requests
  • allowedCardNetworks — Takes the declared accepted cards that can be used to make payments

As well as the above we can also optionally declare:

  • allowPrepaidCards — States whether or not pre-paid cards can be used when making payment requests
  • billingAddressRequired — States whether or not a billing address is required to complete the transaction
  • billingAddressParameters — Takes data in the format of the BillingAddressParameters class

Finally, we put all of this together by declaring the accepted payment type as a CARD and pass over the payment parameters that we declared above:

Configure wallet options

Before we instantiate our payment client to handle our payment requests, we need to create an instance of the options used by this client — this is in the form of the WalletOptions class.

Using the builder we can configure two properties to be using by our payment client:

  • environment —The environment to be used when making transactions. This will be set to either ENVIRONMENT_PRODUCTION or ENVIRONMENT_TEST.
  • theme — The theme to be used for the payments widget. This will be set to either THEME_LIGHT or THEME_DARK.

Initialise the Payments Client

Now that we have configured the options for our payments client, we can go ahead an instantiate a new instance of our client ready for use.

Here we pass in our current context and the WalletOptions instance that we built during the last step. At this point we now have a payments client reference within our application that can be triggered when the uses requests to make a payment.

Declare a Google Play Button

Using the assets provided over on the brand guidelines for Google Pay, you need to begin by adding a button to your application that uses one of the provided assets. This provides a way for the user to recognise the Google Pay payment method. Selecting this button will trigger the payment flow that we will look at over the next few sections.

Читайте также:  Freeing space on android

Check if payments is ready for use

Now that we have a payments client, we want to check if the user is able to make payments using the Google Pay API — we may encounter errors when trying to access the API otherwise. So here we want to make sure that the button for Google Pay is not visible until the Google Pay API is ready for use.

We begin by building the request that is to be sent for our isReadyToPay call. Here we pass:

  • apiVersion — The major API version to be used (integer)
  • apiVersionMinor — The minor API version to be used (integer)
  • allowedPaymentMethods — A collection of PaymentMethod instances that declare the supported payment methods of the client.

We can also optionally provide a existingPaymentMethodRequired (boolean) property — setting this property to true will cause isReadyToPay() to return true if the user is ready to pay with at least one of the specified payment methods.

Now that we have these properties built, we can go ahead and pass them to our isReadyToPay() call:

Setup Gateway Configuration

Next we need to setup the relevant gateway details — this gateway is what will receive the encrypted users information to process a given transaction.

  • gateway — Identify for a Google-supported gateway
  • gatewayMerchantId — Unique ID that links the merchant to the given gateway

You’ll notice below that we then bundle this all together (marked with the PAYMENT_GATEWAY identifier) as the tokenizationSpecification argument for use by the Google Pay API.

Prepare transaction information

At this point we need to defined the transaction data that will be presented by the Google Pay widget. We begin with the TransactionInfo, this contains details such as:

  • currencyCode — The currency to be used for the transaction
  • totalPriceStatus — The status of the total price. This will be either NOT_CURRENTLY_KNOWN, ESTIMATED (the price may change based on shipping or tax calculations) or FINAL (the price will never change from the one currently displayed to the user)
  • totalPrice — The total price of the transaction
  • checkoutOption — Decides the behaviour used and text to be shown within the checkout button of the google pay sheet. This can be either DEFAULT (standard behaviour, the user will need to confirm transaction details) or COMPLETE_IMMEDIATE_PURCHASE (when the totalPriceStatus is final, the user will complete the purchase with no further action).

We then need to build the payment request using our transaction information that we just prepared. For this we build a PaymentDataRequest instance and populate the required data:

  • apiVersion — The major API version to be used (integer)
  • apiVersionMinor — The minor API version to be used (integer)
  • merchantInfo — Information regarding the merchant in the form of a MerchantInfo class
  • allowedPaymentMethods — A collection of PaymentMethod instances that declare the supported payment methods of the client.
  • transactionInfo — Information about the transaction in the form of a TransactionInfo class
  • emailRequired — States whether an email address is required to complete the transaction
  • shippingAddressRequired — States whether a shipping address is required to complete the transaction
  • shippingAddressParameters — Information about the shipping address in the form of a ShippingAddressParameters class

Listen for Payments callback

Now that the payment request has been made we need to listen for the result. The result of this request is returned to the calling source via the onActivityResult method with the resultCode that was initially passed in with the request.

Once we have the data back from the request we can make use of the PaymentData class from the Google Pay API to parse the result of the intent — giving us back an instance of this PaymentData class that contains billing information for the transaction.

Here this data is then converted into a JSON format so that it can be passed onto our payment processor. At this point we have carried out all of the required steps and our transaction is ready to be completed.

Conclusion

Hopefully from this quick post you can see just how little steps are required to integrate Google Pay into your Android application. Doing so allows us to implement a streamlined experience that is secure and gives a sense of familiarity to our users. Why not get started with Google Pay in your own Android applications today?

Читайте также:  Android для xiaomi mi max 2

Источник

Android with google wallet

Google Pay
Версия: 2.138.406141160

Последнее обновление программы в шапке: 18.11.2021

Краткое описание:
Удобный и безопасный способ оплаты от Google

  • Google Pay — Это удобный сервис для быстрой оплаты онлайн и в магазинах, Вам больше не нужно постоянно носить с собой кошелек — просто добавьте карту в свой аккаунт, сделать это можно как на сайте, так и в самом приложении
  • В Google Pay вся необходимая информация всегда у Вас под рукой — Например, на главном экране представлены списки недавних покупок и ближайших магазинов, а также сведения о бонусах
  • Не беспокойтесь о безопасности своих данных — Они надежно защищены с помощью новейших технологий, кроме того, при оплате номер вашей карты никуда не передается, вместо него используется специальный зашифрованный номер
  • Более подробная информация о Google Pay есть в Справочном центре

  • Разработчик: Google LLC
  • Требуется Android: 5.0 и выше
  • Русский интерфейс: Да
  • Домашняя страница: https://pay.google.com/intl/ru_ru/about/
  • Google Play: https://play.google.com/store/apps/details?id=com.google.android.apps.walletnfcrel

Сообщение отредактировал iMiKED — 18.11.21, 05:57

Version: 7.0-R188-v14 (718814400)

Скажите пожалуйста, почтовый индекс указывать города или почты или места жительства(улицы)

Сообщение отредактировал BlackPirat95 — 02.01.15, 22:56

Разобрался, я прост заполнял свои данные, так как не знаю как выплачиваются доходы от гугла

Сообщение отредактировал BlackPirat95 — 03.01.15, 20:40

Подскажите,всё ввожу но.
Как блин его настроить??

F.A.Qe:
Страна: United States of America (США).
Город: Сан-Франциско
Улица: Лотон-стрит
Дом:41
Индекс: Сан-Франциско CA «94122» US.
Всё не так замарочно, элементарно и по инструкции

А в адресе почтовом что вводить??
Всё что тут написано нифига не понял,ввожу эти данные и ничерта не работае

Google Pay
версия: 2.111.306893647

Последнее обновление программы в шапке: 06.05.2020

Краткое описание:
Удобный и безопасный способ оплаты от Google

  • Google Pay — Это удобный сервис для быстрой оплаты онлайн и в магазинах, Вам больше не нужно постоянно носить с собой кошелек — просто добавьте карту в свой аккаунт, сделать это можно как на сайте, так и в самом приложении

В Google Pay вся необходимая информация всегда у Вас под рукой — Например, на главном экране представлены списки недавних покупок и ближайших магазинов, а также сведения о бонусах

Не беспокойтесь о безопасности своих данных — Они надежно защищены с помощью новейших технологий, кроме того, при оплате номер вашей карты никуда не передается, вместо него используется специальный зашифрованный номер

Более подробная информация о Google Pay есть в Справочном центре

Источник

Интеграция Google Pay

Меня зовут Игорь, я Android-разработчик в команде Trinity Digital. Сегодня я хочу рассказать о классном инструменте — Google Pay API.

Итак, если в вашем приложении можно совершать покупки, и при этом вы используете не In-app Billing (за процессинг отвечает не Google Play), то скорее всего среди вариантов оплаты у вас есть и “Оплата картой”. А это значит, что вам каждый раз приходится отправлять пользователя вводить данные карты или на красиво сверстанные экраны с картой, или на веб-сайт вашего провайдера платежных сервисов (далее — payment processor). Уже посчитали сколько действий придется совершить пользователю, чтобы оплатить заветный заказ? Ага, а теперь представьте, что он сможет выполнить то же целевое действие всего в два тапа. Мы тоже представили и подумали, а почему бы не дать пользователям такую возможность? Основные условия успеха — продавец быть зарегистрирован в Google и payment processor должен сотрудничать с Google.

Список банков России, которые сотрудничают с Android Pay:

АК Барс Банк
Альфа Банк
БИНБАНК
Промсвязьбанк
ВТБ24
Банк Открытие
МТС Банк
Райффайзен Банк
Рокетбанк
Россельхозбанк
Банк Русский Стандарт
Сбербанк
Тинькофф Банк
Точка
Яндекс Деньги

Как все будет выглядеть для пользователя: он попадает на экран выбора типов оплаты в вашем приложении, нажимает на кнопку “Оплатить через Google ”, выбирает нужную карту или оставляет ту, что указана по-умолчанию, нажимает кнопку подтверждения. Готово!
Помните, что Google Pay API позволяет пользователям выбрать любую карту, привязанную или к аккаунту Google, или добавленную в Google Pay.

Теперь перейдем непосредственно к интеграции.

  1. Верстка
  2. Код
  3. Тестирование
  4. Отправка на ручную проверку
  5. Релиз

1. Верстка

Первое, о чем стоит сказать — предупредите дизайнеров о гайдлайнах. Если кратко по пунктам:

  • на экранах ДО ИЛИ на экране, где будет расположена кнопка “Оплатить через Google” должна быть указана стоимость покупки;
  • дайте пользователям возможность изменять данные заказа, выбирать тип оплаты [, менять адрес];
  • никогда не показывайте данные для оплаты полностью (любые номера, даты и так далее);
  • еще раз — “Оплатить через Google” — именно такая надпись должна быть на вашей кнопке, если делаете приложение с поддержкой русского языка;
  • Google рекомендует использовать стандартные кнопки. Если вы хотите использовать темную тему или вообще кнопку со своим дизайном, то вам стоит написать в тех. поддержку по адресу androidpay-api-support@google.com. Но даже на кастомной кнопке должно быть лого Google и надпись … да, я надеюсь, вы поняли 🙂 ;
  • по ширине ограничений нет, минимальная высота кнопки — 40dp. Если делаете выше/шире, то помните, что текст должен быть отцентрирован.
Читайте также:  Appmgr pro iii андроид

Соблюдение данных пунктов позволит вам быстрее пройти все проверки и попасть в белый список.

2. Код

Чтобы оплата через Google работала, на телефоне пользователя должны быть установлены Google Play Services версии не ниже 11.4. Но не беспокойтесь, есть специальный метод, который подскажет, можно ли провести оплату или же стоит спрятать кнопку.

Для начала добавим нужные зависимости в build.gradle уровня приложения. Перед внедрением проверяйте актуальность версий!

Далее следует обновить AndroidManifest:

Теперь осталось совсем чуть-чуть:

    Создаём PaymentsClient в вашей Activity или в Fragment. Чтобы не захламлять эти классы, можно вынести весь код в методы GooglePaymentUtils, например. Тогда:

Обратите внимание на константы:

WalletConstants.ENVIRONMENT_TEST — пока Google не разрешит выход в боевую среду, вы должны использовать именно её, чтобы самостоятельно протестировать флоу оплаты. Не пугайтесь, когда увидите предупреждение на диалоге Google Pay, что приложение не опознано.
WalletConstants.THEME_LIGHT — светлая тема диалога, также есть темная.

Отлично, у нас есть клиент, теперь мы готовы сделать запрос, можно ли вообще использовать оплату и показывать кнопку.

PAYMENT_METHOD_CARD, PAYMENT_METHOD_TOKENIZED_CARD — говорят, что мы хотим видеть карточки из Google аккаунта пользователя и карточки, привязанные к Android Pay.

Если мы можем показать кнопку, значит, мы должны повесить на нее обработчик нажатий

Тут запомните, что price — это строчка. И самое важное, даже если вы вызываете AutoResolveHelper.resolveTask из фрагмента, то результат все-равно придет в активити (об этом чуть позже) [на момент написания статьи работает именно так, AutoResolveHelper не умеет возвращать результат во фрагмент].

Тут CURRENCY_CODE = “RUB”.
WalletConstants.TOTAL_PRICE_STATUS_FINAL — говорим, что стоимость покупки окончательная и больше изменяться не будет.

Также есть варианты:
WalletConstants.TOTAL_PRICE_STATUS_ESTIMATED — стоимость примерная, и может измениться, например, после уточнения адреса.
WalletConstants.TOTAL_PRICE_STATUS_NOT_CURRENTLY_KNOWN — еще не знаем, какая стоимость.

Не могу сказать, как на практике поведут себя последние две константы, так как не проверял ¯\_(ツ)_/¯.

Остановимся на PaymentMethodTokenizationParameters и его методе setPaymentMethodTokenizationType:

    PAYMENT_METHOD_TOKENIZATION_TYPE_PAYMENT_GATEWAY
    используется только если ваш payment processor в списке:

Adyen
Braintree
PaySafe
Stripe
Vantiv
WorldPay

Тогда вместо .addParameter(«publicKey», TOKENIZATION_PUBLIC_KEY)
вы должны написать .addParameter(«gateway», «yourGateway»)
.addParameter(«gatewayMerchantId», «yourMerchantIdGivenFromYourGateway»)

  • Иначе используется вышеуказанный тип PAYMENT_METHOD_TOKENIZATION_TYPE_DIRECT.
    Для этого вам необходимо запросить у провайдера платежных сервисов публичный ключ и передавать именно его в .addParameter(«publicKey», TOKENIZATION_PUBLIC_KEY)
  • Теперь остается создать запрос.
    .setPhoneNumberRequired — должен ли пользователь ввести номер.
    .setEmailRequired — должен ли пользователь ввести email
    .setShippingAddressRequired — должен ли пользователь выбрать страну. Тут можно ограничить число стран, для которых данная транзакция выполнится.
    .addAllowedPaymentMethods — у нас это WalletConstants.PAYMENT_METHOD_CARD — карты из google аккаунта, WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD — карты, добавленные в Google Pay.

    В CardRequirements мы указываем, что должны работать карточки систем Visa, Mastercard и других (МИР, например)

    Все, мы создали запрос, отправили его через клиента и ждем результат через AutoResolveHelper.

    Как вы помните, результат придет в активити.

    Вот и все, в paymentData у вас будет токен, который следует отдать вашему серверу. Дальнейшая логика зависит от вашего payment processor.

    3. Тестирование

    Ничего сложного, просто проверяете, что установлена константа WalletConstants.ENVIRONMENT_TEST, и проходите весь флоу. Списание денег с карточки производиться не будет, вам будет отдаваться тестовый токен, поэтому payment processor должен отклонить оплату.

    4. Отправка на ручную проверку

    Поздравляю! Вы готовы отправить свой дебаг билд на ручную проверку в Google.
    Несколько советов:

    • Если ваше приложение поддерживает только русский язык, то подготовьте скриншоты с указаниями, куда нажимать.
    • Если есть какая-то специфика в процессе заказа, то подробно опишите.
    • Создайте тестовый аккаунт специально для Google и отправьте прямо с билдом.

    Отправляете билд на androidpay-api-support@google.com и ждете ответа.

    5. Релиз

    Вам сказали, что все хорошо и можно выпускать приложение. Первым делом вас попросят активировать приложение по адресу (с аккаунта продавца (merchant)).

    Далее вас могут попросить прислать PCI Compliance. Эти документы подтверждают, что ваш payment processor соответствует стандартам безопасности по работе с картами. Запрашиваете у него и отправляете в поддержку.

    Как только вы выполнили эти два пункта, вам скажут, что можно поменять WalletConstants.ENVIRONMENT_TEST на WalletConstants.ENVIRONMENT_PRODUCTION. Также может потребоваться поменять TOKENIZATION_PUBLIC_KEY, если вы использовали ключ с тестовой среды вашего payment processor.

    Вот и все, теперь протестируйте реальную оплату и можете выпускать релиз в маркет!

    Источник

    Оцените статью