f IOS-flutter 支付宝、微信支付分享 与 ios UniversalLink,结果很满足 - Powered by qidao123.com技术社区

flutter 支付宝、微信支付分享 与 ios UniversalLink,结果很满足 ...

打印 上一主题 下一主题

主题 2123|帖子 2123|积分 6369

本篇重要介绍 支付宝支付、微信支付、微信分享、微信登岸功能,以及在微信支付过程中需要设置 ios 的 UniversalLink 的问题(没有设置跳转微信时会提示:未验证应用)
应用的组件分别为 alipay_kit、wechat_kit,即:支付宝框架,微信框架
当然如果要对接国外的一些支付,则选择 stripe 更好,这里不介绍,有需要的可以使用这个
支付宝支付

这里面重要针对 ios 端设置,android 临时没发现什么特别问题
首先添加三方库 alipay_kit、alipay_kit_ios,这两个都要添加,前面一个重要预备android,后面一个重要针对于 ios
  1. flutter pub add alipay_kit
  2. flutter pub add alipay_kit_ios
复制代码
原生端设置

重要ios,android现在不需要设置,出现了问题,可以参考 alipay_kit 解决
ios端设置,设置 plist,重要设置网络、跳转支付宝的scheme
  1. iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。
  2. <key>LSApplicationQueriesSchemes</key>
  3. <array>
  4.     <string>alipay</string>
  5. </array>
  6. <key>NSAppTransportSecurity</key>
  7. <dict>
  8.     <key>NSAllowsArbitraryLoads</key>
  9.     <true/>
  10. </dict>
复制代码
ios端设置,除了上面的,还要设置自己的 scheme,用于支付宝跳回我们的 app
  1. <key>CFBundleURLTypes</key>
  2. <array>
  3.     <dict>
  4.         <key>CFBundleTypeRole</key>
  5.         <string>Editor</string>
  6.         <key>CFBundleURLName</key>
  7.         <string>alipay</string>
  8.         <key>CFBundleURLSchemes</key>
  9.         <array>
  10.             <string>alipay123456</string>
  11.         </array>
  12.     </dict>
  13. </array>
复制代码
实在际上,在我们的 info 里面设置一下即可,会主动天生上面的代码,前面名称要用 alipay, 后面取一个相对比力唯一的字符串即可

flutter端使用

下面注册支付和授权登岸回调,不注册监听,直接使用返回的 Future 也可以,但不确定是否覆盖所有版本或者情况
 
  1. //导入头文件,无需导入ios的那个库
  2. import 'package:alipay_kit/alipay_kit.dart';
  3. //声明参数用于回调使用
  4. late final StreamSubscription<AlipayResp> _alipaySubs; //用于支付
  5. late final StreamSubscription<AlipayResp> _alipayAuthSubs; //用于授权登陆
  6. //注册支付宝支付和授权结果回调
  7. void registerAlipayResp() {
  8.   _alipaySubs = Alipay.instance.payResp().listen(listenAlipayPay);
  9.   _alipayAuthSubs = Alipay.instance.authResp().listen(_listenAlipayAuth);
  10. }
  11. //支付成功或者失败回调
  12. void listenAlipayPay(AlipayResp resp) {
  13.   final String content = 'pay: ${resp.resultStatus} - ${resp.result}';
  14.   print(content);
  15. }
  16. //收取那登陆成功或者失败回调
  17. void _listenAlipayAuth(AlipayResp resp) {
  18.   final String content = 'auth: ${resp.resultStatus} - ${resp.result}';
  19.   print(content);
  20. }
复制代码
检测是否安装了支付宝app
  1. //返回的 Future 需要等待
  2. final isInstall = await Alipay.instance.isInstalled();
  3. if (!isInstall) {
  4.   print("未安装支付宝app");
  5.   return;
  6. }
复制代码
授权登岸,需要传递授权信息字符串,由服务器返回
  1. Alipay.instance.auth(authInfo: "authInfo-123123");
复制代码
支付接口,需要传递 订单信息字符串,由服务器返回
  1. Alipay.instance.pay(orderInfo: "orderInfo-123123123123")
复制代码
看到上面你大概知道为什么客户端不需要 appid 之类的信息了,没错,都在服务器返回的信息字符串里面,也是服务器进行部分加密,因此相对客户端比力安全,也是支付宝推荐
ps:对接前需要先到 支付宝商家平台 申请我们的应用服务,否则期待就比力浪费时间了,前后端都会卡到这里
微信支付、分享、登岸

