我正在研究存储卡信息的可用选项,我认为像FoodPanda这样的移动应用程序并不真正将完整的卡信息存储在他们的数据库中。他们是否使用第三方服务存储卡信息并付款?
例如,Authorized.net是否提供此类服务来存储卡信息并在提供卡ID时进行交易以进行付款?
答案 0 :(得分:2)
你必须向FoodPanda询问他们做了什么,因为我们不知道。许多公司存储信用卡数据,尽管存在风险和保护它所需的努力量。
Authorize.Net提供名为Customer Information Manager的服务,允许企业将信用卡详细信息存储在其服务器上作为付款资料(它们还提供保存帐单和邮寄地址)。然后,您将获得一个付款配置文件ID,您可以在将来的交易中参考该ID。因此,当您想要使用该信用卡付款时,您只需向Authorize.Net提供付款资料ID,他们就会从该信用卡中扣款。
答案 1 :(得分:1)
由于PCI compliance restrictions,大多数应用/网站都不允许存储卡信息,这需要QSA SAQ compliance才能存储完整的信用卡号。
大多数支付网关允许替代存储名为Card Vaulting的卡信息。卡存储允许应用程序/网站发送存储在支付网关DB中的加密信用卡数据。
Autorize.net调用此功能Customer Profiles。
通常,当返回的购物者想要下订单时,应用程序/网站请求与该购物者相关联的所有拱形信用卡的列表。检索到的数据不包含完整的信用卡信息,但仅包含卡的最后四位数和卡片品牌。 Autorize.net API允许检索这些客户付款配置文件,同时仅返回响应中的允许数据(Get Customer Payment Profile API Documentation):
<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>