flutter - 使用带 Flutter Dio 包 Flutter 的 Stripe API 添加卡、支付方式、账户
问题描述
Noobish Dev 在这里。我正在开发一个涉及处理客户和特定服务之间付款的应用程序,该应用程序会收取费用并将服务提供商直接支付给他们的银行账户。寻找真正的建议或者更好的实施。
无论如何,在在线观看了一些教程后,我开发了该应用程序以使用我自己的表单来处理客户卡数据并使用 curl 请求直接发送到 Stripes API。在这种情况下,将卡附加到客户帐户。我发现条纹要求应用程序/网站在处理数据时符合 PCI 标准,并且由于担心保留卡数据而不使用自定义表单处理,这让我陷入困境,因为我们通过直接与 API 交互来使用这种特殊方法(我正在使用Stripe 不推荐Dio ),如下所示。
应用截图:
代码片段(顺便说一句,工作正常):
Future<void> addCard(
{int cardNumber,
int month,
int year,
int cvc,
String stripeId,
String userId,
String cardHolderName,
String email}) async {
Map body = {
"type": "card",
"card[number]": cardNumber,
"card[exp_month]": month,
"card[exp_year]": year,
"card[cvc]": cvc,
"billing_details[name]": cardHolderName,
"billing_details[email]": email
};
dynamic stripeResponse;
try {
print('Successfully added payment method id $paymentMethodUrl');
Dio dio = Dio();
await dio
.post(paymentMethodUrl,
data: body,
options: Options(
contentType: Headers.formUrlEncodedContentType,
headers: headers))
.then((response) {
print(response.data);
stripeResponse = response;
String paymentId = response.data['id'];
Map stripeCustomer = {"customer": UserData.stripeID};
try {
dio
.post('$paymentMethodUrl/$paymentId/attach',
data: stripeCustomer,
options: Options(
contentType: Headers.formUrlEncodedContentType,
headers: headers))
.then((response) {
print(response.data);
print('Attached successfully');
});
} on DioError catch (e) {
print('Error attaching card to customer: ${e.response.data['error']['message']}');
}
});
} on DioError catch (e) {
print(stripeResponse);
print('Error adding card: ${e.response.data['error']['message']}');
}
}
https://stripe.com/docs/security#pci-dss-guidelines
符合 PCI 标准的最简单方法是 Stripe 建议的:
使用我们推荐的一种付款集成来收集付款信息,这些信息会安全地直接传输到 Stripe,而无需通过您的服务器
使用传输层安全 (TLS) 安全地提供您的支付页面,以便它们使用 HTTPS
无论如何,如果有人能给我一些建议,我将不胜感激,或者在合规方面我可能会误解某些东西。如果此选项不可行,我可能会改为使用 Apple Pay 和 Google Pay,因为如果我因处理卡数据而不符合 PCI 标准,我不想陷入麻烦。
提前致谢。
解决方案
推荐阅读
- anova - 实验的定性设计 - 3 个因素 3 个水平 - 分类响应变量
- css - Google 字体 Raleway Dots 仅在 chrome 上显示 Raleway
- python - 数据字典优化代码(python函数提示)
- python - 使用 django 模板将特定的 json 值填充到 html
- php - Joomla 自定义表单操作不起作用
- extjs6.2 - ExtJS GridPanel 用一列上传文件
- javascript - Angular 4:如何在数据列表中获取选定值的索引
- javascript - 在 codeigniter activerecord 中附加复选框值
- smooch - 如何在调用 smooch.appUsers.get 之前检查用户是否已经存在?
- javascript - 单击时如何更改 Bootstrap Vue 按钮样式复选框的变体