uni-app 支付宝支付 IOS闪退问题已解决
uni-app 支付宝支付 IOS闪退问题已解决
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | WIN10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.4.7
手机系统:iOS
手机系统版本号:iOS 15
手机厂商:苹果
手机机型:Iphone Xr
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
### 操作步骤:
uni.requestPayment({
provider:'alipay',
orderInfo:res.data,
success: function(res){
uni.navigateTo({
url:'/pages/order/detail?serial='+Serial
})
},
fail:function(){
uni.showToast({
icon:'error',
title:'支付失敗'
})
}
})
预期结果:
支付成功/失败
实际结果:
闪退
bug描述:
安卓下正常能支付成功;
IOS下直接闪退
自定义基座和正式版本都这样。
更多关于uni-app 支付宝支付 IOS闪退问题已解决的实战教程也可以访问 https://www.itying.com/category-93-b0.html
发现问题了,
SDK中的out_trade_no必须是字符串,不能是数字;
当out_trade_no为数字时,安卓正常,但是IOS会异常,猜测是前端验签的时候IOS和安卓处理不一致导致的。
解决方法PHP:
原来:
$object = new \stdClass();
$object->total_amount = $onlinePay1;
$object->subject = mb_substr($row->productName,0,32,‘UTF-8’).’…’;
$object->time_expire = date(“Y-m-d H:i:s”, “${endDate}”);
$object->out_trade_no = $row->reqID;
修改为:
$object = new \stdClass();
$object->total_amount = $onlinePay1;
$object->subject = mb_substr($row->productName,0,32,‘UTF-8’).’…’;
$object->time_expire = date(“Y-m-d H:i:s”, “${endDate}”);
$object->out_trade_no = strval($row->reqID);
即out_trade_no强制转为字符类型即可。
更多关于uni-app 支付宝支付 IOS闪退问题已解决的实战教程也可以访问 https://www.itying.com/category-93-b0.html
uni-app 支付宝支付 iOS 闪退问题已解决
问题描述:
在 uni-app 项目中使用支付宝支付功能时,iOS 设备上出现闪退现象,而 Android 设备上则正常。
可能原因:
- iOS 14+ 隐私权限问题: iOS 14 及以上版本对隐私权限进行了更严格的控制,未正确配置隐私权限会导致应用闪退。
- 支付宝 SDK 版本问题: 使用的支付宝 SDK 版本过低,可能存在兼容性问题。
- uni-app 框架版本问题: 使用的 uni-app 框架版本过低,可能存在兼容性问题。
- 代码逻辑问题: 代码中存在逻辑错误,导致支付流程异常。
解决方案:
1. 配置 iOS 隐私权限:
在 Info.plist
文件中添加以下字段:
<key>NSAppleMusicUsageDescription</key>
<string>使用支付宝支付需要访问音乐库</string>
<key>NSCalendarsUsageDescription</key>
<string>使用支付宝支付需要访问日历</string>
<key>NSCameraUsageDescription</key>
<string>使用支付宝支付需要访问相机</string>
<key>NSContactsUsageDescription</key>
<string>使用支付宝支付需要访问通讯录</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>使用支付宝支付需要始终访问位置</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>使用支付宝支付需要在使用期间访问位置</string>
<key>NSMicrophoneUsageDescription</key>
<string>使用支付宝支付需要访问麦克风</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>使用支付宝支付需要访问相册</string>