我只需要存储信用卡的最后4位数字

2019年8月2日 19点热度 0条评论

我正在使用Braintree作为支付网关。
我有一个要求,我只需要存储信用卡的最后4位数字,即有效期(根据PCI Complaince)。
我已经在javascript中实现了前端代码,并且在将数据发送到服务器时,信用卡信息已加密。
无论如何,我可以在后端获取最后四位数字,到期日期和卡类型,还是可以解密?

<form name="paymentForm" action="/createtransaction" method="post" id="braintree-payment-form">
   <p>
     <label style="color:white">Card Number</label>
     <input type="text" size="20" ng-model="userDetails.number" autocomplete="off" data-encrypted-name="number" />
   </p>
   <p>
     <label style="color:white">CVV</label>
     <input type="text" size="4" ng-model="userDetails.cvv" autocomplete="off" data-encrypted-name="cvv" />
   </p>
   <p>
     <label style="color:white">Expiration (MM/YYYY)</label>
     <input type="text" size="2" ng-model="userDetails.month" data-encrypted-name="month" /> / <input type="text" size="4" ng-model="userDetails.year" data-encrypted-name="year" />
   </p>
   <input type="submit" id="submit" />

解决方案如下:

(公开,我为Braintree工作)

由于您使用的是客户端加密,因此您将无法获取信息,因为在创建交易之前,信息已经被加密。但是,完成交易后,结果对象将包含卡号的前六位/后四位和有效期。然后,您可以将这些值存储在数据库中。

它看起来像:

Result<Transaction> result = gateway.transaction().sale(
  ...
);
Transaction transaction = result.getTarget();
CreditCard creditCart = transaction.getCreditCard();
String last4 = creditCard.getLast4();
String expiration = creditCard.getExpirationDate();