Noobi sh Dev здесь. Я разрабатываю приложение, которое включает в себя обработку платежей между клиентами и конкретной услугой, приложение будет брать плату и платить поставщику услуг напрямую на их банковские счета. Нужен действительно совет или, возможно, лучшая реализация.
В любом случае, просмотрев некоторые учебные пособия в Интернете, я разработал приложение, чтобы использовать собственную форму для обработки данных карточки клиента и отправки непосредственно в Stripes API с запросом скручивания. В этом случае, чтобы прикрепить карту к учетной записи клиента. Я считаю, что нашивка требует, чтобы приложения / веб-сайты были совместимы с PCI при обработке данных и не использовали настраиваемую обработку форм из-за боязни сохранения данных карты, поэтому я застрял в этом конкретном методе, который мы используем, напрямую взаимодействуя с API (я использую Dio ) не рекомендуется Stripe, как указано ниже.
Снимок экрана приложения:
![enter image description here](https://i.stack.imgur.com/vrv0V.png)
Фрагмент кода (кстати, прекрасно работает):
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 без прохождения через ваши серверы
Безопасное обслуживание ваших платежных страниц с использованием Transport Layer Security (TLS), чтобы они использовали HTTPS
В любом случае я был бы признателен если кто-нибудь может дать мне какой-то совет по этому поводу или, может быть, я что-то неправильно понимаю, когда речь идет о соблюдении. Вместо этого я мог бы просто использовать Apple pay и Google pay, если этот вариант недопустим, поскольку я не хочу попадать в неприятности, если я не совместим с PCI из-за передачи данных карты.
Заранее спасибо.