一、支付宝支付
一、准备工作:
1、注册支付宝企业账号,开启支付以及分享功能
2、ios下需要添加urlScheme
集成tobias
import 'package:tobias/tobias.dart';
import 'package:tobias/tobias.dart' as tobias;
封装的支付方法
注意: 1、evn: AliPayEvn.ONLINE为线上环境,evn: AliPayEvn.SANDBOX为安卓沙盒环境 2、支付状态码成功为9000(字符串)
// 初始化支付宝的SDK
_initAlipaySDK() async {
await registerAP(appId: 应用id);
}
在initState中调用
payAipay({BuildContext context, PayInfo data, int id, int orderType}) async {
Map result = await tobias.aliPay(data.aliPay, evn: AliPayEvn.ONLINE);
//data.aliPay为支付宝需要的支付信息字符串类型。
debugPrint("支付宝支付:$result, ${result['resultStatus']}");
if (result['resultStatus'] == "9000") {
// 支付宝支付成功
await showPayDialog(
context: context,
canClose: false,
imageName: 'pay_success',
title: '支付成功',
buttons: ['关闭', '查看订单'],
onTap: (index) {
debugPrint('订单:支付成功,$index');
if (index == 0) {
Navigator.of(context).pop();
} else if (index == 1) {
Navigator.of(context).pop();
}
});
} else {
// 支付宝支付失败
await showPayDialog(
context: context,
imageName: 'pay_faile',
title: '支付失败',
buttons: ['关闭', '重新支付'],
onTap: (index) {
debugPrint('订单:支付失败,$index');
if (index == 0) {
Navigator.of(context).pop();
} else if (index == 1) {
Navigator.of(context).pop();
payAipay(
context: context, data: data, id: id, orderType: orderType);
}
});
}
}
二、微信支付
集成fluwx ios 下需在xcode中配置唤起微信权限
注意事项:微信唤起支付弹窗需在页面dispose时期使用cancel()方法进行销毁,否则会执行N次
import 'package:fluwx/fluwx.dart';
import 'package:fluwx/fluwx.dart' as fluwx;
/// 初始化微信SDK
_initWxSDK() async {
await registerWxApi(
appId: 微信开发平台appid,
doOnAndroid: true,
doOnIOS: true,
universalLink: 协议地址,
);
}
在在initState中调用
// 微信方法
payWechat({BuildContext context, PayInfo data, int id, int orderType}) async {
//data为微信支付返回的信息
bool result = await fluwx.payWithWeChat(
appId: 微信开发平台appid,
partnerId: data.partnerid,
prepayId: data.prepayid,
packageValue: data.package,
nonceStr: data.noncestr,
timeStamp: data.timestamp,
sign: data.sign,
);
var lis;
lis = fluwx.weChatResponseEventHandler.listen((BaseWeChatResponse res) async {
debugPrint('微信支付的回调结果:${res.errCode}');
if (res is fluwx.WeChatPaymentResponse && res.errCode == 0) {
debugPrint('微信支付:${fluwx.WeChatPaymentResponse}');
// 微信支付成功
await showPayDialog(
context: context,
imageName: 'pay_success',
title: '支付成功',
buttons: ['关闭', '查看订单'],
onTap: (index) {
//方法执行完需要手动关闭
lis.cancel();
debugPrint('订单:支付成功,$index');
if (index == 0) {
Navigator.of(context).pop();
} else if (index == 1) {
Navigator.of(context).pop();
}
});
} else {
// 微信支付失败
await showPayDialog(
context: context,
imageName: 'pay_faile',
title: '支付失败',
buttons: ['关闭', '重新支付'],
onTap: (index) {
lis.cancel();
debugPrint('订单:支付失败,$index');
if (index == 0) {
Navigator.of(context).pop();
} else if (index == 1) {
Navigator.of(context).pop();
payWechat(
context: context, data: data, id: id, orderType: orderType);
}
});
}
});
debugPrint('微信:$result');
}
三、支付宝代付(分享)
注意事项:安卓环境下打包代码混淆支付宝分享这个方法不进行代码混淆,否则在安卓环境下会导致可以唤起支付宝好友列表,但是无法选中的问题
import 'package:flutter_apopen/flutter_apopen.dart' as apopen;
ShareWebWithImageUrl(分享网页)
void shareWebWithImageUrl() async{
var result = await apopen.shareWebAndImgUrl(
imageUrl: 'http://XXX.jpg',
wepageUrl: 'https://www.XXX.com',
title: 'Text Title',
desc: 'Text desc',
);
print(result);
}