You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Form集成Google Pay API遇支付风险错误及配置疑问

问题

在Xamarin.Forms中调用Google Pay支付时,始终抛出错误:

Payment Failed. this transaction may be risky. for your safety it can't be completed at this time.

代码可正常唤起Google Pay应用,但无法完成支付。同时疑问:是否需要在Google Pay API控制台进行相关配置?

以下是Android端的实现代码:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    int gpay_requestCode = 123;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());
        MessagingCenter.Subscribe<string>(this, "PayViaGooglePay", (value) =>
        {
            PayViaGooglePay();
        });
    }
    private void PayViaGooglePay()
    {
        if (IsGooglePayInstalled())
        {
            
            string GOOGLE_PAY_PACKAGE_NAME = "com.google.android.apps.nbu.paisa.user";
            int GOOGLE_PAY_REQUEST_CODE = 123;
            
            Uri uri =
                new Uri.Builder()
                    .Scheme("upi")
                    .Authority("pay")
                   .AppendQueryParameter("pa", "9725258448@okbizaxis")
                   .AppendQueryParameter("pn", "Gurukrupa")
                   .AppendQueryParameter("mc", "5812")
                   .AppendQueryParameter("tr", "123456789")
                   .AppendQueryParameter("tn", "test")
                   .AppendQueryParameter("am", "1")
                   .AppendQueryParameter("cu", "INR")
                    .Build();
            Intent intent = new Intent(Intent.ActionView);
            intent.SetData(uri);
            intent.SetPackage(GOOGLE_PAY_PACKAGE_NAME);
            StartActivityForResult(intent, GOOGLE_PAY_REQUEST_CODE);

        }
    }

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        if (requestCode == gpay_requestCode)
        {
            if (data != null)
            {
                string response = data.GetStringExtra("response");
                string[] resArray = response.Split("&");

                string txnId = resArray[0].Split("=")[1].ToString();

                string responseCode = resArray[1].Split("=")[1].ToString();

                string status = resArray[2].Split("=")[1].ToString();

                string txnRef = resArray[3].Split("=")[1].ToString();

                if (status == "SUCCESS")
                {
                    Toast.MakeText(this, "Payment Success", ToastLength.Long).Show();
                }
                else
                {
                    Toast.MakeText(this, "Payment Failed", ToastLength.Long).Show();
                }
            }
            else
            {
                Toast.MakeText(this, "Payment Failed", ToastLength.Long).Show();
            }
        }
    }

    private bool IsGooglePayInstalled()
    {
        PackageManager pm = this.PackageManager;
        bool installed = false;
        try
        {
            pm.GetPackageInfo("com.google.android.apps.nbu.paisa.user", PackageInfoFlags.Activities);
            installed = true;
        }
        catch (PackageManager.NameNotFoundException e)
        {
            Toast.MakeText(this, "Google Pay Is Not Installed", ToastLength.Long).Show();
        }
        return installed;
    }
}

解决方案与建议

1. Google Pay API控制台配置要求

是的,必须完成相关配置才能正式使用支付能力:

  • 在Google Pay Console注册应用,绑定应用包名和签名证书指纹,确保Google识别应用为合法支付发起主体。
  • 测试阶段可使用Google提供的测试商户ID与参数,但正式上线前必须完成商户资质认证与配置。

2. 支付参数合规性修正

当前参数存在触发风险检测的问题,需调整:

  • 交易参考号(tr参数):当前使用固定值123456789,Google Pay会判定重复交易为风险操作,必须每次支付生成唯一不重复的交易ID。
  • 商户类别码(mc参数):确认5812与实际商户资质匹配,不匹配会触发拦截。
  • 收款人账号(pa参数):确认9725258448@okbizaxis是已完成Google Pay商户认证的合法账号,未认证的个人/测试账号在正式环境会被限制。

3. 测试与正式环境区分

  • 开发测试阶段启用Google Pay测试模式,使用官方提供的测试UPI地址与参数,避免触发真实风险检测。
  • 正式环境需确保所有参数符合UPI和Google Pay规范,包括商户认证、交易参数合法性等。

4. 错误处理优化

当前仅显示通用失败提示,建议解析返回的responseCode获取详细错误信息,不同错误码对应不同问题(风险拦截、参数错误、商户未认证等),可快速定位问题。

内容的提问来源于stack exchange,提问作者Kirti Zare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:35:25