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

React Native中使用one-react-native-upi遇类型错误及支付失败求助

解决one-react-native-upi的两个问题:TypeScript类型错误和支付失败

一、修复TypeScript类型错误

错误提示说明onSuccess回调的返回值类型不符合库的要求——库期望回调返回success类型的值,而你的当前函数返回void。

解决方案:

  1. 先确认库的类型定义:在VS Code中按住Ctrl点击initiate方法,查看它的类型声明,明确success类型的具体结构(比如是一个包含status字段的对象,还是布尔值)。
  2. 调整onSuccess函数的返回值,匹配success类型要求。

修改后的代码示例(假设success类型要求返回带status字段的对象):

const onSucess = () => {
  console.log('Success:');
  return { status: 'SUCCESS' }; // 返回符合success类型的结构
};

const onFailure = (e: any) => {
  console.log('Failure:', e);
};

const payNow = () => {
  OneUpi.initiate(
    {
      upiId: 'xxxx@upiID',
      name: 'xxxx',
      note: 'Deposit',
      amount: '10',
      targetPackage: 'com.google.android.apps.nbu.paisa.user',
    },
    onSucess,
    onFailure,
  );
};

如果不确定success类型结构,也可以先尝试返回true(部分库的success回调仅要求返回布尔值),再根据类型提示调整。

二、解决支付失败("No Action Taken")问题

这个错误通常和UPI应用唤起逻辑、参数有效性有关,常见排查方向:

  • 移除targetPackage,使用系统选择器:com.google.android.apps.nbu.paisa.user是Google Pay的包名,但如果设备未安装该版本应用、或包名不匹配,就会唤起失败。可以移除targetPackage字段,让系统弹出所有可用UPI应用供用户选择:

    const payNow = () => {
      OneUpi.initiate(
        {
          upiId: 'xxxx@upiID',
          name: 'xxxx',
          note: 'Deposit',
          amount: '10',
          // 移除targetPackage字段
        },
        onSucess,
        onFailure,
      );
    };
    
  • 验证UPI ID有效性:确保upiId是已激活的合法收款ID(比如xxx@paytm、xxx@okaxis),避免拼写错误或使用未绑定账户的ID。

  • 调整金额格式:部分UPI应用要求金额为带两位小数的字符串,尝试将amount改为'10.00',或者直接传入数字类型10(如果库支持)。

  • 检查应用权限:Android平台需要确保应用拥有查询已安装应用的权限,可在AndroidManifest.xml中添加:

    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
    
  • 更新库版本:尝试将one-react-native-upi升级到最新版本,修复可能存在的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:05:10