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

Flutter中upi_payment_qrcode_generator生成的PhonePe UPI二维码无法识别

解决PhonePe无法识别upi_payment_qrcode_generator生成的二维码问题

可能的原因与解决方案

1. 验证插件生成的UPI URI格式

PhonePe对UPI URI的格式要求比其他APP更严格,先确认插件生成的URI是否符合规范:

  • 查看插件源码中的URI生成逻辑,或临时添加代码打印出生成的原始URI字符串。
  • 手动构造标准UPI URI进行对比测试:
    String standardUpiUri = 'upi://pay?pa=73975XXXXX@ybl&pn=Mr%20John&am=10.00&tn=Testing';
    
    用通用二维码生成工具(如qr_flutter插件)生成该URI的二维码,若PhonePe能识别,说明插件生成的URI存在格式问题。

2. 调整收款人名称的格式

PhonePe可能不支持收款人名称中的空格或未编码的特殊字符,尝试:

  • 将payeeName改为无空格的字符串,比如MrJohn
  • 或者传入URL编码后的名称,比如Mr%20John
    修改后的代码示例:
    UPIDetails upiDetails = UPIDetails(
      upiID: '73975XXXXX@ybl',
      payeeName: 'Mr%20John',
      amount: 10.00,
      transactionNote: "Testing",
    );
    

3. 确认金额字段的格式

确保金额被生成为标准的两位小数格式,部分应用会拒绝识别整数形式的金额(如10而非10.00)。可以手动确认插件生成的am参数值是否为10.00。

4. 添加PhonePe要求的额外字段

部分场景下PhonePe需要特定字段支持,比如mc(商户代码),即使是个人收款也可尝试添加默认值:

// 若插件支持自定义参数,添加mc字段
UPIDetails upiDetails = UPIDetails(
  upiID: '73975XXXXX@ybl',
  payeeName: 'Mr John',
  amount: 10.00,
  transactionNote: "Testing",
  customParams: {'mc': '0000'}, // 填入默认商户代码或你的实际商户代码
);

5. 改用通用二维码插件生成

如果以上方法无效,可绕过upi_payment_qrcode_generator,手动构造UPI URI后用通用二维码插件生成:

import 'package:qr_flutter/qr_flutter.dart';

String upiUri = 'upi://pay?pa=73975XXXXX@ybl&pn=Mr%20John&am=10.00&tn=Testing';

@override
Widget build(BuildContext context) {
  return Center(
    child: QrImageView(
      data: upiUri,
      size: 170,
      errorCorrectionLevel: QrErrorCorrectLevel.H,
    ),
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:07:34