首先伸头,大家可以看下flutter的一些支付寶庫
flutter_alipay: ^0.1.2
運(yùn)行一下,flutter pub get
首先在iOS項目下配置一些設(shè)置:
1、Runner-Bridging-Header.h中導(dǎo)入頭文件
#import <flutter_alipay/FlutterAlipayPlugin.h>
2、在AppDelegate里添加如下配置
override?func?application(_application:UIApplication, open url:URL, sourceApplication:String?, annotation:Any) ->Bool{
?if(url.host=="safepay")//支付寶支付
? ? ? ? {
?return?FlutterAlipayPlugin.handleOpen(url);
? ? ? ? }
?return?true;
? ? }
?override?func?application(_application:UIApplication, handleOpen url:URL) ->Bool{
if(url.host=="safepay")//支付寶支付
? ? ? ? {
?return?FlutterAlipayPlugin.handleOpen(url);
? ? ? ? }
?return?true;
? ? }
?override?func?application(_app:UIApplication, open url:URL, options: [UIApplication.OpenURLOptionsKey:Any] = [:]) ->Bool{
if(url.host=="safepay")//支付寶支付
? ? ? ? {
?return?FlutterAlipayPlugin.handleOpen(url);
? ? ? ? }
?return?true;
? ? }
3、在info.plist中加入如下配置
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>alipay</string>
<key>CFBundleURLSchemes</key>
<array>
<string>***alipay</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
4猾愿、在Flutter項目下可以創(chuàng)建一個ALiPayHelper的類,用來管理阿里支付账阻,返回Future<bool>蒂秘,成功為true,不成功為false
class AliPayHelper {
? static Future<bool> aliPay(String sign) async {
? ? if (sign == null || sign.length == 0) {
? ? ? return false;
? ? }
? ? FlutterAlipay.pay(sign).then((payResult) {
? ? ? print('>>>>>? ${payResult.toString()}');
? ? ? /*
? ? ? ? /// 支付狀態(tài)淘太,參考支付寶的文檔https://docs.open.alipay.com/204/105695/
? /// 返回碼姻僧,標(biāo)識支付狀態(tài),含義如下:
? /// 9000——訂單支付成功? ? ? ? 上面的result有值
? /// 8000——正在處理中
? /// 4000——訂單支付失敗
? /// 5000——重復(fù)請求
? /// 6001——用戶中途取消
? /// 6002——網(wǎng)絡(luò)連接出錯
? ? ? */
? ? ? String payResultStatus = payResult.resultStatus;
? ? ? if (payResultStatus == "9000") {
? ? ? ? return true;
? ? ? ? print("支付成功");
? ? ? ? CommonToast.showToast('支付成功');
? ? ? } else if (payResultStatus == "6001") {
? ? ? ? return false;
? ? ? ? print("支付取消");
? ? ? ? CommonToast.showToast('支付取消');
? ? ? } else if (payResultStatus == "4000") {
? ? ? ? return false;
? ? ? ? print("支付失敗");
? ? ? ? CommonToast.showToast('支付失敗');
? ? ? } else if (payResultStatus == "8000") {
? ? ? ? return false;
? ? ? ? print("等待支付");
? ? ? ? CommonToast.showToast('等待支付');
? ? ? } else if (payResultStatus == "6002") {
? ? ? ? return false;
? ? ? ? print("無網(wǎng)絡(luò)");
? ? ? ? CommonToast.showToast('無網(wǎng)絡(luò)');
? ? ? } else if (payResultStatus == "5000") {
? ? ? ? return false;
? ? ? ? print("重復(fù)支付");
? ? ? ? CommonToast.showToast('重復(fù)支付');
? ? ? }else{
? ? ? ? return false;
? ? ? ? print("支付失敗,未知錯誤");
? ? ? ? CommonToast.showToast('支付失敗,未知錯誤');
? ? ? }
? ? }).catchError((e) {
? ? ? return false;
? ? ? print("支付失敗");
? ? ? CommonToast.showToast('支付失敗');
? ? });
? }
}