【发布时间】:2021-10-19 23:06:14
【问题描述】:
我在做什么
我正在通过webview 以及下面提到的其他一些插件在颤振中使用条带结帐。我已经为另一个应用程序使用了相同的代码,并且它在那里完全可以正常工作。虽然它在我当前的应用中显示此错误:
{"error":{"message":"Invalid array","param":"payment_method_types","type":"invalid_request_error"}}
我在此处传递的参考 Stripe 结帐文档的参数:
final body = {
'payment_method_types': ["card"],
'line_items': [
{
'name': "$serviceName",
'amount': price.round(),
"currency": "usd",
'quantity': 1,
}
],
'mode': 'payment',
'success_url': 'https://success.com/{CHECKOUT_SESSION_ID}',
'cancel_url': 'https://cancel.com/',
};
插件:
webview_flutter: ^2.0.8dio: ^4.0.0js: ^0.6.3
完整代码
这段代码基本上是返回一个sessionId,然后我会进一步使用它。
class StripeServer {
final String serviceName;
final int price;
StripeServer({this.serviceName, this.price});
Future<String> createCheckout() async {
final auth = "Basic " + base64Encode(utf8.encode(dotenv.env['secretKey']));
final body = {
'payment_method_types': ["card"],
'line_items': [
{
'name': "$serviceName",
'amount': price.round(),
"currency": "usd",
'quantity': 1,
}
],
'mode': 'payment',
'success_url': 'https://success.com/{CHECKOUT_SESSION_ID}',
'cancel_url': 'https://cancel.com/',
};
try {
final result = await Dio().post(
"https://api.stripe.com/v1/checkout/sessions",
data: body,
options: Options(
headers: {HttpHeaders.authorizationHeader: auth},
contentType: "application/x-www-form-urlencoded",
),
);
return result.data['id'];
} on DioError catch (e) {
print(e.response);
throw e;
}
}
}
任何帮助将不胜感激,如果您需要更多详细信息,请告诉我,我会更新。
【问题讨论】:
-
您确定您已在 Stripe 中激活了卡付款并使用了正确的测试凭证吗?要在生产中接受卡付款,您需要激活您的 Stripe 帐户。
-
是的,我已激活所有内容并设置了所有内容。即使这个确切的代码也适用于另一个应用程序,这里它显示了这个错误,我被卡住了我检查了他们所有的文档
-
似乎您的 HTTP 库可能正在以一种奇怪的方式解析有效负载。我会在dashboard.stripe.com/test/logs 的仪表板上查看你的 Stripe 日志,仪表板应该会显示你发送给 Stripe 的内容。
-
感谢@PaulAsjes。日志显示我正在发送
'payment_method_types': "card",虽然我的代码很清楚是List而不是字符串。有什么帮助吗? -
@PaulAsjes 你可以检查一下stackoverflow.com/questions/67785824/…