Как мобильное приложение, такое как FoodPanda, хранит информацию о карте?
Я изучаю доступные варианты хранения информации о карте и думаю, что такое мобильное приложение, как FoodPanda, не хранит полную информацию о карте в своей базе данных. Используют ли они сторонние сервисы для хранения информации о карте и оплаты?
Предоставляет ли Authorized.net, например, такие услуги для хранения информации о карте и осуществления транзакции, когда для платежа указан идентификатор карты?
2 ответа
Большинству приложений / веб-сайтов не разрешается хранить информацию о карте из-за ограничений соответствия PCI, которые требуют соблюдения QSA SAQ для хранения полных номеров кредитных карт.
Большинство платежных шлюзов предоставляют альтернативу хранению информации о карте, которая называется Card Vaulting. Card Vaulting позволяет приложению / веб-сайту отправлять зашифрованные данные кредитной карты, которые хранятся в БД платежного шлюза.
Autorize.net вызывает эту функцию Профили клиентов.
Обычно, когда возвращающийся покупатель хочет разместить заказ, приложение / веб-сайт запрашивает список всех хранилищ кредитных карт, связанных с этим покупателем. Полученные данные не содержат полной информации о кредитной карте, но содержат только последние четыре цифры карты и только марку карты. API Autorize.net позволяет получать эти профили платежей клиентов, возвращая в ответ только разрешенные данные ( Получить документацию API профилей платежей клиентов):
<getCustomerPaymentProfileResponse xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<messages>
<resultCode>Ok</resultCode>
<message>
<code>I00001</code>
<text>Successful.</text>
</message>
</messages>
<paymentProfile>
<customerType>individual</customerType>
<billTo>
<firstName>John</firstName>
<lastName>Smith</lastName>
</billTo>
<customerProfileId>39598611</customerProfileId>
<customerPaymentProfileId>35936989</customerPaymentProfileId>
<payment>
<creditCard>
<cardNumber>XXXX1111</cardNumber>
<expirationDate>XXXX</expirationDate>
</creditCard>
</payment>
<subscriptionIds>
<subscriptionId>3078153</subscriptionId>
<subscriptionId>3078154</subscriptionId>
</subscriptionIds>
</paymentProfile>
</getCustomerPaymentProfileResponse>
Обратите внимание, как данные кредитной карты возвращаются:
<creditCard>
<cardNumber>XXXX1111</cardNumber>
<expirationDate>XXXX</expirationDate>
</creditCard>
Вы должны спросить FoodPanda, что они делают, поскольку мы не узнаем. Многие компании хранят данные кредитных карт, несмотря на риски и усилия, необходимые для их защиты.
Authorize.Net предлагает сервис под названием Customer Information Manager, который позволяет компаниям хранить данные кредитных карт на своих серверах в качестве профиля оплаты (они также предлагают сохранение платежных и почтовых адресов). Затем вам предоставляется идентификатор профиля платежа, который вы можете использовать в будущих транзакциях. Поэтому, когда вы хотите произвести оплату по этой кредитной карте, вы просто предоставляете Authorize.Net идентификатор профиля платежа, и они будут снимать средства с этой кредитной карты.