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

2 回复

发现问题了, 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 = $onlinePay
1;
$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 设备上则正常。

可能原因:

  1. iOS 14+ 隐私权限问题: iOS 14 及以上版本对隐私权限进行了更严格的控制,未正确配置隐私权限会导致应用闪退。
  2. 支付宝 SDK 版本问题: 使用的支付宝 SDK 版本过低,可能存在兼容性问题。
  3. uni-app 框架版本问题: 使用的 uni-app 框架版本过低,可能存在兼容性问题。
  4. 代码逻辑问题: 代码中存在逻辑错误,导致支付流程异常。

解决方案:

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>
回到顶部