这是我在这里的第一篇文章。我正在为Flutter项目中的Stripe集成而挣扎,在网络上找不到任何其他类似的问题或问题。我用的是Flutter Bloc and Stripe。
一旦我运行函数await Stripe.instance.presentPaymentSheet();
并试图用信用卡42424 42424 42424 42424 42424假付款。我有上面的错误:
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>?'
#0 MethodChannelStripe.presentPaymentSheet
method_channel_stripe.dart:263
<asynchronous suspension>
#1 Stripe.presentPaymentSheet
stripe.dart:517
<asynchronous suspension>
字符串
我在后端创建支付意图,一切似乎都很好,这一部分在我的条纹 Jmeter 板
下面是我代码的一个简短复制:
pubspec.yaml
bloc: ^8.0.0
flutter_bloc: ^8.0.0
flutter_stripe: ^9.3.0
型
条纹阻挡省道
class StripeBloc extends Bloc<StripeEvent, StripeState> {
StripeBloc() : super(const StripeState()) {
on<RequestedStripePaymentEvent>(_onRequestedStripePaymentEvent);
}
void _onRequestedStripePaymentEvent(RequestedStripePaymentEvent event,
Emitter<StripeState> emit) async {
try {
final Map<String, dynamic>? paymentIntent = await createPaymentIntent();
await Stripe.instance.initPaymentSheet(
paymentSheetParameters: SetupPaymentSheetParameters(
paymentIntentClientSecret: paymentIntent?['client_secret'],
));
await Stripe.instance.presentPaymentSheet();
} on StripeException catch (e) {
if (e.error.code == FailureCode.Canceled) {}
if (e.error.code == FailureCode.Failed ||
e.error.code == FailureCode.Timeout) {
}
} finally {
}
}
}
型
stripe_API.dart
Future<Map<String, dynamic>?> createPaymentIntent() async {
try {
var response =
await postAPIAuthenticated('path');
return jsonDecode(response.body);
} catch (err) {
throw Exception(err);
}
}
型
希望大家能帮助我:)谢谢
我已经试着让我的代码尽可能少。我也尝试在前端直接调用API,但仍然得到相同的错误,所以我认为后端不会参与其中
4条答案
按热度按时间zaqlnxep1#
错误似乎与版本有关。
刚刚在Github上提出了一个问题:https://github.com/flutter-stripe/flutter_stripe/issues/1344!
jdgnovmf2#
在过去的两天里,flutter_stripe包的GitHub仓库上已经多次报告了这个问题:
https://github.com/flutter-stripe/flutter_stripe/issues/1344
这似乎是因为9.3.0版本的问题。降级到9.2.2解决了这个问题。对于其余的,我们可能不得不等待Stripe内部解决它。
希望对你有帮助!
pbwdgjma3#
错误意味着您的响应实际上是一个列表而不是一个Map。换句话说,响应类似于
[ ... ]
而不是{ ... }
。也许预期的map实际上是列表中的第一个元素。如果是这样的话,这也许可以解决它:字符串
如果这不能解决它,我建议你打印
response
,看看你得到的实际响应,然后从那里开始nue99wik4#
将这一行添加到pubspec.yaml:
字符串