Commit 423e232ed8536ddef3a77801d97ca54db6f0de17

Authored by wdn127929
1 parent f2f8c5ba

微信购买极速版&&版本有效期显示bug修复

... ... @@ -548,7 +548,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5248;
CURRENT_PROJECT_VERSION = 5249;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_MODE = release;
... ... @@ -696,7 +696,7 @@
CODE_SIGN_ENTITLEMENTS = "Runner/一键订Debug.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5248;
CURRENT_PROJECT_VERSION = 5249;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_MODE = debug;
... ... @@ -732,7 +732,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5248;
CURRENT_PROJECT_VERSION = 5249;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_MODE = release;
... ...
... ... @@ -8,7 +8,7 @@ class Constant {
*
* 打包注意事项 !!!!!!!! ****************苹果 看看导出预订数据****************
*
*
* 测试账号变更,已经删除0001 账户 代替为 0019!!!!!!!注意!!!!!!!!!!!!!!
* */
static const WXMiniProgramType wxMiniProgramType =
WXMiniProgramType.RELEASE; //正式版
... ...
... ... @@ -526,4 +526,9 @@ class HttpUrl {
static const String save_sai_you_yun_change =
"?service=App.SaiYouYun.SaveSaiYouYunChange"; // 配置可变模板内容
static const String app_pay_jisu_version =
"?service=App.Pay.AppPayJiSuVersion"; // App调起支付(购买版本)
}
... ...
... ... @@ -332,9 +332,9 @@ class HomePageSimState extends State<HomePageSim> with WidgetsBindingObserver {
}
if (showData != null && showData.length > 0) {
DateTime edate = DateTime.fromMillisecondsSinceEpoch(1716307200000);
// DateTime edate =
// DateTime.fromMillisecondsSinceEpoch(int.parse(showData[0].edate) * 1000);
DateTime edate =
DateTime.fromMillisecondsSinceEpoch(int.parse(showData[0].edate) * 1000);
DialogUtil.cupertinoAlertSellerEdateDialogSim(
context,
title: '温馨提示',
... ... @@ -567,9 +567,9 @@ class HomePageSimState extends State<HomePageSim> with WidgetsBindingObserver {
//店铺过期提醒
// 计算时间差
//店铺过期日期
// DateTime edate = DateTime.fromMillisecondsSinceEpoch(
// int.parse(sellerVersionSunModel.edate) * 1000);
DateTime edate = DateTime.fromMillisecondsSinceEpoch(1716307200000);
DateTime edate = DateTime.fromMillisecondsSinceEpoch(
int.parse(sellerVersionSunModel.edate) * 1000);
//当前日期
final datenow = DateTime.now();
... ...
import 'dart:async';
import 'dart:convert';
import 'package:common_utils/common_utils.dart';
... ... @@ -5,7 +6,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_app_update/azhon_app_update.dart';
import 'package:flutter_ex_widget/ex_text.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluwx/fluwx.dart';
import 'package:fluwx/fluwx.dart' as fluwx;
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/sms_info.dart';
import 'package:one_key/models/store_info.dart';
... ... @@ -59,11 +61,31 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
CollectStoreProvider collectStoreProvider;
StreamSubscription _wxPay;
@override
void initState() {
// TODO: implement initState
super.initState();
_wxPay = fluwx.weChatResponseEventHandler.listen((res) {
_wxPay?.cancel();
if (res is fluwx.WeChatPaymentResponse) {
print("pay :${res.isSuccessful}");
if (res.errCode == 0) {
// Utils.showToast('购买成功');
//获取商家的版本信息
getSellerVersion();
// Navigator.pop(context);
} else if (res.errCode == -1) {
Utils.showToast('支付错误');
} else if (res.errCode == -2) {
Utils.showToast('您已取消支付');
}
}
});
controller = ScrollController(initialScrollOffset: 0.0);
WidgetsBinding.instance.addObserver(this);
Utils.changeStatusColor(color: MyColours.color_438E93);
... ... @@ -108,6 +130,8 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
});
}
void wxSubscriptionClose() => _wxPay?.cancel();
@override
void dispose() {
// TODO: implement dispose
... ... @@ -115,6 +139,7 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
// AzhonAppUpdate.dispose();
EventBus().off('changeStatusColor');
EventBus().off('refreshMySms');
wxSubscriptionClose();
}
@override
... ... @@ -209,6 +234,76 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
await myModel.getMyIntegral(context);
}
_appPay() async {
//是否安装微信
bool isInstalled = await fluwx.isWeChatInstalled;
if (!isInstalled) {
Utils.showToast("请先安装微信");
return;
}
//1.接口请求微信支付所需参数
//2.成功后掉起微信支付
Map<String, String> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid,
'vid': '14',
};
bool success =
await collectStoreProvider.appPayJiSuVersion(context, params);
if (success) {
print(collectStoreProvider.sunModel.package.substring(10));
Map<String, String> str = {
'appid': collectStoreProvider.sunModel.appId,
// 'appid': 'wx85aa3cdd0f791e65',
'partnerid': '1489752232',
'prepayid': collectStoreProvider.sunModel.package.substring(10),
'timestamp': collectStoreProvider.sunModel.timeStamp,
'noncestr': collectStoreProvider.sunModel.nonceStr,
'package': 'Sign=WXPay',
// 'signtype': collectStoreProvider.sunModel.signType
};
// String str =
// '${collectStoreProvider.sunModel.appId}\n${collectStoreProvider.sunModel.timeStamp}\n${collectStoreProvider.sunModel.nonceStr}\n${collectStoreProvider.sunModel.package.substring(10)}\n';
String sign = Utils.keySort(str);
// var content = utf8.encode(signtemp);
// String sign = base64Encode(content);
print(sign);
print(collectStoreProvider.sunModel.paySign);
print('appId${collectStoreProvider.sunModel.appId}');
print('prepayId${collectStoreProvider.sunModel.package.substring(10)}');
print('nonceStr${collectStoreProvider.sunModel.nonceStr}');
print('timeStamp${collectStoreProvider.sunModel.timeStamp}');
print('sign${sign}');
//掉起微信支付
fluwx
.payWithWeChat(
// appId: 'wx85aa3cdd0f791e65',
// appId: 'wx71921f840e8f1c34',
appId: collectStoreProvider.sunModel.appId,
partnerId: '1489752232',
prepayId: collectStoreProvider.sunModel.package.substring(10),
packageValue: 'Sign=WXPay',
nonceStr: collectStoreProvider.sunModel.nonceStr,
timeStamp: int.parse(collectStoreProvider.sunModel.timeStamp),
// sign: sign
sign: sign,
// signType: collectStoreProvider.sunModel.signType
// signType: collectStoreProvider.sunModel.signType)
)
.then((data) {
print("---》$data");
}).catchError((error) {
print(error.toString());
});
} else {
print('fffff');
//给用户提示错误
}
}
///获取商家时间区间内订单数量
_getSellerReserveTotal() async {
if (Utils.getAuthority(context, '全店-月订单量')) {
... ... @@ -753,6 +848,8 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
},
rCallback: () {
//立即续费
//是否安装微信
_appPay();
},
);
} else {
... ... @@ -768,6 +865,8 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
),
rCallback: () {
//立即续费
//是否安装微信
_appPay();
},
);
}
... ... @@ -849,6 +948,7 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
},
rCallback: () {
//立即续费
_appPay();
},
);
} else {
... ... @@ -865,6 +965,8 @@ class MyPageSimState extends State<MyPageSim> with WidgetsBindingObserver {
),
rCallback: () {
//立即续费
//是否安装微信
_appPay();
},
);
}
... ...
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';
... ... @@ -6,6 +7,7 @@ import '../app.dart';
import '../constant/constant.dart';
import '../constant/error.dart';
import '../models/seller_version_model.dart';
import '../models/wechat_pay_model.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
import '../net/http_url.dart';
... ... @@ -13,6 +15,7 @@ import '../utils/utils.dart';
class CollectStoreProvider with ChangeNotifier {
List<SellerVersionSunModel> sellerVersionList = [];
WechatPaySunModel sunModel;
bool sellerCoupon = false; //优惠券营销
bool sellerRecharge = false; //储值营销
... ... @@ -81,6 +84,121 @@ class CollectStoreProvider with ChangeNotifier {
}
}
_getSellerVersionList() {
List<DateTime> cdates = [];
sellerVersionList.forEach((element) {
if (element.vid == '1' ||
element.vid == '2' ||
element.vid == '3' ||
element.vid == '4' ||
element.vid == '13' ||
element.vid == '15' ||
element.vid == '16' ||
element.vid == '17' ||
element.vid == '14') {
cdates.add(DateTime.fromMillisecondsSinceEpoch(
int.parse(element.cdate) * 1000));
}
});
print(cdates);
for (var i = 0; i < cdates.length - 1; i++) {
for (var j = 0; j < cdates.length - 1 - i; j++) {
if (cdates[j].difference(cdates[j + 1]).inSeconds > 0) {
DateTime temp = cdates[j];
cdates[j] = cdates[j + 1];
cdates[j + 1] = temp;
}
}
}
print(cdates); //最后一个是最新的充值
// //找到最新的版本,并且移除其他版本
// sellerNormalEdate = sellerVersionList
// .where((element) =>
// int.parse(element.cdate) * 1000 ==
// cdates[cdates.length - 1].microsecondsSinceEpoch)
// .toList()[0]
// .edate;
List<SellerVersionSunModel> temp = [];
sellerVersionList.forEach((element) {
if (element.vid == '1' ||
element.vid == '2' ||
element.vid == '3' ||
element.vid == '4' ||
element.vid == '13' ||
element.vid == '15' ||
element.vid == '16' ||
element.vid == '17') {
if (int.parse(element.cdate) * 1000 ==
cdates[cdates.length - 1].millisecondsSinceEpoch) {
temp.add(element); //最新的版本信息
}
} else {
temp.add(element); //模块信息
}
});
sellerVersionList = temp.toList();
print(sellerVersionList);
}
_getSellerVersionListOld() {
List<DateTime> cdates = [];
sellerVersionList.forEach((element) {
if (element.vid == '1' ||
element.vid == '2' ||
element.vid == '3' ||
element.vid == '4' ||
element.vid == '13' ||
element.vid == '15' ||
element.vid == '16' ||
element.vid == '17') {
cdates.add(DateTime.fromMillisecondsSinceEpoch(
int.parse(element.cdate) * 1000));
}
});
print(cdates);
for (var i = 0; i < cdates.length - 1; i++) {
for (var j = 0; j < cdates.length - 1 - i; j++) {
if (cdates[j].difference(cdates[j + 1]).inSeconds > 0) {
DateTime temp = cdates[j];
cdates[j] = cdates[j + 1];
cdates[j + 1] = temp;
}
}
}
print(cdates); //最后一个是最新的充值
// //找到最新的版本,并且移除其他版本
// sellerNormalEdate = sellerVersionList
// .where((element) =>
// int.parse(element.cdate) * 1000 ==
// cdates[cdates.length - 1].microsecondsSinceEpoch)
// .toList()[0]
// .edate;
List<SellerVersionSunModel> temp = [];
sellerVersionList.forEach((element) {
if (element.vid == '1' ||
element.vid == '2' ||
element.vid == '3' ||
element.vid == '4' ||
element.vid == '13' ||
element.vid == '15' ||
element.vid == '16' ||
element.vid == '17') {
if (int.parse(element.cdate) * 1000 ==
cdates[cdates.length - 1].millisecondsSinceEpoch) {
temp.add(element); //最新的版本信息
}
} else {
temp.add(element); //模块信息
}
});
sellerVersionList = temp.toList();
print(sellerVersionList);
}
// 获取商家的版本信息
Future<bool> getSellerVersion(BuildContext context,
{bool showLoading = true}) async {
... ... @@ -96,103 +214,53 @@ class CollectStoreProvider with ChangeNotifier {
return false;
});
if (baseResp.code == Constant.status_success) {
sellerVersionList =
sellerVersionList = [];
List<SellerVersionSunModel> tempList =
SellerVersionModel.fromJson(baseResp.responseData).data;
if (sellerVersionList != null && sellerVersionList.length > 0) {
List<String> versionCodeList = [];
sellerVersionList.forEach((element) {
versionCodeList.add(element.vid);
});
if (tempList != null && tempList.length > 0) {
tempList.forEach((element) {
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
int.parse(element.rdate.toString()) * 1000);
String fromDate =
DateUtil.formatDate(dateTime, format: DateFormats.y_mo_d);
String from = fromDate + ' 00:00:00';
int fff = DateUtil.getDateMsByTimeStr(from);
print(fff);
DateTime stime = DateTime.fromMillisecondsSinceEpoch(
DateUtil.getDateMsByTimeStr(from)); //启用日期
print(stime);
String now =
DateUtil.formatDate(DateTime.now(), format: DateFormats.y_mo_d);
String nowStr = now + ' 00:00:00';
DateTime nowtime = DateTime.fromMillisecondsSinceEpoch(
DateUtil.getDateMsByTimeStr(nowStr)); //目前时间
//比较相差的天数
int difference = stime.difference(nowtime).inDays;
// int differenceSeconds = stime.difference(nowtime).inSeconds;
if (difference < 0 || difference == 0) {
//启用时间在今天或者之前
sellerVersionList.add(element);
}
});
if (Constant.normalApp) {
sellerCoupon = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '8' ||
element == '15' ||
element == '16' ||
element == '17');
sellerRecharge = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '9');
sellerWine = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '7');
sellerOrderCustomer = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '6');
sellerOrderManager = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '5');
sellerFeast = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '12');
sellerPreserve = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '10' ||
element == '15' ||
element == '16' ||
element == '17');
sellerMarketing = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '11' ||
element == '15' ||
element == '16' ||
element == '17');
sellerNormal = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '4' ||
element == '13' ||
element == '15' ||
element == '16' ||
element == '17');
_getSellerVersionListOld(); //筛出cdate最新的
} else {
_getSellerVersionList(); //筛出cdate最新的
}
//准备好数据
if (sellerVersionList != null && sellerVersionList.length > 0) {
List<String> versionCodeList = [];
sellerVersionList.forEach((element) {
if (element.vid == '1' ||
element.vid == '2' ||
element.vid == '3' ||
element.vid == '4' ||
element.vid == '13') {
sellerNormalEdate = element.edate;
}
versionCodeList.add(element.vid);
});
if (!sellerNormal) {
//超能版或者标准版过期
App.sp.setStringList("sellerEdate", ['-1']);
} else {
if (App.sp.containsKey("sellerEdate")) {
App.sp.remove("sellerEdate");
}
}
} else {
sellerSimple = versionCodeList.any((element) => element == '14');
if (sellerSimple) {
//极速版
if (App.sp.containsKey("sellerEdate")) {
App.sp.remove("sellerEdate");
}
} else {
if (Constant.normalApp) {
sellerCoupon = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
... ... @@ -273,7 +341,100 @@ class CollectStoreProvider with ChangeNotifier {
App.sp.remove("sellerEdate");
}
}
} else {
sellerSimple = versionCodeList.any((element) => element == '14');
if (sellerSimple) {
//极速版
if (App.sp.containsKey("sellerEdate")) {
App.sp.remove("sellerEdate");
}
} else {
sellerCoupon = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '8' ||
element == '15' ||
element == '16' ||
element == '17');
sellerRecharge = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '9');
sellerWine = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '7');
sellerOrderCustomer = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '6');
sellerOrderManager = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '5');
sellerFeast = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '12');
sellerPreserve = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '10' ||
element == '15' ||
element == '16' ||
element == '17');
sellerMarketing = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '11' ||
element == '15' ||
element == '16' ||
element == '17');
sellerNormal = versionCodeList.any((element) =>
element == '1' ||
element == '2' ||
element == '3' ||
element == '4' ||
element == '13' ||
element == '15' ||
element == '16' ||
element == '17');
sellerVersionList.forEach((element) {
if (element.vid == '1' ||
element.vid == '2' ||
element.vid == '3' ||
element.vid == '4' ||
element.vid == '13') {
sellerNormalEdate = element.edate;
}
});
if (!sellerNormal) {
//超能版或者标准版过期
App.sp.setStringList("sellerEdate", ['-1']);
} else {
if (App.sp.containsKey("sellerEdate")) {
App.sp.remove("sellerEdate");
}
}
}
}
} else {
//超能版或者标准版过期 && 极速版也没有
App.sp.setStringList("sellerEdate", ['-1']);
}
} else {
//超能版或者标准版过期 && 极速版也没有
... ... @@ -286,4 +447,27 @@ class CollectStoreProvider with ChangeNotifier {
}
return false;
}
/// App调起支付(购买版本)
Future<bool> appPayJiSuVersion(
BuildContext context, Map<String, String> params,
{isShowLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.app_pay_jisu_version,
data: params, showLoading: isShowLoading)
.catchError((error) {
print(error.toString());
if (error is MyError) {}
return false;
});
if (baseResp != null && baseResp.code == Constant.status_success) {
sunModel = WechatPayModel.fromJson(baseResp.responseData).data;
if (sunModel != null) {
return true;
}
} else {
Utils.showToast(baseResp.msg ?? "");
}
return false;
}
}
... ...