uni-app 调用 paypal 安卓端无反应无报错信息 ios端可正常支付
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")
}
}
});
操作步骤:
- 从服务端拉取configdata;
- 通过uni.getProvider判断是否支持paypal;
- 使用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.log
或uni.showToast
输出关键步骤的信息,确认代码执行到哪一步。
4. 检查 PayPal 配置
- 确保 PayPal 的
clientId
、environment
(沙盒或生产环境)等配置正确。 - 检查 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');