【问题标题】:Google Pay(Tez) Integration into my payment gateway ? (Android)谷歌支付(Tez)集成到我的支付网关? (安卓)
【发布时间】:2018-12-06 08:55:52
【问题描述】:

注意:我知道它还不适用于 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 中使用了一些替代品?
  • 有没有为我错过的Xamarin 应用程序集成 Google pay(Tez) API 的指南?
  • Xamarin.Android 中尚未添加 Google pay(Tez) 集成吗?
  • 还是我当前的配置有问题?即 VS17 Pro 版本 15.6.7Xamarin 版本 4.9.0.753Xamarin.Android 版本 8.2.0.16 Android SDK 最新,所有 API 版本高于 v 4.0

【问题讨论】:

  • 您是否正在尝试集成 Tez 或 Google Pay,因为您询问的是 Google Tez,但通过链接/文档引用了 Google Pay API。如果您在谈论 Tez,您是在寻找通过支付意图、通信 API 还是 Web api 集成 Tez?
  • @SushiHangover Google Tez 的正式名称是 Google Pay 现在这就是我将其称为 Google Pay 的原因。我正在通过支付意图寻找 Tez 集成,顺便问一下,什么是 comm API?
  • 从技术上讲,“Google Pay”和“Google Pay for India”是两个完全不同的东西。就个人而言,Tez 更名是一个非常糟糕的名称选择,因为 Tez 是基于 UPI 的,而 Google Pay/Wallet 不是基于印度的?或不?因为我必须在应用程序中实现多个支付系统...... ??????
  • 查看我更新的答案.... 通信 API 设置为允许商家发送用户已购买商品的消息,例如出租车、酒店、食品、租金/电话/汽车可以发送付款通知、您的付款收据等...这是“Tez”的印度独有功能
  • @SushiHangover 相信我,我一直站在你的立场上,我以前也称它为 Tez,然后人们开始告诉它现在是 google pay。无论如何,我只是想确认 Xamarin.Android 的等效项:IsReadyToPayRequest request = IsReadyToPayRequest.fromJson(GooglePayUtility.GetIsReadyToPayRequest().ToString()); 这尤其是IsReadyToPayRequest.fromJson

标签: android xamarin xamarin.android google-pay google-tez


【解决方案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 for India(基于 UPI Intent):

要将交易信息传递给“Tez”,您需要定义一个 URI,其中包括您的所有商家信息、交易金额等...此 URI 基于统一支付接口UPI 方案(不受控制由 Google 提供,因此您可以参考 UPI 规范了解需要传递的数据)。

回复: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"));
    }
}

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 2014-03-07
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2020-10-02
    相关资源
    最近更新 更多