uniapp移动端调起支付宝报错 alipay-easysdk-php-2.0.0 {"errmsg":"requestpayment"} 怎么解决?

我在uniapp移动端调用支付宝支付时遇到错误,返回信息是:alipay-easysdk-php-2.0.0 {“errmsg”:“requestpayment”}。请问这个报错是什么原因导致的?该如何解决?已经检查过密钥配置和参数传递都没问题,但一直报这个错误。

2 回复

检查支付宝配置,确保AppID、私钥正确。检查订单参数,金额、商品描述等是否合法。确认用户手机已安装支付宝且版本支持。


在UniApp中调用支付宝支付出现 alipay-easysdk-php-2.0.0 报错 {"errmsg":"requestpayment"},通常是由于客户端与服务器端参数传递或配置问题导致的。以下是排查步骤和解决方案:

1. 检查服务器端参数是否正确

  • 确保使用支付宝官方SDK生成支付参数(如 orderString)。
  • 验证参数完整性:app_idmethodcharsetsign_typesigntimestampversionbiz_content(包含订单信息)等。
  • 示例PHP代码(生成支付参数)
    use Alipay\EasySDK\Kernel\Factory;
    use Alipay\EasySDK\Payment\App\Models\AlipayTradeAppPayResponse;
    
    Factory::setOptions($config); // 配置支付宝参数
    $result = Factory::payment()->app()->pay('订单标题', '唯一订单号', '金额', '回调URL');
    if ($result->code == '10000') {
        echo $result->body; // 返回orderString给客户端
    } else {
        echo "生成支付参数失败:" . $result->msg;
    }
    

2. 确认UniApp客户端调用方式

  • 使用 uni.requestPayment() 方法,并正确传递 orderString
  • 示例UniApp代码
    uni.requestPayment({
      provider: 'alipay',
      orderInfo: '从服务器获取的orderString', // 确保是完整的字符串
      success: (res) => console.log('支付成功', res),
      fail: (err) => console.error('支付失败', err)
    });
    

3. 常见错误原因

  • orderString格式错误:必须是支付宝SDK生成的完整字符串,不能缺失或格式错误。
  • 签名验证失败:检查支付宝密钥(RSA2)、应用ID(APPID)配置是否正确。
  • 网络或权限问题:确保服务器能正常访问支付宝网关,应用已审核通过并具备支付权限。

4. 调试建议

  • 在服务器端打印生成的 orderString,在支付宝验签工具中验证其有效性。
  • 检查UniApp项目manifest.json中是否正确配置了支付宝AppID。

通过逐步检查参数、签名及客户端调用,通常能解决此问题。如果仍报错,查看支付宝开放平台日志或联系支付宝技术支持。

回到顶部