Интеграция Google Pay (Tez) в мой платежный шлюз? (Android)

Примечание. Я знаю, что он еще не доступен для iOS. Также я не ищу Xamarin.Forms (очевидно).

Пытался интегрировать Google Pay(Tez) API в свое Xamarin приложение, когда я понял, что нет доступных руководств для его интеграции с Xamarin, и это нормально.

Итак, я посетил страницу Google Pay API, на которой, похоже, красивое руководство для Android(Java), поэтому я начал преобразовывать собственный код Android в Xamarin. А затем я наткнулся на бугорок, где PaymentsClient Кажется, что класс недоступен в Xamarin, поэтому я попытался проверить его пространство имен, чтобы, возможно, я мог понять, доступен он или нет (Xamarin.Android). Но нет упоминания о пространстве имен этого класса (я не заметил). Все, что я смог найти в его информации, это то, что он унаследован от com.google.android.gms.common.api.GoogleApi, что на самом деле не помогло.

Запросы

  • Мне здесь не хватает какого-то пакета или есть альтернатива, которая используется в Xamarin?
  • Есть ли руководство по интеграции API Google Pay (Tez) для Xamarin приложений, которые я пропустил?
  • Интеграция с Google Pay (Tez) еще не добавлена ​​в Xamarin.Android?
  • Или что-то не так с моей текущей конфигурацией? т.е. VS17 Pro версия 15.6.7, Xamarin версия 4.9.0.753 и Xamarin.Android версия 8.2.0.16 Последняя версия Android SDK со всеми версиями API выше v 4.0

person FreakyAli    schedule 06.12.2018    source источник
comment
Вы пытаетесь интегрировать Tez или Google Pay, поскольку вы спрашиваете о Google Tez, но ссылаетесь на API Google Pay через ссылки / документы. Если вы говорите о Tez, вы ищете интеграцию с Tez через платежное намерение, коммуникационный API или веб-API?   -  person SushiHangover    schedule 06.12.2018
comment
@SushiHangover Официальное название Google Tez - Google Pay, поэтому я назвал его Google Pay. Я ищу интеграцию Tez через платежное намерение, что, кстати, такое Comm API?   -  person FreakyAli    schedule 06.12.2018
comment
Технически Google Pay и Google Pay для Индии - это две совершенно разные вещи. Лично для меня это действительно плохой выбор для ребрендинга Tez, поскольку Tez основан на UPI, а Google Pay / Wallet - нет, и каждый раз, когда я спрашиваю, находится ли он в Индии? или не? так как мне нужно реализовать несколько платежных систем в приложении ... ????   -  person SushiHangover    schedule 06.12.2018
comment
См. Мой обновленный ответ .... API связи настроен таким образом, чтобы разрешить отправку сообщений от продавцов о том, что пользователь что-то купил, например, такси, отели, еда, уведомления об оплате аренды / телефона / автомобиля, квитанции об оплате и т. Д. .. можно отправить ... это функция Tez только для Индии   -  person SushiHangover    schedule 06.12.2018
comment
@SushiHangover Поверьте мне, я был на вашем месте. Я тоже называл это Tez, а потом люди начали рассказывать, как это теперь Google Pay. В любом случае, я просто хотел подтвердить что-то, что является эквивалентом Xamarin.Android для этого: IsReadyToPayRequest request = IsReadyToPayRequest.fromJson(GooglePayUtility.GetIsReadyToPayRequest().ToString()); это в частности IsReadyToPayRequest.fromJson   -  person FreakyAli    schedule 06.12.2018
comment
Я действительно это проверил, я работаю над этим прямо сейчас, как только я увижу, что это работает, я дам вам знать, а также отмечу ответ!   -  person FreakyAli    schedule 06.12.2018
comment
К вашему сведению: код в этом комментарии основан на Google Pay (не для Индии), а не на Tez.   -  person SushiHangover    schedule 06.12.2018
comment
@SushiHangover О, не волнуйтесь, я знаю, что это для чего-то другого, я имею в виду то же приложение для других стран Google PAY !!   -  person FreakyAli    schedule 06.12.2018


Ответы (1)


Google Pay (не Tez):

Package: `Xamarin.GooglePlayServices.Wallet`

Убедитесь, что в вашем приложении включена обработка кошелька через metadata в манифесте или через MetaDataAttribute вашего приложения:

[Application]
[MetaData(name: "com.google.android.gms.wallet.api.enabled", Value = "true")]

Оттуда идет using Android.Gms.Wallet;, а также настройка и использование PaymentsClient, т. Е.

PaymentsClient paymentsClient = WalletClass.GetPaymentsClient(
        this, 
        new WalletClass.WalletOptions.Builder()
                .SetEnvironment(WalletConstants.EnvironmentTest)
                .Build()
);

Google Pay для Индии (на основе намерений UPI):

Чтобы передать информацию о транзакции в «Tez», вы определяете URI, который включает всю информацию о вашем продавце, сумму транзакции и т. Д. Этот URI основан на схеме UNIFIED PAYMENTS INTERFACE UPI (это не контролируется Google, поэтому вы обратитесь к спецификациям UPI, чтобы узнать, какие данные вам нужно передать).

re: https://www.npci.org.in/sites/all/themes/npcl/images/PDF/UPI_Linking_Specs_ver_1.5.1.pdf

using (var uri = new Android.Net.Uri.Builder()
        .Scheme("upi")
        .Authority("pay")
        .AppendQueryParameter("pa", "your-merchant-vpa@xxx")
        .AppendQueryParameter("pn", "your-merchant-name")
        .AppendQueryParameter("mc", "your-merchant-code")
        .AppendQueryParameter("tr", "your-transaction-ref-id")
        .AppendQueryParameter("tn", "your-transaction-note")
        .AppendQueryParameter("am", "your-order-amount")
        .AppendQueryParameter("cu", "INR")
        .AppendQueryParameter("url", "your-transaction-url")
        .Build())
{
    intent = new Intent(Intent.ActionView);
    intent.SetData(uri);
    intent.SetPackage("com.google.android.apps.nbu.paisa.user");
    StartActivityForResult(intent, 9999);
}

Затем, конечно, вы должны реализовать переопределение для OnActivityResult и обработать результат:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    if (requestCode == 9999)
    {
        Log.Debug("tez result", data.GetStringExtra("Status"));
    }
}
person SushiHangover    schedule 06.12.2018