uni-app 调用 paypal 安卓端无反应无报错信息 ios端可正常支付

发布于 1周前 作者 vueper 来自 Uni-App

uni-app 调用 paypal 安卓端无反应无报错信息 ios端可正常支付

开发环境 版本号 项目创建方式
Mac 12.7.1 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:12.7.1

HBuilderX类型:正式

HBuilderX版本号:3.95

手机系统:Android

手机系统版本号:Android 13

手机厂商:华为

手机机型:华为畅想20se

页面类型:nvue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

### 示例代码:

```javascript
uni.getProvider({  
  service: 'payment',  
  success: (res) => {  
    console.log(res)  
    const paypalChannel = res.providers.find((channel) => {  
      return (channel.id === 'paypal')  
    })  

    if(paypalChannel!==null){  
      console.log("paypalChannel-success")  
      uni.requestPayment({  
        provider: 'paypal',  
        orderInfo: configdata,  
        success: function(res) {  
          console.log(res)  
        },  
        fail(err) {   
          console.log(err)  
        },  
        complete(){  
          bottlecms.hideLoading();  
        }  
      });  

    } else {  
      //不支持paypal  
      console.log("不支持paypal")  
    }  

  }  
});

操作步骤:

  1. 从服务端拉取configdata;
  2. 通过uni.getProvider判断是否支持paypal;
  3. 使用uni.requestPayment()调起支持;

预期结果:

弹出支付窗口,或返回错误信息;

实际结果:

安卓端无任何反应(无报错信息), ios端正常支付成功;

bug描述:

app 调用 paypal 安卓端无反应,也没有任何报错信息,ios端可正常支付。

测试机型:Pixel 4 (android 13)和 华为畅想20se (android 10);


12 回复

请问问题解决了吗?


同样的问题

问题解决了吗?

回复 a***@163.com: 没有,解决不了一点

回复 万能的李大少: 我看你另一个帖子已经调起来paypal了啊,咋解决的?

回复 a***@163.com: 直接引入paypal的h5页面,但是贼low,领导不同意

问题解决了吗哥们?

兄弟解决了吗

没有,最后用的https链接调到浏览器支付的。

returnURL 结尾是 paypalpay 不是 paypal 可以看下是不是写错了

目前 paypal 那边只能配置 https:// 格式的 retrun url,其他格式的都提示无效

在 uni-app 中调用 PayPal 支付时,如果安卓端无反应且无报错信息,而 iOS 端可以正常支付,可能是由于以下原因导致的。以下是一些排查和解决问题的步骤:


1. 检查 PayPal SDK 的集成

  • 确保 PayPal SDK 在安卓端正确集成,并且版本与 iOS 端一致。
  • 检查 manifest.json 中是否配置了正确的 PayPal 相关权限和配置项。
  • 确保在安卓端正确初始化 PayPal SDK。

2. 检查网络环境

  • 安卓设备可能无法访问 PayPal 的服务器,检查设备的网络连接是否正常。
  • 确保设备可以访问 PayPal 的 API 地址(例如 https://api.paypal.com)。

3. 调试日志

  • 在调用 PayPal 支付时,添加调试日志,检查是否有任何错误信息或异常。
  • 使用 console.loguni.showToast 输出关键步骤的信息,确认代码执行到哪一步。

4. 检查 PayPal 配置

  • 确保 PayPal 的 clientIdenvironment(沙盒或生产环境)等配置正确。
  • 检查 PayPal 开发者后台的配置,确保安卓端和 iOS 端的配置一致。

5. 检查设备兼容性

  • 某些安卓设备可能存在兼容性问题,尝试在其他安卓设备上测试。
  • 确保设备的系统版本和浏览器内核支持 PayPal 支付。

6. 检查 uni-app 插件或模块

  • 如果使用的是第三方 uni-app 插件或模块,确保插件在安卓端正常工作。
  • 检查插件的文档,确认是否有安卓端的特殊配置或限制。

7. 尝试使用 PayPal 的 Web 支付

  • 如果 SDK 集成存在问题,可以尝试使用 PayPal 的 Web 支付方式,通过浏览器跳转到 PayPal 支付页面。
  • 示例代码:
    uni.navigateTo({
      url: 'https://www.paypal.com/checkoutnow?token=YOUR_TOKEN'
    });

8. 联系 PayPal 支持

  • 如果以上方法都无法解决问题,可以联系 PayPal 的技术支持,提供详细的日志和设备信息,寻求帮助。

9. 测试代码示例

以下是一个简单的 PayPal 支付调用示例,确保代码在安卓端和 iOS 端都能正常运行:

// 初始化 PayPal
const paypal = require('paypal-checkout');

paypal.Button.render({
  env: 'sandbox', // 沙盒环境
  client: {
    sandbox: 'YOUR_SANDBOX_CLIENT_ID',
    production: 'YOUR_PRODUCTION_CLIENT_ID'
  },
  payment: function (data, actions) {
    return actions.payment.create({
      transactions: [{
        amount: {
          total: '10.00',
          currency: 'USD'
        }
      }]
    });
  },
  onAuthorize: function (data, actions) {
    return actions.payment.execute().then(function () {
      uni.showToast({
        title: '支付成功',
        icon: 'success'
      });
    });
  }
}, '#paypal-button');
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!