微信大部分内容和支付宝雷同,只不外ios端额外引出了 UniversalLink(下一小节专门介绍了) 作为新版本跳转传参方案,因此需要额外做一些操纵
需要添加三方库 wechat_kit,
  1. //flutter 添加 alipay_kit
  2. flutter pub add alipay_kit
复制代码
原生端设置

设置 plist,以便于能够跳转到微信(使用该 scheme 支持新老版本的跳转),支付宝和微信都存在的情况,内容合并即可
  1. <array>
  2.    <string>weixinULAPI</string>
  3.    <string>weixin</string>
  4.     <string>alipay</string> //也有支付宝的话就是额外加一条即可,这条注释不要放进去
  5. </array>
  6. <key>NSAppTransportSecurity</key>
  7. <dict>
  8.    <key>NSAllowsArbitraryLoads</key>
  9.    <true/>
  10. </dict>
复制代码
我们自己的 schemes 设置,用于支付宝微信跳回我们的app的,就在 info 里面设置
  1. <array>
  2.    <dict>
  3.       <key>CFBundleTypeRole</key>
  4.       <string>Editor</string>
  5.       <key>CFBundleURLName</key>
  6.       <string>alipay</string>
  7.       <key>CFBundleURLSchemes</key>
  8.       <array>
  9.          <string>alipay123456</string>
  10.       </array>
  11.    </dict>
  12.    <dict>
  13.       <key>CFBundleTypeRole</key>
  14.       <string>Editor</string>
  15.       <key>CFBundleURLName</key>
  16.       <string>weixin</string>
  17.       <key>CFBundleURLSchemes</key>
  18.       <array>
  19.          <string>weixin123456</string> //注意:这里面填写自己的微信申请的 key
  20.       </array>
  21.    </dict>
  22. </array>
复制代码
另外赠送Flutter 3.x 仿小红书贸易级app实战

 加微信可以领取项目源码:


 全新Flutter原创基于flutter3.19.5+dart3.3.3+getx等技术开辟仿抖音app实战项目。实现了雷同抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块,商城、购物车、支付功能等模块。
同时接入了友盟SDK统计数据。 
Flutter最新版本也是支持的。。。


学习目的

Flutter进阶高手分为三个阶段,从易到难,学习完成后,可以使用Flutter来开辟独立的APP,实用于Android、iOS双平台的应用程序。
第一阶段是 Flutter开辟必备Dart基础
第二个阶段是 Flutter核心技术, 一次性把握,组件大全、页面布局、路由、网络请求、数据缓存、动画等等
第三个阶段是 开辟实战企业级APP


flutter运用技术
编辑器:vscode
技术框架:flutter3.19.5+dart3.3.3
路由/状态插件:get: ^4.6.6
网络数据:dio: ^5.3.3
缓存服务:shared_preferences: ^2.2.1
图片预览插件:photo_view: ^0.14.0
刷新加载:easy_refresh^3.3.4
toast轻提示:toast^0.3.0
视频播放器:video_player: ^2.8.3
视频播放器: chewie: ^1.7.5 
flutter中文网
flutter
flutter3.19.x+getx实现了小红书商城功能。

     Flutter小红书商城开辟
  实现启动页与自界说开屏广告,可换成穿山甲广告实现收益:



接入字节跳动穿山甲广告
  1. await FlutterUnionad.register(
  2.         androidAppId: "5098580",
  3.         //穿山甲广告 Android appid 必填
  4.         iosAppId: "5098580",
  5.         //穿山甲广告 ios appid 必填
  6.         useTextureView: true,
  7.         //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView 选填
  8.         appName: "unionad_test",
  9.         //appname 必填
  10.         allowShowNotify: true,
  11.         //是否允许sdk展示通知栏提示 选填
  12.         allowShowPageWhenScreenLock: true,
  13.         //是否在锁屏场景支持展示广告落地页 选填
  14.         debug: true,
  15.         //测试阶段打开,可以通过日志排查问题,上线时去除该调用 选太难
  16.         supportMultiProcess: true,
  17.         //是否支持多进程,true支持 选填
  18.         directDownloadNetworkType: [
  19.           FlutterUnionad.NetCode.NETWORK_STATE_2G,
  20.           FlutterUnionad.NetCode.NETWORK_STATE_3G,
  21.           FlutterUnionad.NetCode.NETWORK_STATE_4G,
  22.           FlutterUnionad.NetCode.NETWORK_STATE_WIFI
  23.         ]); //允许直接下载的网络状态集合 选填//允许直接下载的网络状态集合 选填
复制代码
flutter3.19.x+getx实现了雷同抖音全屏上下滑动、左右切换页面效果:

使用 bottomNavigationBar 组件实现底部导航页面模块切换


 加微信可以领取项目源码:


 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表