Commit 4acb1e4ea6a01951b88b13a2f5e328ad167ae6c8

Authored by wdn127929
1 parent 303bed5d

短信购买ok

... ... @@ -479,10 +479,10 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 260;
CURRENT_PROJECT_VERSION = 290;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_MODE = debug;
FLUTTER_BUILD_MODE = release;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
... ... @@ -494,7 +494,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 2.6.6;
MARKETING_VERSION = 2.9.6;
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
... ... @@ -624,10 +624,10 @@
CODE_SIGN_ENTITLEMENTS = "Runner/一键订Debug.entitlements";
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 260;
CURRENT_PROJECT_VERSION = 290;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_MODE = debug;
FLUTTER_BUILD_MODE = release;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
... ... @@ -639,7 +639,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 2.6.6;
MARKETING_VERSION = 2.9.6;
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
... ... @@ -659,7 +659,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 260;
CURRENT_PROJECT_VERSION = 290;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_MODE = release;
... ... @@ -674,7 +674,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 2.6.6;
MARKETING_VERSION = 2.9.6;
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
... ...
import 'package:json_annotation/json_annotation.dart';
part 'wechat_pay_model.g.dart';
@JsonSerializable()
class WechatPayModel extends Object {
@JsonKey(name: 'ret')
int ret;
@JsonKey(name: 'data')
WechatPaySunModel data;
@JsonKey(name: 'msg')
String msg;
WechatPayModel(
this.ret,
this.data,
this.msg,
);
factory WechatPayModel.fromJson(Map<String, dynamic> srcJson) =>
_$WechatPayModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$WechatPayModelToJson(this);
}
@JsonSerializable()
class WechatPaySunModel extends Object {
@JsonKey(name: 'appId')
String appId;
@JsonKey(name: 'timeStamp')
String timeStamp;
@JsonKey(name: 'nonceStr')
String nonceStr;
@JsonKey(name: 'package')
String package;
@JsonKey(name: 'signType')
String signType;
@JsonKey(name: 'paySign')
String paySign;
WechatPaySunModel(
this.appId,
this.timeStamp,
this.nonceStr,
this.package,
this.signType,
this.paySign,
);
factory WechatPaySunModel.fromJson(Map<String, dynamic> srcJson) =>
_$WechatPaySunModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$WechatPaySunModelToJson(this);
}
... ...
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'wechat_pay_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
WechatPayModel _$WechatPayModelFromJson(Map<String, dynamic> json) {
return WechatPayModel(
json['ret'] as int,
json['data'] == null
? null
: WechatPaySunModel.fromJson(json['data'] as Map<String, dynamic>),
json['msg'] as String,
);
}
Map<String, dynamic> _$WechatPayModelToJson(WechatPayModel instance) =>
<String, dynamic>{
'ret': instance.ret,
'data': instance.data,
'msg': instance.msg,
};
WechatPaySunModel _$WechatPaySunModelFromJson(Map<String, dynamic> json) {
return WechatPaySunModel(
json['appId'] as String,
json['timeStamp'] as String,
json['nonceStr'] as String,
json['package'] as String,
json['signType'] as String,
json['paySign'] as String,
);
}
Map<String, dynamic> _$WechatPaySunModelToJson(WechatPaySunModel instance) =>
<String, dynamic>{
'appId': instance.appId,
'timeStamp': instance.timeStamp,
'nonceStr': instance.nonceStr,
'package': instance.package,
'signType': instance.signType,
'paySign': instance.paySign,
};
... ...
... ... @@ -132,4 +132,7 @@ class HttpUrl {
static const String get_table_fill_update =
"?service=App.Customer.GetTableFillUpDate"; // 根据指定日期,返回当前商家包间类型置满情况的日期
static const String app_pay_sub =
"?service=App.Pay.AppPaySub"; // 根据指定日期,返回当前商家包间类型置满情况的日期
}
... ...
... ... @@ -14,7 +14,7 @@ import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class SmsManagerPage extends StatefulWidget {
final SmsInfoData infoData;
SmsInfoData infoData;
SmsManagerPage({Key key, this.infoData}) : super(key: key);
@override
... ... @@ -22,11 +22,37 @@ class SmsManagerPage extends StatefulWidget {
}
class _SmsManagerPageState extends State<SmsManagerPage> {
bool isShow = false;
@override
void initState() {
// TODO: implement initState
super.initState();
isShow = widget.infoData.meals.any((element) => element.discount != '0');
Utils.changeStatusColor(color: MyColours.color_199095);
EventBus().on('refreshSmsNum', (arg) {
_getSmsInfo(context);
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
EventBus().off('refreshSmsNum');
}
_getSmsInfo(context) async {
MyModel myModel = Provider.of<MyModel>(context, listen: false);
widget.infoData = await myModel.getSmsInfo(context);
isShow = widget.infoData.meals.any((element) => element.discount != '0');
setState(() {});
// setState(() {
// if (smsInfoData != null) {
// smsInfo = smsInfoData?.lastNum;
// }
// });
}
@override
... ... @@ -118,32 +144,35 @@ class _SmsManagerPageState extends State<SmsManagerPage> {
smsInfoData: widget.infoData);
},
),
Positioned(
top: 0,
right: 0,
child: Container(
// padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(16),vertical: ScreenUtil().setWidth(4)),
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(6)),
alignment: Alignment.center,
width: ScreenUtil().setWidth(34 * 2),
height: ScreenUtil().setWidth(30),
decoration: BoxDecoration(
// color: Colors.red,
image: DecorationImage(
image: ExactAssetImage(
Utils.getImgPath('sms_manager'),
),
fit: BoxFit.cover,
),
),
child: Text(
'特惠',
style: TextStyle(
color: MyColours.color_fefefe,
fontSize: ScreenUtil().setSp(24)),
)),
)
isShow
? Positioned(
top: 0,
right: 0,
child: Container(
// padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(16),vertical: ScreenUtil().setWidth(4)),
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(6)),
alignment: Alignment.center,
width: ScreenUtil().setWidth(34 * 2),
height: ScreenUtil().setWidth(30),
decoration: BoxDecoration(
// color: Colors.red,
image: DecorationImage(
image: ExactAssetImage(
Utils.getImgPath('sms_manager'),
),
fit: BoxFit.cover,
),
),
child: Text(
'特惠',
style: TextStyle(
color: MyColours.color_fefefe,
fontSize:
ScreenUtil().setSp(24)),
)),
)
: SizedBox()
])
],
)),
... ...
... ... @@ -3,8 +3,10 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/sms_info.dart';
import 'package:one_key/pages/my/sms_recharge_item_page.dart';
import 'package:one_key/provider/sms_recharge_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
... ... @@ -24,6 +26,25 @@ class _SmsRechargePageState extends State<SmsRechargePage> {
ScrollController controller = ScrollController();
Meals mealsSelected;
SmsRechargeModel rechargeModel;
@override
void initState() {
super.initState();
fluwx.weChatResponseEventHandler.listen((res) {
if (res is fluwx.WeChatPaymentResponse) {
print("pay :${res.isSuccessful}");
if (res.errCode == 0) {
// Utils.showToast('购买成功');
bus.emit('refreshSmsNum');
EventBus().emit('changeStatusColor');
Navigator.pop(context);
} else if (res.errCode == -1) {
Utils.showToast('支付错误');
} else if (res.errCode == -2) {
Utils.showToast('您已取消支付');
}
}
});
}
@override
Widget build(BuildContext context) {
... ... @@ -129,26 +150,45 @@ class _SmsRechargePageState extends State<SmsRechargePage> {
height: ScreenUtil().setWidth(70),
textColor: MyColours.color_F0F0F0,
onPressed: () async {
if (mealsSelected == null) {
Utils.showToast('请选择您要购买的短信套餐');
return;
}
//1.接口请求微信支付所需参数
//2.成功后掉起微信支付
Map<String, String> params;
Map<String, String> params = {
'sellerid':
Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
'meal_id': mealsSelected.id,
// 'price': '0.01'
'price': mealsSelected.price
};
bool success = await rechargeModel.getWechatPayInfo(
context, params);
if (success) {
print(rechargeModel.sunModel.package.substring(10));
//掉起微信支付
// fluwx
// .payWithWeChat(
// appId: result['appid'].toString(),
// partnerId: result['partnerid'].toString(),
// prepayId: result['prepayid'].toString(),
// packageValue: result['package'].toString(),
// nonceStr: result['noncestr'].toString(),
// timeStamp: result['timestamp'],
// sign: result['sign'].toString(),
// )
// .then((data) {
// print("---》$data");
// });
fluwx
.payWithWeChat(
// appId: 'wx85aa3cdd0f791e65',
// appId: 'wx71921f840e8f1c34',
appId: rechargeModel.sunModel.appId,
partnerId: '1489405762',
prepayId: rechargeModel.sunModel.package
.substring(10),
packageValue: 'Sign=WXPay',
nonceStr: rechargeModel.sunModel.nonceStr,
timeStamp: int.parse(
rechargeModel.sunModel.timeStamp),
// sign: rechargeModel.sunModel.paySign,
sign: 'MD5')
.then((data) {
print("---》$data");
}).catchError((error) {
print(error.toString());
});
} else {
//给用户提示错误
}
... ...
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/models/wechat_pay_model.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
... ... @@ -10,20 +11,26 @@ import 'package:one_key/utils/utils.dart';
* 短信充值
*/
class SmsRechargeModel extends ChangeNotifier {
WechatPaySunModel sunModel;
//获取微信支付所需参数
getWechatPayInfo(BuildContext context, Map<String, String> params,
Future<bool> getWechatPayInfo(
BuildContext context, Map<String, String> params,
{bool showPageLoading = false}) async {
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.get_custom_remark,
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.app_pay_sub,
data: params, showLoading: showPageLoading ? false : true)
.catchError((error) {
print(error.toString());
if (error is MyError) {}
});
if (baseResp != null && baseResp.code == Constant.status_success) {
sunModel = WechatPayModel.fromJson(baseResp.responseData).data;
if (sunModel != null) {
return true;
}
} else {
Utils.showToast(baseResp.msg ?? "");
}
notifyListeners();
return false;
}
}
... ...