Braintree - Android SDK:新信用卡还是现有信用卡?
Braintree - Android SDK: new credit card or existing one?
我是 Android+Braintree 世界的新手。目前我正在使用 Drop-In 界面。
我想做的是以下
"If the user is creating/adding a new card, ask him if he wants to save
credit card information".
我需要此信息,因为稍后我将相应地在交易参数中设置 storeInVaultOnSuccess
选项。
现在,似乎没有办法在嵌入式 GUI 中插入一个元素来了解用户是否要保存这些数据。
好的,所以我将在插入界面之后添加一个额外的步骤,在该界面中我将只询问用户是否要保存信用卡数据。
但问题是,如果他选择了一张已经存在的信用卡,我不想问这个问题,所以我需要知道他是创建了一张新卡还是选择了一张现有的卡。
有没有办法执行这个任务(或者有更好的选择)?
我已经尝试过的:
我试图查看 onActivityResult
方法中给出的所有信息,更具体地说是作为第三个参数给出的 Intent 的内容。
我有的当然是 EXTRA_PAYMENT_METHOD_NONCE
,然后是 EXTRA_PAYMENT_METHOD
(键入 com.braintreepayments.api.models.Card
),但是查看 Card.java
的代码我无法理解如何检索(如果可能)此类信息。
提前致谢。
完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系 support.
Drop-In UI 不支持该工作流程,因为在输入时,Drop-In 会自动保存信用卡并仅提供随机数(不包含任何关于信用卡的信息) 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. In that case you would collect their preference - whether they want it stored - as they enter their credit card information。
我是 Android+Braintree 世界的新手。目前我正在使用 Drop-In 界面。 我想做的是以下
"If the user is creating/adding a new card, ask him if he wants to save credit card information".
我需要此信息,因为稍后我将相应地在交易参数中设置 storeInVaultOnSuccess
选项。
现在,似乎没有办法在嵌入式 GUI 中插入一个元素来了解用户是否要保存这些数据。
好的,所以我将在插入界面之后添加一个额外的步骤,在该界面中我将只询问用户是否要保存信用卡数据。
但问题是,如果他选择了一张已经存在的信用卡,我不想问这个问题,所以我需要知道他是创建了一张新卡还是选择了一张现有的卡。
有没有办法执行这个任务(或者有更好的选择)?
我已经尝试过的:
我试图查看 onActivityResult
方法中给出的所有信息,更具体地说是作为第三个参数给出的 Intent 的内容。
我有的当然是 EXTRA_PAYMENT_METHOD_NONCE
,然后是 EXTRA_PAYMENT_METHOD
(键入 com.braintreepayments.api.models.Card
),但是查看 Card.java
的代码我无法理解如何检索(如果可能)此类信息。
提前致谢。
完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系 support.
Drop-In UI 不支持该工作流程,因为在输入时,Drop-In 会自动保存信用卡并仅提供随机数(不包含任何关于信用卡的信息) 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. In that case you would collect their preference - whether they want it stored - as they enter their credit card information。