|
|
@@ -1,9 +1,12 @@
|
|
|
import 'package:electronic_assistant/base/base_controller.dart';
|
|
|
import 'package:electronic_assistant/data/bean/payment_way.dart';
|
|
|
+import 'package:electronic_assistant/data/consts/event_report_id.dart';
|
|
|
import 'package:electronic_assistant/data/repositories/store_repository.dart';
|
|
|
+import 'package:electronic_assistant/handler/event_handler.dart';
|
|
|
+import 'package:electronic_assistant/module/login/view.dart';
|
|
|
import 'package:electronic_assistant/module/store/payment_status_manager.dart';
|
|
|
+import 'package:electronic_assistant/module/store/view.dart';
|
|
|
import 'package:electronic_assistant/resource/string.gen.dart';
|
|
|
-import 'package:electronic_assistant/router/app_pages.dart';
|
|
|
import 'package:electronic_assistant/sdk/pay/agile_pay.dart';
|
|
|
import 'package:electronic_assistant/sdk/pay/alipay/ali_pay_info.dart';
|
|
|
import 'package:electronic_assistant/sdk/pay/applepay/apple_pay_info.dart';
|
|
|
@@ -11,7 +14,6 @@ import 'package:electronic_assistant/sdk/pay/code/agile_pay_code.dart';
|
|
|
import 'package:electronic_assistant/utils/http_handler.dart';
|
|
|
import 'package:electronic_assistant/utils/toast_util.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
-
|
|
|
import '../../data/api/response/order_pay_response.dart';
|
|
|
import '../../data/api/response/user_info_response.dart';
|
|
|
import '../../data/bean/store_item.dart';
|
|
|
@@ -40,12 +42,31 @@ class StoreController extends BaseController implements PaymentStatusCallback {
|
|
|
|
|
|
UserInfoResponse? get userInfo => _userInfo.value;
|
|
|
|
|
|
+ StoreFromType? fromType;
|
|
|
+
|
|
|
@override
|
|
|
void onInit() {
|
|
|
super.onInit();
|
|
|
initStoreIndexData();
|
|
|
}
|
|
|
|
|
|
+ @override
|
|
|
+ void onReady() {
|
|
|
+ super.onReady();
|
|
|
+ _initArgs();
|
|
|
+ }
|
|
|
+
|
|
|
+ void _initArgs() {
|
|
|
+ fromType = Get.arguments?['fromType'];
|
|
|
+ if (fromType == StoreFromType.home) {
|
|
|
+ EventHandler.report(EventId.event_104001, params: {'id': '001'});
|
|
|
+ } else if (fromType == StoreFromType.mine) {
|
|
|
+ EventHandler.report(EventId.event_104001, params: {'id': '002'});
|
|
|
+ } else if (fromType == StoreFromType.analyse) {
|
|
|
+ EventHandler.report(EventId.event_104001, params: {'id': '003'});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
void initStoreIndexData() {
|
|
|
storeRepository.storeIndex().then((indexData) {
|
|
|
storeItems.clear();
|
|
|
@@ -111,6 +132,9 @@ class StoreController extends BaseController implements PaymentStatusCallback {
|
|
|
: ProductType.consumable,
|
|
|
response.appAccountToken);
|
|
|
}
|
|
|
+ Future.delayed(const Duration(seconds: 30), () {
|
|
|
+ LoadingDialog.hide();
|
|
|
+ });
|
|
|
AgilePay.startPay(payInfo, success: (String? result) {
|
|
|
LoadingDialog.show(StringName.storeQueryPayState.tr);
|
|
|
checkPaymentStatus(outTradeNo, paymentWay, storeItem,
|
|
|
@@ -120,6 +144,7 @@ class StoreController extends BaseController implements PaymentStatusCallback {
|
|
|
});
|
|
|
}, payError: (int error, String? errorMessage) {
|
|
|
errorPayToast(error);
|
|
|
+ errorEventReport(payMethod);
|
|
|
LoadingDialog.hide();
|
|
|
}, error: (int errno, String? error) {
|
|
|
errorPayToast(errno);
|
|
|
@@ -130,13 +155,23 @@ class StoreController extends BaseController implements PaymentStatusCallback {
|
|
|
if (error is ServerErrorException &&
|
|
|
error.code == ErrorCode.errorCodeNoLogin) {
|
|
|
ToastUtil.showToast(StringName.errorCodeNoLogin.tr);
|
|
|
- Get.toNamed(RoutePath.login);
|
|
|
+ LoginPage.start(fromType: LoginFromType.store);
|
|
|
} else {
|
|
|
ToastUtil.showToast(StringName.storePayError.tr);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ void errorEventReport(int payMethod) {
|
|
|
+ if (payMethod == PayMethod.wechat) {
|
|
|
+ EventHandler.report(EventId.event_104003, params: {'id': '001'});
|
|
|
+ } else if (payMethod == PayMethod.alipay) {
|
|
|
+ EventHandler.report(EventId.event_104003, params: {'id': '002'});
|
|
|
+ } else if (payMethod == PayMethod.apple) {
|
|
|
+ EventHandler.report(EventId.event_104003, params: {'id': '003'});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
void errorPayToast(int errno) {
|
|
|
if (errno == AgilePayCode.payCodeNotSupport) {
|
|
|
ToastUtil.showToast(StringName.storePayNotSupport.tr);
|
|
|
@@ -171,6 +206,22 @@ class StoreController extends BaseController implements PaymentStatusCallback {
|
|
|
String orderNo, PaymentWay paymentWay, StoreItem storeItemBean) {
|
|
|
LoadingDialog.hide();
|
|
|
ToastUtil.showToast(StringName.storePaySuccess.tr);
|
|
|
+ Map<String, dynamic> params = {};
|
|
|
+ if (paymentWay.payMethod == PayMethod.wechat) {
|
|
|
+ params['id'] = '001';
|
|
|
+ } else if (paymentWay.payMethod == PayMethod.alipay) {
|
|
|
+ params['id'] = '002';
|
|
|
+ } else if (paymentWay.payMethod == PayMethod.apple) {
|
|
|
+ params['id'] = '003';
|
|
|
+ }
|
|
|
+ if (fromType == StoreFromType.home) {
|
|
|
+ params['from_id'] = '011';
|
|
|
+ } else if (fromType == StoreFromType.mine) {
|
|
|
+ params['from_id'] = '012';
|
|
|
+ } else if (fromType == StoreFromType.analyse) {
|
|
|
+ params['from_id'] = '013';
|
|
|
+ }
|
|
|
+ EventHandler.report(EventId.event_104002, params: params);
|
|
|
Get.back();
|
|
|
}
|
|
|
}
|