import 'package:get/get.dart'; import '../../../data/services/pay_service.dart'; class PaymentController extends GetxController { final PayService _payService = Get.find(); // 支付状态 final RxBool isLoading = false.obs; final RxString paymentStatus = ''.obs; final RxString errorMessage = ''.obs; // 测试订单信息 final RxString testProductId = 'vip_101'.obs; final RxDouble testAmount = 0.01.obs; // 测试金额 1分钱 // 支付方式选择 final RxInt selectedPaymentMethod = 1.obs; // 1=微信支付, 2=支付宝支付 @override void onInit() { super.onInit(); // 生成测试订单ID // testProductId.value = 'test_${DateTime.now().millisecondsSinceEpoch}'; } /// 测试微信支付 Future testWechatPayment() async { try { isLoading.value = true; paymentStatus.value = '正在发起微信支付...'; errorMessage.value = ''; // 调用支付服务,使用回调处理结果 final launched = await _payService.processWechatPayment( productId: testProductId.value, amount: (testAmount.value * 100).toInt(), // 转换为分 description: '微信支付测试', onResult: (success, message) { // 支付结果回调 isLoading.value = false; if (success) { paymentStatus.value = '微信支付成功!'; errorMessage.value = ''; Get.snackbar( '支付成功', message ?? '微信支付测试完成', snackPosition: SnackPosition.TOP, ); } else { paymentStatus.value = '微信支付失败'; errorMessage.value = message ?? '未知错误'; Get.snackbar( '支付失败', message ?? '未知错误', snackPosition: SnackPosition.TOP, ); } }, ); if (!launched) { // 如果支付没有成功启动 isLoading.value = false; paymentStatus.value = '微信支付启动失败'; errorMessage.value = '无法启动微信支付'; Get.snackbar('支付启动失败', '无法启动微信支付'); } } catch (e) { isLoading.value = false; paymentStatus.value = '微信支付异常'; errorMessage.value = e.toString(); Get.snackbar('支付异常', e.toString()); } } /// 测试支付宝支付 Future testAlipayPayment() async { try { isLoading.value = true; paymentStatus.value = '正在发起支付宝支付...'; errorMessage.value = ''; // 调用支付宝支付服务 final launched = await _payService.processAlipayPayment( productId: testProductId.value, // 这里传递的是产品ID amount: (testAmount.value * 100).toInt(), // 转换为分 description: '支付宝支付测试', onResult: (success, message) { // 支付结果回调 isLoading.value = false; if (success) { paymentStatus.value = '支付宝支付成功!'; errorMessage.value = ''; } else { paymentStatus.value = '支付宝支付失败'; errorMessage.value = message; } }, ); if (!launched) { // 如果支付没有成功启动 isLoading.value = false; paymentStatus.value = '支付宝支付启动失败'; errorMessage.value = '无法启动支付宝支付'; Get.snackbar('支付启动失败', '无法启动支付宝支付'); } } catch (e) { isLoading.value = false; paymentStatus.value = '支付宝支付异常'; errorMessage.value = e.toString(); Get.snackbar('支付异常', e.toString()); } } /// 根据选择的支付方式进行支付 Future processPayment() async { if (selectedPaymentMethod.value == 1) { await testWechatPayment(); } else if (selectedPaymentMethod.value == 2) { await testAlipayPayment(); } } /// 选择支付方式 void selectPaymentMethod(int method) { selectedPaymentMethod.value = method; } /// 重置状态 void resetStatus() { paymentStatus.value = ''; errorMessage.value = ''; // testProductId.value = 'test_${DateTime.now().millisecondsSinceEpoch}'; } /// 更新测试金额 void updateTestAmount(double amount) { testAmount.value = amount; } }