Google Pay(Tez)集成到我的支付网关? (机器人)

问题描述 投票:1回答:1

注意:我知道它还没有适用于iOS,我也不是在寻找Xamarin.Forms(显然)。

当我意识到没有可用于与Google Pay(Tez)集成的指南时,我一直试图将Xamarin API集成到我的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最新版本与v 4.0以上的所有API版本
android xamarin xamarin.android google-pay google-tez
1个回答
2
投票

Google Pay (not 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-based):

要将交易信息传递给“Tez”,您需要定义一个包含所有商家信息,交易金额等的URI ...此URI基于统一付款接​​口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"));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.