Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
2.49.0
  • Loading branch information
braintreeps committed Sep 1, 2015
1 parent e4a2ba3 commit bfe17ea
Show file tree
Hide file tree
Showing 14 changed files with 309 additions and 9 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,8 @@
## 2.49.0
* Add sourceDescription attribute to Android Pay and Apple Pay
* Add new Android Pay test nonces
* Add support for amex rewards transactions

## 2.48.0
* Add new test payment method nonces
* Allow passing description on PayPal transactions
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.braintreepayments.gateway</groupId>
<artifactId>braintree-java</artifactId>
<version>2.48.1-SNAPSHOT</version>
<version>2.49.0-SNAPSHOT</version>
<description>Java Client Library for Braintree Payments Gateway</description>
<packaging>jar</packaging>
<name>Braintree Gateway Java Client Library</name>
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/braintreegateway/AndroidPayCard.java
Expand Up @@ -10,6 +10,7 @@ public class AndroidPayCard implements PaymentMethod {
private String last4;
private String sourceCardType;
private String sourceCardLast4;
private String sourceDescription;
private String virtualCardType;
private String virtualCardLast4;
private String expirationMonth;
Expand All @@ -26,6 +27,7 @@ public class AndroidPayCard implements PaymentMethod {
public AndroidPayCard(NodeWrapper node) {
this.sourceCardType = node.findString("source-card-type");
this.sourceCardLast4 = node.findString("source-card-last-4");
this.sourceDescription = node.findString("source-description");
this.virtualCardType = node.findString("virtual-card-type");
this.virtualCardLast4 = node.findString("virtual-card-last-4");
this.cardType = this.virtualCardType;
Expand Down Expand Up @@ -62,6 +64,10 @@ public String getSourceCardLast4() {
return sourceCardLast4;
}

public String getSourceDescription() {
return sourceDescription;
}

public String getVirtualCardType() {
return virtualCardType;
}
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/braintreegateway/AndroidPayDetails.java
Expand Up @@ -7,6 +7,7 @@ public class AndroidPayDetails {
private String last4;
private String sourceCardType;
private String sourceCardLast4;
private String sourceDescription;
private String virtualCardType;
private String virtualCardLast4;
private String expirationMonth;
Expand All @@ -19,6 +20,7 @@ public class AndroidPayDetails {
public AndroidPayDetails(NodeWrapper node) {
this.sourceCardType = node.findString("source-card-type");
this.sourceCardLast4 = node.findString("source-card-last-4");
this.sourceDescription = node.findString("source-description");
this.virtualCardType = node.findString("virtual-card-type");
this.virtualCardLast4 = node.findString("virtual-card-last-4");
this.cardType = this.virtualCardType;
Expand Down Expand Up @@ -47,6 +49,10 @@ public String getSourceCardLast4() {
return sourceCardLast4;
}

public String getSourceDescription() {
return sourceDescription;
}

public String getVirtualCardType() {
return virtualCardType;
}
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/braintreegateway/ApplePayCard.java
Expand Up @@ -11,6 +11,7 @@ public class ApplePayCard implements PaymentMethod {
private boolean isDefault;
private String cardType;
private String paymentInstrumentName;
private String sourceDescription;
private String last4;
private String expirationMonth;
private String expirationYear;
Expand All @@ -24,6 +25,7 @@ public ApplePayCard(NodeWrapper node) {
this.isDefault = node.findBoolean("default");
this.cardType = node.findString("card-type");
this.paymentInstrumentName = node.findString("payment-instrument-name");
this.sourceDescription = node.findString("source-description");
this.last4 = node.findString("last-4");
this.expirationMonth = node.findString("expiration-month");
this.expirationYear = node.findString("expiration-year");
Expand Down Expand Up @@ -56,6 +58,10 @@ public String getPaymentInstrumentName() {
return paymentInstrumentName;
}

public String getSourceDescription() {
return sourceDescription;
}

public String getExpirationMonth() {
return expirationMonth;
}
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/braintreegateway/ApplePayDetails.java
Expand Up @@ -5,6 +5,7 @@
public class ApplePayDetails {
private String cardType;
private String paymentInstrumentName;
private String sourceDescription;
private String cardholderName;
private String expirationMonth;
private String expirationYear;
Expand All @@ -14,6 +15,7 @@ public class ApplePayDetails {
public ApplePayDetails(NodeWrapper node) {
cardType = node.findString("card-type");
paymentInstrumentName = node.findString("payment-instrument-name");
sourceDescription = node.findString("source-description");
cardholderName = node.findString("cardholder-name");
expirationMonth = node.findString("expiration-month");
expirationYear = node.findString("expiration-year");
Expand All @@ -33,6 +35,10 @@ public String getPaymentInstrumentName() {
return paymentInstrumentName;
}

public String getSourceDescription() {
return sourceDescription;
}

public String getCardholderName() {
return cardholderName;
}
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/com/braintreegateway/SandboxValues.java
Expand Up @@ -9,7 +9,8 @@ public class SandboxValues {
public enum CreditCardNumber {
VISA("4111111111111111"),
MASTER_CARD("5555555555554444"),
FRAUD("4000111111111511");
FRAUD("4000111111111511"),
AMEX("378282246310005");
public String number;

private CreditCardNumber(String number) {
Expand All @@ -28,6 +29,17 @@ private PaymentMethodNonce(String nonce) {
}
}

public enum AmexRewardsRequestId {
INTERNAL_ERROR("INTERNAL_ERROR"),
CARD_INELIGIBLE("CARD_INELIGIBLE"),
PERFORM_EXTERNAL_REQUEST("PERFORM_EXTERNAL_REQUEST");
public String requestId;

private AmexRewardsRequestId(String requestId) {
this.requestId = requestId;
}
}

public enum FailsVerification {
MASTER_CARD("5105105105105100");
public String number;
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/braintreegateway/Transaction.java
Expand Up @@ -171,6 +171,7 @@ public String toString() {
private RiskData riskData;
private ThreeDSecureInfo threeDSecureInfo;
private CoinbaseDetails coinbaseDetails;
private String amexRewardsResponse;

public Transaction(NodeWrapper node) {
amount = node.findBigDecimal("amount");
Expand Down Expand Up @@ -268,6 +269,7 @@ public Transaction(NodeWrapper node) {
}

paymentInstrumentType = node.findString("payment-instrument-type");
amexRewardsResponse = node.findString("amex-rewards-response");
}

public List<AddOn> getAddOns() {
Expand Down Expand Up @@ -374,6 +376,10 @@ public CoinbaseDetails getCoinbaseDetails() {
return coinbaseDetails;
}

public String getAmexRewardsResponse() {
return amexRewardsResponse;
}

public String getPlanId() {
return planId;
}
Expand Down
@@ -0,0 +1,60 @@
package com.braintreegateway;

public class TransactionOptionsAmexRewardsRequest extends Request {
private TransactionOptionsRequest parent;
private String points;
private String currencyAmount;
private String currencyIsoCode;
private String requestId;

public TransactionOptionsAmexRewardsRequest(TransactionOptionsRequest parent) {
this.parent = parent;
}

public TransactionOptionsRequest done() {
return parent;
}

public TransactionOptionsAmexRewardsRequest points(String points) {
this.points = points;
return this;
}

public TransactionOptionsAmexRewardsRequest currencyAmount(String currencyAmount) {
this.currencyAmount = currencyAmount;
return this;
}

public TransactionOptionsAmexRewardsRequest currencyIsoCode(String currencyIsoCode) {
this.currencyIsoCode = currencyIsoCode;
return this;
}

public TransactionOptionsAmexRewardsRequest requestId(String requestId) {
this.requestId = requestId;
return this;
}

@Override
public String toXML() {
return buildRequest("amex-rewards").toXML();
}

@Override
public String toQueryString() {
return toQueryString("amex-rewards");
}

@Override
public String toQueryString(String root) {
return buildRequest(root).toQueryString();
}

protected RequestBuilder buildRequest(String root) {
return new RequestBuilder(root).
addElement("request-id", requestId).
addElement("points", points).
addElement("currency-amount", currencyAmount).
addElement("currency-iso-code", currencyIsoCode);
}
}
Expand Up @@ -11,6 +11,7 @@ public class TransactionOptionsRequest extends Request {
private String venmoSdkSession;
private String payeeEmail;
private TransactionOptionsPayPalRequest transactionOptionsPayPalRequest;
private TransactionOptionsAmexRewardsRequest transactionOptionsAmexRewardsRequest;
private TransactionOptionsThreeDSecureRequest transactionOptionsThreeDSecureRequest;

public TransactionOptionsRequest(TransactionRequest parent) {
Expand Down Expand Up @@ -66,6 +67,11 @@ public TransactionOptionsPayPalRequest paypal() {
return transactionOptionsPayPalRequest;
}

public TransactionOptionsAmexRewardsRequest amexRewards() {
transactionOptionsAmexRewardsRequest = new TransactionOptionsAmexRewardsRequest(this);
return transactionOptionsAmexRewardsRequest;
}

public TransactionOptionsThreeDSecureRequest threeDSecure() {
transactionOptionsThreeDSecureRequest = new TransactionOptionsThreeDSecureRequest(this);
return transactionOptionsThreeDSecureRequest;
Expand Down Expand Up @@ -97,6 +103,7 @@ protected RequestBuilder buildRequest(String root) {
addElement("venmoSdkSession", venmoSdkSession).
addElement("payeeEmail", payeeEmail).
addElement("threeDSecure", transactionOptionsThreeDSecureRequest).
addElement("paypal", transactionOptionsPayPalRequest);
addElement("paypal", transactionOptionsPayPalRequest).
addElement("payWithAmexRewards", transactionOptionsAmexRewardsRequest);
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/braintreegateway/test/Nonce.java
Expand Up @@ -13,6 +13,10 @@ public class Nonce {
public static String Europe = "fake-europe-bank-account-nonce";
public static String Coinbase = "fake-coinbase-nonce";
public static String AndroidPay = "fake-android-pay-nonce";
public static String AndroidPayDiscover = "fake-android-pay-discover-nonce";
public static String AndroidPayVisa = "fake-android-pay-visa-nonce";
public static String AndroidPayMasterCard = "fake-android-pay-mastercard-nonce";
public static String AndroidPayAmEx = "fake-android-pay-amex-nonce";
public static String TransactableVisa = "fake-valid-visa-nonce";
public static String TransactableAmEx = "fake-valid-amex-nonce";
public static String TransactableMasterCard = "fake-valid-mastercard-nonce";
Expand Down
20 changes: 18 additions & 2 deletions src/test/java/com/braintreegateway/integrationtest/CustomerIT.java
Expand Up @@ -527,9 +527,25 @@ public void createWithApplePayCard() {
}

@Test
public void createWithAndroidPayCard() {
public void createWithAndroidPayProxyCard() {
CustomerRequest request = new CustomerRequest().
paymentMethodNonce(Nonce.AndroidPay);
paymentMethodNonce(Nonce.AndroidPayDiscover);
Customer customer = gateway.customer().create(request).getTarget();

Customer foundCustomer = gateway.customer().find(customer.getId());
assertEquals(customer.getId(), foundCustomer.getId());
assertNotNull(foundCustomer.getAndroidPayCards());
assertEquals(1, foundCustomer.getAndroidPayCards().size());
AndroidPayCard card = foundCustomer.getAndroidPayCards().get(0);
assertNotNull(card);
assertNotNull(card.getGoogleTransactionId());
assertEquals(1, foundCustomer.getPaymentMethods().size());
}

@Test
public void createWithAndroidPayNetworkToken() {
CustomerRequest request = new CustomerRequest().
paymentMethodNonce(Nonce.AndroidPayMasterCard);
Customer customer = gateway.customer().create(request).getTarget();

Customer foundCustomer = gateway.customer().find(customer.getId());
Expand Down
Expand Up @@ -97,12 +97,31 @@ public void createApplePayCardFromNonceWithDefault() {
}

@Test
public void createAndroidPayCardFromNonce() {
public void createAndroidPayProxyCardFromNonce() {
Result<Customer> customerResult = gateway.customer().create(new CustomerRequest());
assertTrue(customerResult.isSuccess());
Customer customer = customerResult.getTarget();

String nonce = Nonce.AndroidPay;
String nonce = Nonce.AndroidPayDiscover;
PaymentMethodRequest request = new PaymentMethodRequest().
customerId(customer.getId()).
paymentMethodNonce(nonce);

Result<? extends PaymentMethod> result = gateway.paymentMethod().create(request);

assertTrue(result.isSuccess());
PaymentMethod paymentMethod = result.getTarget();
assertNotNull(paymentMethod.getToken());
assertNotNull(paymentMethod.getImageUrl());
}

@Test
public void createAndroidPayNetworkTokenFromNonce() {
Result<Customer> customerResult = gateway.customer().create(new CustomerRequest());
assertTrue(customerResult.isSuccess());
Customer customer = customerResult.getTarget();

String nonce = Nonce.AndroidPayMasterCard;
PaymentMethodRequest request = new PaymentMethodRequest().
customerId(customer.getId()).
paymentMethodNonce(nonce);
Expand Down

0 comments on commit bfe17ea

Please sign in to comment.