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

Android UPI Intent调用Google Pay支付时好时坏,无Google Pay商户ID是否影响?

UPI Intent支付Google Pay时断时续的问题分析与解决

问题描述

我使用一款支持UPI支付Intent和二维码生成的库开发支付功能,目前PhonePe的Intent和二维码支付均能稳定成功,但Google Pay的Intent支付却时好时坏。收款方为商家UPI ID,商家仅持有PhonePe和PayTM的商户ID,未注册Google Pay商户ID,想确认是否是该原因导致的问题。

实现代码

MainActivity.java

btn1.setOnClickListener(view -> {
    try {
        UPI upi = UPI.getInstance();
        Intent payIntent = upi.getPaymentIntent(UPI_ID, NAME, "1", "INR", "Test", "", MERCHANT_CODE, UPI.ALL_APPS);
        launcher.launch(payIntent);
    }
    catch (Exception e) {
        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
    }
});
btn2.setOnClickListener(view -> {
    getSupportFragmentManager().beginTransaction().add(new QRFragment(), "QR").commit();
});

QRFragment.java

UPI upi = UPI.getInstance();
try {
    Bitmap bitmap = upi.getQR(UPI_ID, NAME, "1", "INR", "Test", "", MERCHANT_CODE, 512);
    img = view.findViewById(R.id.img);
    img.setImageBitmap(bitmap);
}
catch (Exception e) {
    e.printStackTrace();
}

原因分析

  • 核心原因:未注册Google Pay商户ID
    Google Pay对商户发起的UPI Intent支付有严格的商户身份校验机制。如果收款方UPI ID对应的商家未在Google Pay完成商户入驻并绑定商户ID,Google Pay会随机拦截部分支付请求,导致支付时断时续。而PhonePe、PayTM对自家商户ID的校验逻辑更宽松,只要UPI ID合法即可稳定完成支付。
  • 补充:二维码支付(用户主动扫码)通常不受此校验限制,但Intent支付是主动唤起Google Pay并传递商户信息,会触发更严格的后台校验。

解决方案

  1. 完成Google Pay商户入驻
    前往Google Pay商户平台完成注册,获取官方商户ID后,将支付请求中的MERCHANT_CODE替换为Google Pay提供的商户ID,确保参数与后台配置一致,这是彻底解决问题的方案。
  2. 临时调整支付参数
    如果暂时无法完成入驻,可尝试将MERCHANT_CODE设为空字符串(需测试兼容性),或修改Intent唤起方式为仅指定Google Pay(而非UPI.ALL_APPS),部分场景下可降低拦截概率,但无法保证100%稳定。
  3. 完善错误处理逻辑
    在Intent回调中捕获Google Pay返回的错误码,针对支付失败的情况给用户明确提示(如“当前支付方式不稳定,请切换至PhonePe或PayTM”),提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:55:07