Flutter实现微信支付和iOS IAP支付,老师讲的真棒

本文介绍了在Flutter应用中集成微信支付和iOS内购(IAP)的过程,包括支付流程、异常处理和生命周期监听。特别讨论了IAP中遇到的应用内支付订单对应问题、回调不稳定及文档不足等挑战,并提供了关键代码示例。
摘要由CSDN通过智能技术生成

// ① 弹出支付框后使用系统返回键关闭;
// ② 进入微信支付密码框后不输入使用系统导航切回app或者系统返回键返回;
// ③ 进入微信后直接返回桌面再回到应用;
// ④ 弹出支付框后锁屏再开屏;
// ⑤ 弹出支付款后下拉任务栏;
// ⑥ 输入密码成功后,直接返回桌面或者使用系统导航或者使用返回键返回app
// ⑦ 退出微信登录,进行支付后直接登录微信,在登录过程中回到app
// ⑧ 在系统应用管理中双开微信后,调起支付后不点击任一个微信端,而是点击取消


现在主流的做法是再支付页面监听app的生命周期,即由后台切回前台的时候,检测下状态,若还在支付中,直接进入查询结果页面,由后台去检验订单,拿到结果显示即可。**(后台主动查询理论上还是存在微信服务端延时的问题,因此后台进行查询的时候,建议采取轮询机制,若是没有支付成功的话,延时5秒后再确认下更保险)**

class _XXXPageState extends State with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this); //添加观察者
}

@override
void dispose() {
WidgetsBinding.instance.removeObserver(this); //销毁观察者
super.dispose();
}

/// 应用状态监听
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
{
if (Platform.isAndroid && _isPaying) {
_isPaying = false;
// 监听到时安卓设备并且支付还在进行中,程序员要根据业务做一下处理
break;
}
default:
break;
}
super.didChangeAppLifecycleState(state);
}
}


到此,微信支付很愉快的解决了,以上代码是抽象出来的工具类,可以直接使用;**但是不涉及任何业务流程的开发,这个需要使用者自己去补充。** 综上,微信支付流程主线可简单粗暴总结为:服务端生成订单 → 客户端调起支付 → 客户端通知服务端核验订单 → 客户端拿到最终结果 → 客户端final支付。 整个过程形成闭环,有理有据,数据都由后端去操作安全合理。(最重点是前端工作量简直不要太少)。

> _**可是,iOS就不一样了,简直不要太恶心!**_

iOS IAP应用内支付
------------

*   IAP,即in-app Purchase,苹果推出的App内购买虚拟商品的方式,基于AppStore账户的支付方式。由于iOS整个体系都是基于自己的一套系统的(不像上面的微信支付,是第三方支付平台),因此在开发之前,我们需要到Apple开发者中心完成以下步骤:

1\. 签署协议和银行业务 2. 在后台创建App内购买项目,这里所有的价格都是Apple规定好的,我们只有选择的资格,没办法自定价格。**创建完成后,每个项目会有sku和productId** 3. 添加
通过flutter的webview_flutter插件,我们可以在应用中嵌入支付宝和微信支付,并实现支付功能。使用webview_flutter的步骤如下: 1. 首先,在`pubspec.yaml`文件中引入webview_flutter插件。可以在dependencies部分添加`webview_flutter: ^2.0.0`,然后运行`flutter pub get`命令进行依赖安装。 2. 在需要嵌入支付功能的页面中,导入webview_flutter插件。在页面的顶部引入`import 'package:webview_flutter/webview_flutter.dart';`。 3. 在页面的主体中,创建一个WebView组件,并指定需要加载的URL。例如,在Container中使用WebView组件,可以使用如下代码: ```dart Container( child: WebView( initialUrl: 'https://www.alipay.com/', javascriptMode: JavascriptMode.unrestricted, ), ) ``` 4. 在支付宝和微信支付的URL中,传递相关的支付参数,例如订单号、支付金额等。 5. 在WebView组件中,可以通过注册一个JavaScript channel来监听网页中的支付回调信息。例如,在页面初始加载完成后,可以通过使用`onPageFinished`回调方法来执行一段JavaScript代码,监听支付结果。在该代码中,可以通过调用与原生平台交互的方法,将支付结果返回到Flutter中进行处理。 6. 在Flutter中,可以根据支付结果展示相关的提示信息,例如支付成功、支付失败等。 需要注意的是,支付宝和微信支付的具体接口和参数可能会根据版本的更新而有所变化,所以在代码实现中需要根据最新的文档进行调整。同时,为了确保支付过程的安全性,建议在应用中对支付接口进行适当的安全设置,例如使用HTTPS协议,并对支付参数进行加密处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值