2014-07-25 40 views
3

我正在使用Braintree作爲支付網關。
我有一個要求,我只需要存儲信用卡的最後4位數字,到期日期(根據PCI Complaince)。
我已經在JavaScript中實現了前端代碼,並將數據發送到服務器,信用卡信息被加密。
無論如何,我可以得到後四位數字,失效日期和卡類型,或者我可以解密它嗎?我只需要存儲信用卡的最後4位數字

<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" /> 

+0

這篇文章表明,有幾個不同的流量,你可以採取:https://www.braintreepayments.com/braintrust/client-side-encryption。你在使用哪一個? – Sid

+0

我正在使用客戶端加密 – Abhishek

回答

5

(披露,我布倫特裏工作)

由於您使用的客戶端加密,因爲它是建立在交易前是加密的,你將無法獲得的信息。但是,一旦完成交易,結果對象將包含卡號的前六位/後四位數字和到期日期。然後,您可以將這些值存儲在數據庫中。

它看起來是這樣的:

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

由於您使用的布倫特裏的客戶端加密流,根據自己的文檔,你不能訪問敏感信息(即信用卡號碼)的未加密版本。這是有意完成的,以便您可以降低安全風險並保持PCI合規性。

布倫特裏states in this post

一旦用戶按下「提交」按鈕,選擇包含其 信用卡信息的形式,您使用的是布倫特裏,提供的JavaScript 庫加密敏感字段前形式是有史以來發布到 您的服務器。敏感的未加密數據未包含在提交的 表單中,因此將永遠不會通過您的 系統。但是,所有其他字段都將提供給您。這意味着您可以執行自定義驗證,格式化和登錄到您的心臟的內容,而不會暴露在安全風險和 額外的PCI合規性要求中,因爲未加密的信用卡 數據通過您的環境。

另請注意,由於您無權訪問解密密鑰,所以無法解密數據。

如果你想訪問實際的敏感信用卡數據,那麼我認爲你必須採取不同的方法。流程看起來像你最好的選擇。 Braintree指出:

S2S的工作方式與訪問HTTP上的任何API類似。首先, 你在你的網站上創建一個表格,用戶輸入他們的信用卡 卡數據,賬單信息等。當用戶提交表格時, 的內容被髮送到你的服務器。使用您收到的數據, 您使用其客戶端庫之一向Braintree發出API調用, 檢查結果並向用戶顯示必要的信息。

相關問題