Skip to content

Commit

Permalink
Add getBin to GooglePayCardNonce (#743)
Browse files Browse the repository at this point in the history
* Add getBin to GooglePayCardNonce
* Update test to add getBin
* Verified bin is returned as expected in demo app
  • Loading branch information
jaxdesmarais authored Jun 7, 2023
1 parent 87a71a0 commit adad496
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Braintree Android SDK Release Notes

## unreleased

* GooglePay
* Add `GooglePayCardNonce.getBin()`

## 4.29.0

* PayPalNativeCheckout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class GooglePayCardNonce extends PaymentMethodNonce {

private static final String CARD_DETAILS_KEY = "details";
private static final String CARD_TYPE_KEY = "cardType";
private static final String BIN_KEY = "bin";
private static final String LAST_TWO_KEY = "lastTwo";
private static final String LAST_FOUR_KEY = "lastFour";
private static final String IS_NETWORK_TOKENIZED_KEY = "isNetworkTokenized";
Expand All @@ -28,6 +29,7 @@ public class GooglePayCardNonce extends PaymentMethodNonce {
private static final String PAYMENT_METHOD_DEFAULT_KEY = "default";

private final String cardType;
private final String bin;
private final String lastTwo;
private final String lastFour;
private final String email;
Expand Down Expand Up @@ -81,16 +83,18 @@ private static GooglePayCardNonce fromGooglePayJSON(JSONObject inputJson) throws
PostalAddress shippingAddress = postalAddressFromJson(shippingAddressJson);

BinData binData = BinData.fromJson(inputJson.optJSONObject(BIN_DATA_KEY));
String bin = details.getString(BIN_KEY);
String lastTwo = details.getString(LAST_TWO_KEY);
String lastFour = details.getString(LAST_FOUR_KEY);
String cardType = details.getString(CARD_TYPE_KEY);
boolean isNetworkTokenized = details.optBoolean(IS_NETWORK_TOKENIZED_KEY, false);

return new GooglePayCardNonce(cardType, lastTwo, lastFour, email, isNetworkTokenized, billingAddress, shippingAddress, binData, nonce, isDefault);
return new GooglePayCardNonce(cardType, bin, lastTwo, lastFour, email, isNetworkTokenized, billingAddress, shippingAddress, binData, nonce, isDefault);
}

GooglePayCardNonce(
String cardType,
String bin,
String lastTwo,
String lastFour,
String email,
Expand All @@ -103,6 +107,7 @@ private static GooglePayCardNonce fromGooglePayJSON(JSONObject inputJson) throws
) {
super(nonce, isDefault);
this.cardType = cardType;
this.bin = bin;
this.lastTwo = lastTwo;
this.lastFour = lastFour;
this.email = email;
Expand Down Expand Up @@ -146,6 +151,14 @@ public String getCardType() {
return cardType;
}

/**
* @return First six digits of card number.
*/
@NonNull
public String getBin() {
return bin;
}

/**
* @return Last two digits of the user's underlying card, intended for display purposes.
*/
Expand Down Expand Up @@ -205,6 +218,7 @@ public BinData getBinData() {
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeString(cardType);
dest.writeString(bin);
dest.writeString(lastTwo);
dest.writeString(lastFour);
dest.writeString(email);
Expand All @@ -217,6 +231,7 @@ public void writeToParcel(Parcel dest, int flags) {
private GooglePayCardNonce(Parcel in) {
super(in);
cardType = in.readString();
bin = in.readString();
lastTwo = in.readString();
lastFour = in.readString();
email = in.readString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public void fromJson_createsGooglePayCardNonce() throws Exception {

assertEquals("fake-google-pay-nonce", googlePayCardNonce.getString());
assertEquals("Visa", googlePayCardNonce.getCardType());
assertEquals("123456", googlePayCardNonce.getBin());
assertEquals("11", googlePayCardNonce.getLastTwo());
assertEquals("1234", googlePayCardNonce.getLastFour());
assertEquals("[email protected]", googlePayCardNonce.getEmail());
Expand Down
4 changes: 2 additions & 2 deletions TestUtils/src/main/java/com/braintreepayments/api/Fixtures.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2302,7 +2302,7 @@ object Fixtures {
},
"tokenizationData": {
"type": "PAYMENT_GATEWAY",
"token": "{\"androidPayCards\":[{\"type\":\"AndroidPayCard\",\"nonce\":\"fake-google-pay-nonce\",\"description\":\"Google Pay\",\"details\":{\"cardType\":\"Visa\",\"lastTwo\":\"11\",\"lastFour\":\"1234\",\"isNetworkTokenized\":true},\"binData\":{\"prepaid\":\"Unknown\",\"healthcare\":\"Yes\",\"debit\":\"No\",\"durbinRegulated\":\"Unknown\",\"commercial\":\"Unknown\",\"payroll\":\"Unknown\",\"issuingBank\":\"Unknown\",\"countryOfIssuance\":\"Something\",\"productId\":\"123\"}}]}"
"token": "{\"androidPayCards\":[{\"type\":\"AndroidPayCard\",\"nonce\":\"fake-google-pay-nonce\",\"description\":\"Google Pay\",\"details\":{\"cardType\":\"Visa\",\"bin\":\"123456\",\"lastTwo\":\"11\",\"lastFour\":\"1234\",\"isNetworkTokenized\":true},\"binData\":{\"prepaid\":\"Unknown\",\"healthcare\":\"Yes\",\"debit\":\"No\",\"durbinRegulated\":\"Unknown\",\"commercial\":\"Unknown\",\"payroll\":\"Unknown\",\"issuingBank\":\"Unknown\",\"countryOfIssuance\":\"Something\",\"productId\":\"123\"}}]}"
}
}
}
Expand Down Expand Up @@ -2398,7 +2398,7 @@ object Fixtures {
"description": "Visa •••• 1234",
"tokenizationData": {
"type": "PAYMENT_GATEWAY",
"token": "{\"androidPayCards\":[{\"type\":\"AndroidPayCard\",\"nonce\":\"d887f42c-bda5-091a-0798-af42d3ed173e\",\"description\":\"Google Pay\",\"consumed\":false,\"details\":{\"cardType\":\"Visa\",\"lastTwo\":\"34\",\"lastFour\":\"1234\"},\"binData\":{\"prepaid\":\"No\",\"healthcare\":\"No\",\"debit\":\"No\",\"durbinRegulated\":\"No\",\"commercial\":\"No\",\"payroll\":\"No\",\"issuingBank\":\"Issuing Bank USA\",\"countryOfIssuance\":\"USA\",\"productId\":\"A\"}}]}"
"token": "{\"androidPayCards\":[{\"type\":\"AndroidPayCard\",\"nonce\":\"d887f42c-bda5-091a-0798-af42d3ed173e\",\"description\":\"Google Pay\",\"consumed\":false,\"details\":{\"cardType\":\"Visa\",\"bin\":\"123456\",\"lastTwo\":\"34\",\"lastFour\":\"1234\"},\"binData\":{\"prepaid\":\"No\",\"healthcare\":\"No\",\"debit\":\"No\",\"durbinRegulated\":\"No\",\"commercial\":\"No\",\"payroll\":\"No\",\"issuingBank\":\"Issuing Bank USA\",\"countryOfIssuance\":\"USA\",\"productId\":\"A\"}}]}"
},
"type": "CARD",
"info": {
Expand Down

0 comments on commit adad496

Please sign in to comment.