我是Android + Braintree世界的新手。目前我正在使用 Drop-In 界面。 我想做的是以下
“如果用户正在创建/添加新卡片,请询问他是否要保存 信用卡信息“。
我需要此信息,因为稍后我会相应地在事务的参数中设置storeInVaultOnSuccess
选项。
现在,似乎无法在插件GUI中插入元素来了解用户是否要保存这些数据。
很好,所以我将在插入界面之后添加一个额外的步骤,我只会询问用户是否要保存信用卡数据。
但问题是,如果他选择已经存在的信用卡,我不想问这个问题,所以我需要知道他是否创建了一张新卡,或者他是否选择了现有卡。
有没有办法执行此任务(或者有更好的替代方案)?
我已经做过什么:
我试图查看onActivityResult
方法中给出的所有信息,更具体地说是作为第3个参数给出的Intent的内容。
我所拥有的当然是EXTRA_PAYMENT_METHOD_NONCE
,然后是EXTRA_PAYMENT_METHOD
(类型com.braintreepayments.api.models.Card
),但查看Card.java
的代码,我无法理解如何检索(如果可能的话)这种信息。
提前致谢。
答案 0 :(得分:0)
完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support。
Drop-In UI不支持该工作流程,因为在输入时,Drop-In会自动保存信用卡并只提供nonce(它不包含有关该卡的任何信息)因PCI原因而向客户提出。换句话说,storeInVaultOnSuccess不会适用,因为它已经存在。
正如你所说,解决这个问题的方法 - 在仍然使用Drop-In时 - 将保留对交易中使用的付款方式的引用,并在交易完成后询问。您可以通过检查响应对象来获取此信息:
String payment_method_token = "";
TransactionRequest request = new TransactionRequest()
.amount(new BigDecimal("100.00"));
.paymentMethodNonce(nonceFromTheClient);
Result<Transaction> result = gateway.transaction().sale(request);
Transaction transaction = result.getTarget();
if (transaction.getPaymentInstrumentType().equals(PaymentInstrumentType.CREDIT_CARD){
payment_method_token = transaction.getCreditCard.getToken();
}
// ... other payment method types that you support
然而,正如你所说,这更复杂。您必须根据以下内容进行一些选择: a)创建付款方式时(使用createdAt),或 a)比较结账体验之前和之后的付款方式阵列
这种流程确实推动了Drop-In的限制,而这些类型的限制通常会促使开发人员切换到custom integration。在这种情况下,您将收集他们的偏好 - 无论他们是否希望将其存储 - 与enter their credit card information一样。