2016-01-01 24 views
0

我已經在工作室中集成了Braintree Android SDK以用於付款過程。我使用的是我的自定義用戶界面,它有3個選項卡 - 保存卡,新卡和現金,而不是使用Drop-in UI。在已保存的卡片 - 保存的卡片列表顯示在新卡片中 - 用戶提示輸入卡片號碼,有效期限和CVV以及選擇保存卡片詳細信息和通過現金付款 - 使用現金選項卡,卡片詳細信息沒有保存在前臺/後臺一切工作正常。但我的要求是 - 如果用戶選擇現有的卡進行支付,那麼我的應用程序要提示用戶輸入現有卡的CVV進行授權。Braintree - Android SDK:通過僅通過CVV處理付款的現有卡驗證

我使用CardBuilder.java建卡的詳細信息新輸入的卡,是,

CardBuilder cardBuilder = new CardBuilder() 
    .cardNumber(mEdtCardNumber.getText().toString()) 
    .expirationDate(mEdtExpirationYear.getText().toString()) 
    .cvv(mEdtCvv.getText().toString()); 

Card.tokenize(mBraintreeFragment, cardBuilder); 

和我在onPaymentMethodNonceCreated越來越nounce。

以及輸入CVV後,現有的卡正在使用相同的過程是怎樣的,

CardBuilder cardBuilder = new CardBuilder().cvv(entered CVV); 
Card.tokenize(mBraintreeFragment, cardBuilder); 

但我onPaymentMethodNonceCreated是沒有得到調用,而不是onError的被調用,錯誤的是,

{"error":{"message":「Credit card is invalid」}, 
「fieldErrors」:[{"field":「creditCard」, 
「fieldErrors」:[{"field":「expirationDate」,「code」:「81709」,「message」:「Expiration date is required」}, 
{"field":「number」,「code」:「81714」,「message」:「Credit card number is required」}, 
{"field":「base」,「code」:「81725」,「message」:「Credit card must include number, payment_method_nonce, or venmo_sdk_payment_method_code」}]}]} 

但同樣的事情在iOS客戶端SDK中工作。

所以我擔心的是,這是驗證現有卡的正確方法,或者有另一種方法。 Braintree - Drop In UI在現有卡支付上不會要求CVV,我也沒有在他們的API中獲得任何代碼。我已經完成了整個API,並沒有找到任何這樣的事情。

在後端PHP用於支付方法調用,從前端我只是通過了聲明。

任何人都可以請幫助我如何驗證CVV現有的卡?

+0

這個問題有什麼好運?我需要允許用戶編輯現有的卡信息。我沒有CC號傳遞給tokenize。這適用於iOS,但不適用於Android。 –

+0

看看下面的答案.... –

+0

@NikhilSohoni你能告訴我你正在開發這個公司的PCI合規水平嗎?是SAQ A還是更高? – SoH

回答

0

與布倫特裏的鄉親溝通後,這裏是你需要做什麼: 當設置CardBuilder確保你設置以下標誌 CardBuilder cardBuilder =新CardBuilder() .validate(假),.. ... 這將返回一個隨機數而不驗證您沒有的卡號。