我已将Braintree Android SDK集成到工作室中以进行付款。我没有使用Drop-in UI,而是使用我自定义的UI,它有3个标签 - 已保存的卡,新卡和现金。在已保存的卡中 - 在新卡中显示已保存卡的列表 - 用户提示输入卡号,到期日期和CVV以及保存卡详细信息和通过现金支付选项 - 现金选项卡,卡详细信息没有保存在前/后端一切正常。但我的要求是 - 如果用户选择现有的卡进行支付,那么我的应用程序想要提示用户输入现有卡的CVV以进行授权。
我正在使用CardBuilder.java为新输入的卡片制作卡片详情,
CardBuilder cardBuilder = new CardBuilder()
.cardNumber(mEdtCardNumber.getText().toString())
.expirationDate(mEdtExpirationYear.getText().toString())
.cvv(mEdtCvv.getText().toString());
Card.tokenize(mBraintreeFragment, cardBuilder);
并且正在onPaymentMethodNonceCreated
中获得一片光明。
对于现有的卡进入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用于进行付款方式调用,从前端我只是传递nounce。
有人可以帮助我如何通过CVV验证现有卡片吗?
答案 0 :(得分:0)
在与BrainTree的人们交谈之后,您需要做以下事情: 设置CardBuilder时,请确保设置以下标志 CardBuilder cardBuilder =新的CardBuilder() .validate(假),... 这将返回一个nonce而不验证你没有的卡号。