Google Pay (Tez) Интеграция в мой платежный шлюз?(Android) - PullRequest
0 голосов
/ 06 декабря 2018

Примечание: Я знаю, что это еще не доступно для 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

1 Ответ

0 голосов
/ 06 декабря 2018

Google Pay (не Tez):

Package: `Xamarin.GooglePlayServices.Wallet`

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

* вашего приложения.1007 *

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

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

Google Pay for India (на основе UPI Intent):

Чтобы передать информацию о транзакции в «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"));
    }
}
...