正在显示 UPI 付款意向,已超出最大限制
UPI payment intent is showing, maximum limit exceeded
我正在尝试实施 UPI 意图,但每当我付款时,它说 google 付款超出最大限制,在 phone pe 中,由于安全问题显示,您无法付款这个银行账户。请帮帮我。这是我的代码。
Uri UPI = Uri.parse("upi://pay").buildUpon()
.appendQueryParameter("pa", "") //rList.get(i).upi_id
.appendQueryParameter("pn", "") //rList.get(i).username
.appendQueryParameter("tn", "TEST") //rList.get(i).paylist_name
.appendQueryParameter("tr", ""+StaticValues.transactionId)
.appendQueryParameter("tid", ""+StaticValues.transactionId)
.appendQueryParameter("am", ""+rList.get(i).payble_amount)
.appendQueryParameter("cu", "INR")
//.appendQueryParameter("orgid", "000000")
//.appendQueryParameter("mode", "04")
.build();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(UPI);
Intent chooser = Intent.createChooser(intent, "Pay with...");
startActivityForResult(chooser, 1);
类似问题 here and the solution seems to be to create a merchant account (business account) and pass the parameters from that account (including merchant id "mc") for payment processing. See UPI specifications by Google here。话虽如此,我只用四个参数 pa、pn、tn 和 am 对其进行了测试,但我生成了一个 QR 码并从 GPay 应用程序扫描,它没有问题。
我的结论是,安全措施仅适用于应用内生成的 UPI 支付 URI,如果我们从 UPI 支付应用扫描,则不会考虑这些额外参数。
如果我们可以生成 QR 码并通过 UPI 应用程序扫描进行支付,那就行得通了。但我不认为我们可以让另一个应用程序扫描我们生成的二维码。
编辑 27-08-2021
我能够成功地向非商家帐户进行 UPI 付款,但我无法进行自动付款验证。如果您想使用此方法,请继续阅读。
限制:
- 付款需要通过交易ID手动验证,在我的例子中,我生成了一个账单号码以供参考。
- 用户必须截取二维码的屏幕截图(或者您可以编写屏幕截图片段)并通过二维码扫描手动支付 -> 从图库或图像源扫描。
- 完全不适合需要自动支付验证的应用。
怎么做:
- 使用以下参数创建二维码:
- pa - 收款人地址(UPI ID)
- pn - 收款人姓名
- am - 支付金额
- tn - 交易单(我在这里设置我的账单号)
- 要求用户截图后通过图库扫描或编写代码将二维码截图保存在设备中。
- 付款后参考交易单手动确认
我知道这甚至不是一个理想的解决方案,但我已经尝试使用注册的商家帐户和简单的用户帐户,并且它适用于这两种情况。除了上述参数外,我还尝试传递我找到的商家帐户参数,但由于某种原因它没有用。如果以后找到原因,我会更新。
我正在尝试实施 UPI 意图,但每当我付款时,它说 google 付款超出最大限制,在 phone pe 中,由于安全问题显示,您无法付款这个银行账户。请帮帮我。这是我的代码。
Uri UPI = Uri.parse("upi://pay").buildUpon()
.appendQueryParameter("pa", "") //rList.get(i).upi_id
.appendQueryParameter("pn", "") //rList.get(i).username
.appendQueryParameter("tn", "TEST") //rList.get(i).paylist_name
.appendQueryParameter("tr", ""+StaticValues.transactionId)
.appendQueryParameter("tid", ""+StaticValues.transactionId)
.appendQueryParameter("am", ""+rList.get(i).payble_amount)
.appendQueryParameter("cu", "INR")
//.appendQueryParameter("orgid", "000000")
//.appendQueryParameter("mode", "04")
.build();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(UPI);
Intent chooser = Intent.createChooser(intent, "Pay with...");
startActivityForResult(chooser, 1);
类似问题 here and the solution seems to be to create a merchant account (business account) and pass the parameters from that account (including merchant id "mc") for payment processing. See UPI specifications by Google here。话虽如此,我只用四个参数 pa、pn、tn 和 am 对其进行了测试,但我生成了一个 QR 码并从 GPay 应用程序扫描,它没有问题。
我的结论是,安全措施仅适用于应用内生成的 UPI 支付 URI,如果我们从 UPI 支付应用扫描,则不会考虑这些额外参数。
如果我们可以生成 QR 码并通过 UPI 应用程序扫描进行支付,那就行得通了。但我不认为我们可以让另一个应用程序扫描我们生成的二维码。
编辑 27-08-2021
我能够成功地向非商家帐户进行 UPI 付款,但我无法进行自动付款验证。如果您想使用此方法,请继续阅读。
限制:
- 付款需要通过交易ID手动验证,在我的例子中,我生成了一个账单号码以供参考。
- 用户必须截取二维码的屏幕截图(或者您可以编写屏幕截图片段)并通过二维码扫描手动支付 -> 从图库或图像源扫描。
- 完全不适合需要自动支付验证的应用。
怎么做:
- 使用以下参数创建二维码:
- pa - 收款人地址(UPI ID)
- pn - 收款人姓名
- am - 支付金额
- tn - 交易单(我在这里设置我的账单号)
- 要求用户截图后通过图库扫描或编写代码将二维码截图保存在设备中。
- 付款后参考交易单手动确认
我知道这甚至不是一个理想的解决方案,但我已经尝试使用注册的商家帐户和简单的用户帐户,并且它适用于这两种情况。除了上述参数外,我还尝试传递我找到的商家帐户参数,但由于某种原因它没有用。如果以后找到原因,我会更新。