在“添加付款方式”屏幕上启动 Google Pay

问题描述 投票:0回答:3

我们稍后将在我们的应用程序中实施应用程序内配置。 目前,我希望能够添加一个按钮来启动 Google Pay 应用程序,以允许用户添加付款方式。

我已经看过如何启动 Google Play 的代码。 我希望它是相似的,但具有不同的 URI。

有人可以帮忙吗。

c# android xamarin google-pay
3个回答
0
投票

好吧 - 还没有完全实现,但它确实让我震惊,我只需要启动一个应用程序。 因此,为此我将手机连接到电脑并运行 Android 设备监视器。 在我的手机上启动了 Google Pay,并通过麦子和谷壳进行排序,找到了当前的包名称“com.google.android.apps.walletnfcrel”。

再谷歌一下,我找到了一种测试应用程序是否已安装的方法......

private bool isAppInstalled(String packageName)
{
    var context = Android.App.Application.Context;

    var pm = context.PackageManager;
    bool installed = false;
    try
    {
        pm.GetPackageInfo(packageName, Android.Content.PM.PackageInfoFlags.Activities);
        installed = true;

    }
    catch (Exception e)
    {
        //Handle this nicer
        installed = false;
    }
    return installed;
}

...然后,如果安装了它,我可以按如下方式启动它......

        var googlePayPackageNAme = "com.google.android.apps.walletnfcrel";
        var context = Android.App.Application.Context;
        Intent gpIntent = context.PackageManager.GetLaunchIntentForPackage(googlePayPackageNAme);
        context.StartActivity(gpIntent);

目前我对此感到满意......还有其他事情要做,但我会在稍后尝试实际触发添加付款方式流程。

感谢 SO 上的其他帖子。 希望这对其他人有帮助。


0
投票

我在我们的应用程序中想出了这个解决方案。该应用程序是使用 React Native 构建的,我实现了一个按钮,该按钮调用本机 Java 模块中的方法(如果您想知道为什么我在这里使用 Promise):

NativeModule.java

@ReactMethod
public void jumpToWallet(Promise promise) {
    // Check first if wallet is installed
    String packageName = "com.google.android.apps.walletnfcrel";
    Context appContext = reactContext.getApplicationContext();
    PackageManager pm = appContext.getPackageManager();
    boolean installed = false;
    try {
        pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        installed = true;

    } catch (PackageManager.NameNotFoundException e) {
        promise.reject("WALLET_NOT_FOUND", "Couldn't find wallet");
    }
    if (installed) {
        Intent launchIntent = pm.getLaunchIntentForPackage(packageName);
        if (launchIntent != null) {
            appContext.startActivity(launchIntent);
        } else {
            promise.reject("WALLET_NOT_LAUNCHABLE", "Couldn't launch wallet");
        }
    }
}

0
投票

我按照上面的代码操作,它将我从我的应用程序重定向到 gpay。但这里有一个问题。付款总是失败,提示您已超出付款限额,并告诉您尝试较小的金额。但我尝试过只用 1 美元,这是向印度某人转账的最低限额。 任何人都可以帮忙解决这个错误吗?

© www.soinside.com 2019 - 2024. All rights reserved.