代码之家  ›  专栏  ›  技术社区  ›  FreakyAli

谷歌支付(TEZ)集成到我的支付网关?(Android)

  •  1
  • FreakyAli  · 技术社区  · 6 年前

    注: 我知道它还不能用于iOS,而且我也没有寻找xamarin.forms(显然)。

    一直在尝试整合 Google Pay(Tez) 我的API Xamarin 当我意识到没有指南可用于集成到 沙马林 很好。

    所以,我参观了 Google Pay API 佩奇,似乎有一个可爱的向导 Android(Java) 所以我开始把本地的Android代码转换成 沙马林 . 然后我撞到了一个凸点 PaymentsClient 类在Xamarin中似乎不可用,所以我尝试检查它的名称空间,这样也许我可以理解它是否可用。( Xamarin.Android )但是没有提到这个类的名称空间(我没有注意到)。我只能从它的信息中找到它继承自 com.google.android.gms.common.api.GoogleApi 这实际上毫无帮助。

    查询

    • 我这里是缺包裹了还是有其他的选择 沙马林 ?
    • 有关于集成谷歌支付(TEZ)API的指南吗? 沙马林 我错过的应用程序?
    • 在xamarin.android中是否还没有添加google pay(tez)集成?
    • 还是我当前的配置有问题?即 VS17 Pro 版本 15.6.7 , 沙马林 版本 4.9.0.753 XAMARIN 版本 8.2.0.16 Android SDK最新版本,所有API版本高于4.0版
    1 回复  |  直到 5 年前
        1
  •  2
  •   SushiHangover    6 年前

    谷歌支付(非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()
    );
    

    谷歌为印度付费(基于UPI意向):

    要将交易信息传递给“TEZ”,您需要定义一个包含所有商户信息、交易金额等的URI…此URI基于统一支付接口 UPI 方案(这不受谷歌控制,因此您需要传递哪些数据,请参阅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"));
        }
    }