提交 f1469b77 authored 作者: yueweilu's avatar yueweilu

刷新token

上级 08fb8659
...@@ -45,6 +45,8 @@ class BuildAccount extends StatelessWidget { ...@@ -45,6 +45,8 @@ class BuildAccount extends StatelessWidget {
if (onTap !=null) onTap; if (onTap !=null) onTap;
} }
}, },
child: Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
SizedBox( SizedBox(
...@@ -65,6 +67,7 @@ class BuildAccount extends StatelessWidget { ...@@ -65,6 +67,7 @@ class BuildAccount extends StatelessWidget {
], ],
), ),
), ),
),
); );
} ).toList(), } ).toList(),
), ),
......
library user_coin; library user_coin;
import 'dart:core';
import 'dart:io';
import 'package:easy_refresh/easy_refresh.dart'; import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_book/theme.dart'; import 'package:flutter_book/theme.dart';
import 'package:flutter_book/utils/index.dart'; import 'package:flutter_book/utils/index.dart';
import 'package:flutter_book/widgets/index.dart'; import 'package:flutter_book/widgets/index.dart';
import 'package:flutter_inapp_purchase/flutter_inapp_purchase.dart';
import 'package:flutter_inapp_purchase/modules.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluwx/fluwx.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:tobias/tobias.dart';
import '../../apis/index.dart'; import '../../apis/index.dart';
import '../../models/index.dart'; import '../../models/index.dart';
import '../../services/index.dart';
import '../user_coin_recharge/index.dart'; import '../user_coin_recharge/index.dart';
part 'view.dart'; part 'view.dart';
......
...@@ -28,6 +28,7 @@ class _UserCoinPageState extends State<UserCoinPage> { ...@@ -28,6 +28,7 @@ class _UserCoinPageState extends State<UserCoinPage> {
}, },
).then((value) { ).then((value) {
print('================================================================'); print('================================================================');
// Navigator.of(context).removeRoute(ModalRoute.of(context)!);
}); });
}, },
child: Text('充值',style: TextStyle(color: Colours.c3,fontSize: 14.w,height: 1.5,fontWeight: Fonts.medium),) child: Text('充值',style: TextStyle(color: Colours.c3,fontSize: 14.w,height: 1.5,fontWeight: Fonts.medium),)
......
...@@ -2,11 +2,10 @@ part of recharge; ...@@ -2,11 +2,10 @@ part of recharge;
class CoinRechargeController extends GetxController { class CoinRechargeController extends GetxController {
late dynamic _purchaseUpdatedSubscription; dynamic _purchaseUpdatedSubscription;
late dynamic _purchaseErrorSubscription; dynamic _purchaseErrorSubscription;
late dynamic _connectionSubscription; dynamic _connectionSubscription;
late int _buyIndex; PurchasedItem? _resultItem;
late PurchasedItem _resultItem;
List<IAPItem> _items = []; List<IAPItem> _items = [];
List<PurchasedItem> _purchases = []; List<PurchasedItem> _purchases = [];
...@@ -55,6 +54,15 @@ class CoinRechargeController extends GetxController { ...@@ -55,6 +54,15 @@ class CoinRechargeController extends GetxController {
_connectionSubscription.cancel(); _connectionSubscription.cancel();
_connectionSubscription = null; _connectionSubscription = null;
} }
if (_purchaseUpdatedSubscription != null) {
_purchaseUpdatedSubscription.cancel();
_purchaseUpdatedSubscription = null;
}
if (_purchaseErrorSubscription != null) {
_purchaseErrorSubscription.cancel();
_purchaseErrorSubscription = null;
}
super.onClose(); super.onClose();
} }
...@@ -76,8 +84,6 @@ class CoinRechargeController extends GetxController { ...@@ -76,8 +84,6 @@ class CoinRechargeController extends GetxController {
model.selected = (model == coinModel); model.selected = (model == coinModel);
} }
rechargeModel = coinModel; rechargeModel = coinModel;
_buyIndex = data.indexOf(coinModel);
update(); update();
} }
...@@ -94,7 +100,9 @@ class CoinRechargeController extends GetxController { ...@@ -94,7 +100,9 @@ class CoinRechargeController extends GetxController {
final result = await MineAPI.coinsRechargeList(type: type); final result = await MineAPI.coinsRechargeList(type: type);
data = result; data = result;
if(Platform.isIOS){
_getProduct(); _getProduct();
}
update(); update();
} }
...@@ -102,6 +110,7 @@ class CoinRechargeController extends GetxController { ...@@ -102,6 +110,7 @@ class CoinRechargeController extends GetxController {
var result = await FlutterInappPurchase.instance.initialize(); var result = await FlutterInappPurchase.instance.initialize();
print('--------------initPlatformState-------------------------$result'); print('--------------initPlatformState-------------------------$result');
_connectionSubscription = FlutterInappPurchase.connectionUpdated.listen((connected) { _connectionSubscription = FlutterInappPurchase.connectionUpdated.listen((connected) {
print('connected: $connected'); print('connected: $connected');
}); });
...@@ -129,7 +138,7 @@ class CoinRechargeController extends GetxController { ...@@ -129,7 +138,7 @@ class CoinRechargeController extends GetxController {
.toList(); .toList();
print('-------------productList-------------------$productList'); print('-------------productList-------------------$productList');
List<IAPItem> items = await FlutterInappPurchase.instance.getProducts(['com.zijing.book.flutterBook']); List<IAPItem> items = await FlutterInappPurchase.instance.getProducts(productList);
for (var item in items) { for (var item in items) {
_items.add(item); _items.add(item);
} }
...@@ -143,7 +152,14 @@ class CoinRechargeController extends GetxController { ...@@ -143,7 +152,14 @@ class CoinRechargeController extends GetxController {
/// 创建订单 /// 创建订单
void createRechargeOrder() async { void createRechargeOrder() async {
final result = await MineAPI.createRechargeOrder(identifying: rechargeModel.identifying??'', type: payModel.type.toString()); String type = '';
if(Platform.isIOS){
type = '3';
}
else{
type = payModel.type.toString();
}
final result = await MineAPI.createRechargeOrder(identifying: rechargeModel.identifying??'', type: type);
print('-----------------------------------${result.ordersnum}--------------------------------${result.msg}'); print('-----------------------------------${result.ordersnum}--------------------------------${result.msg}');
payOrderModel = result; payOrderModel = result;
...@@ -153,10 +169,20 @@ class CoinRechargeController extends GetxController { ...@@ -153,10 +169,20 @@ class CoinRechargeController extends GetxController {
// 苹果 // 苹果
if(Platform.isIOS){ if(Platform.isIOS){
// 发起苹果支付 // 发起苹果支付
_requestPurchase(_items[_buyIndex]); IAPItem targetItem = _items.firstWhere(
(item) => item.productId == rechargeModel.identifying,
);
_requestPurchase(targetItem);
} }
// 安卓 // 安卓
else if(Platform.isAndroid){ else if(Platform.isAndroid){
// 发起支付宝支付
if (payModel.type == 2){
requestAliPay();
}
else if (payModel.type == 1){
requestWechat();
}
} }
} }
...@@ -165,7 +191,7 @@ class CoinRechargeController extends GetxController { ...@@ -165,7 +191,7 @@ class CoinRechargeController extends GetxController {
} }
/// 获取后台关于当前单号的结算结果 /// 获取后台关于当前单号的结算结果
void _requestOrderStatus() async { void _requestOrderStatus() async {
final result = await ShopAPI.orderStatus(orderNumber: payOrderModel.ordersnum??'',receipt:_resultItem.transactionReceipt.toString()); final result = await ShopAPI.orderStatus(orderNumber: payOrderModel.ordersnum??'',receipt:_resultItem != null?_resultItem!.transactionReceipt.toString():'');
// 查询订单支付成功 // 查询订单支付成功
if (result.paySuccess == 1){ if (result.paySuccess == 1){
...@@ -183,7 +209,7 @@ class CoinRechargeController extends GetxController { ...@@ -183,7 +209,7 @@ class CoinRechargeController extends GetxController {
} }
StorageService.to.setObject(kFailOrder, temp); StorageService.to.setObject(kFailOrder, temp);
} }
FlutterInappPurchase.instance.finishTransactionIOS(_resultItem.transactionId!); FlutterInappPurchase.instance.finishTransactionIOS(_resultItem!.transactionId!);
} }
} }
// 查询订单支付失败 // 查询订单支付失败
...@@ -193,8 +219,8 @@ class CoinRechargeController extends GetxController { ...@@ -193,8 +219,8 @@ class CoinRechargeController extends GetxController {
// 保存未支付的订单 // 保存未支付的订单
Map<String,String> failOrder = { Map<String,String> failOrder = {
'orderNum':payOrderModel.ordersnum??'', 'orderNum':payOrderModel.ordersnum??'',
'transactionReceipt':_resultItem.transactionReceipt.toString(), 'transactionReceipt':_resultItem!.transactionReceipt.toString(),
'transactionId':_resultItem.transactionId.toString() 'transactionId':_resultItem!.transactionId.toString()
}; };
List<Map> failOrderList = []; List<Map> failOrderList = [];
failOrderList.add(failOrder); failOrderList.add(failOrder);
......
...@@ -22,6 +22,8 @@ import '../../widgets/index.dart'; ...@@ -22,6 +22,8 @@ import '../../widgets/index.dart';
import '../book_pay/index.dart'; import '../book_pay/index.dart';
import 'dart:io'; import 'dart:io';
import '../user_coin/index.dart';
part 'view.dart'; part 'view.dart';
part 'controller.dart'; part 'controller.dart';
\ No newline at end of file
...@@ -9,7 +9,7 @@ class CoinRechargePage extends StatefulWidget { ...@@ -9,7 +9,7 @@ class CoinRechargePage extends StatefulWidget {
State<CoinRechargePage> createState() => _CoinRechargePageState(); State<CoinRechargePage> createState() => _CoinRechargePageState();
} }
class _CoinRechargePageState extends State<CoinRechargePage> { class _CoinRechargePageState extends State<CoinRechargePage> with AutomaticKeepAliveClientMixin {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GetBuilder<CoinRechargeController>( return GetBuilder<CoinRechargeController>(
...@@ -133,4 +133,8 @@ class _CoinRechargePageState extends State<CoinRechargePage> { ...@@ -133,4 +133,8 @@ class _CoinRechargePageState extends State<CoinRechargePage> {
itemCount: controller.pays.length, itemCount: controller.pays.length,
); );
} }
@override
// TODO: implement wantKeepAlive
bool get wantKeepAlive => true;
} }
...@@ -166,7 +166,7 @@ class HttpService extends GetxService { ...@@ -166,7 +166,7 @@ class HttpService extends GetxService {
class _RequestInterceptor extends Interceptor { class _RequestInterceptor extends Interceptor {
@override @override
void onResponse(Response response, ResponseInterceptorHandler handler) { void onResponse(Response response, ResponseInterceptorHandler handler) async {
if (response.data['code'] != 200) { if (response.data['code'] != 200) {
handler.reject( handler.reject(
DioException( DioException(
...@@ -176,7 +176,7 @@ class _RequestInterceptor extends Interceptor { ...@@ -176,7 +176,7 @@ class _RequestInterceptor extends Interceptor {
), ),
true, true,
); );
} else { }else {
super.onResponse(response, handler); super.onResponse(response, handler);
} }
} }
...@@ -202,7 +202,6 @@ class _RequestInterceptor extends Interceptor { ...@@ -202,7 +202,6 @@ class _RequestInterceptor extends Interceptor {
final statusCode = response?.statusCode; final statusCode = response?.statusCode;
print('************* ${response?.data}'); print('************* ${response?.data}');
// Console.log(response?.data); // Console.log(response?.data);
final code = int.tryParse(response?.data['code']?.toString() ?? '');
var msg = '服务器错误'; var msg = '服务器错误';
switch (statusCode) { switch (statusCode) {
case 401: case 401:
...@@ -237,20 +236,23 @@ class _RequestInterceptor extends Interceptor { ...@@ -237,20 +236,23 @@ class _RequestInterceptor extends Interceptor {
break; break;
case 404: case 404:
msg = '$statusCode - Server not found'; msg = '$statusCode - Server not found';
CustomToast.fail(msg);
break; break;
case 500: case 500:
msg = '$statusCode - Server error'; msg = '$statusCode - Server error';
CustomToast.fail(msg);
break; break;
case 502: case 502:
msg = '$statusCode - Bad gateway'; msg = '$statusCode - Bad gateway';
CustomToast.fail(msg);
break; break;
default: default:
// if (code == 901) UserStore.to.logout(); // if (code == 901) UserStore.to.logout();
// msg = response?.data?['msg']?.toString() ?? msg; // msg = response?.data?['msg']?.toString() ?? msg;
msg = response?.data?['message']?.toString() ?? msg; msg = response?.data?['message']?.toString() ?? msg;
CustomToast.fail(msg);
break; break;
} }
CustomToast.fail(msg);
break; break;
case DioExceptionType.cancel: case DioExceptionType.cancel:
Console.log('请求取消'); Console.log('请求取消');
...@@ -266,10 +268,14 @@ class _RequestInterceptor extends Interceptor { ...@@ -266,10 +268,14 @@ class _RequestInterceptor extends Interceptor {
} }
Future<String?> refreshToken() async { Future<String?> refreshToken() async {
final result = await HttpService.to.post( final result = await HttpService.to.post(
'/v1/members/login/getToken', '/v1/members/login/getToken',
params: {
'access_token':UserStore.to.accessToken
}
); );
if (result.data is! Map) { if (result.data is Map) {
await Future.wait([ await Future.wait([
UserStore.to.setToken(result.data['token']), UserStore.to.setToken(result.data['token']),
UserStore.to.setAccessToken(result.data['access_token']), UserStore.to.setAccessToken(result.data['access_token']),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论