Skip to content

Commit 071f934

Browse files
authored
Merge pull request #142 from Adyen/develop
Release 1.7.0
2 parents 822cfa6 + baaf623 commit 071f934

18 files changed

+591
-85
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Add this dependency to your project's POM:
2323
<dependency>
2424
<groupId>com.adyen</groupId>
2525
<artifactId>adyen-java-api-library</artifactId>
26-
<version>1.6.0</version>
26+
<version>1.7.0</version>
2727
</dependency>
2828
```
2929

docs/install-library.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ <h3><a id="Maven_86"></a>Maven</h3>
4949
class="hljs-tag">&lt;/<span class="hljs-title">groupId</span>&gt;</span>
5050
<span class="hljs-tag">&lt;<span class="hljs-title">artifactId</span>&gt;</span>adyen-java-api-library<span
5151
class="hljs-tag">&lt;/<span class="hljs-title">artifactId</span>&gt;</span>
52-
<span class="hljs-tag">&lt;<span class="hljs-title">version</span>&gt;</span>1.6.0<span class="hljs-tag">&lt;/<span
52+
<span class="hljs-tag">&lt;<span class="hljs-title">version</span>&gt;</span>1.7.0<span class="hljs-tag">&lt;/<span
5353

5454
class="hljs-title">version</span>&gt;</span>
5555
<span class="hljs-tag">&lt;/<span class="hljs-title">dependency</span>&gt;</span>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>com.adyen</groupId>
55
<artifactId>adyen-java-api-library</artifactId>
66
<packaging>jar</packaging>
7-
<version>1.6.0</version>
7+
<version>1.7.0</version>
88
<name>Adyen Java API Library</name>
99
<description>Adyen API Client Library for Java</description>
1010
<url>https://github.com/adyen/adyen-java-api-library</url>

src/main/java/com/adyen/Client.java

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ public class Client {
3535
public static final String HPP_LIVE = "https://live.adyen.com/hpp";
3636
public static final String MARKETPAY_ENDPOINT_TEST = "https://cal-test.adyen.com/cal/services";
3737
public static final String MARKETPAY_ENDPOINT_LIVE = "https://cal-live.adyen.com/cal/services";
38-
public static final String API_VERSION = "v30";
38+
public static final String API_VERSION = "v40";
3939
public static final String RECURRING_API_VERSION = "v25";
4040
public static final String MARKETPAY_ACCOUNT_API_VERSION = "v4";
4141
public static final String MARKETPAY_FUND_API_VERSION = "v3";
4242
public static final String MARKETPAY_NOTIFICATION_API_VERSION = "v1";
43-
public static final String USER_AGENT_SUFFIX = "adyen-java-api-library/";
44-
public static final String LIB_VERSION = "1.6.0";
43+
public static final String LIB_NAME = "adyen-java-api-library";
44+
public static final String LIB_VERSION = "1.7.0";
4545
public static final String CHECKOUT_ENDPOINT_TEST = "https://checkout-test.adyen.com/checkout";
4646
public static final String CHECKOUT_ENDPOINT_LIVE_SUFFIX = "-checkout-live.adyenpayments.com/checkout";
47-
public static final String CHECKOUT_API_VERSION = "v32";
47+
public static final String CHECKOUT_API_VERSION = "v40";
4848
public static final String CHECKOUT_UTILITY_API_VERSION = "v1";
4949
public static final String ENDPOINT_PROTOCOL = "https://";
5050

@@ -57,28 +57,40 @@ public Client(Config config) {
5757
}
5858

5959
public Client(String username, String password, Environment environment, String applicationName) {
60+
this(username, password, environment, null, applicationName);
61+
}
62+
63+
public Client(String username, String password, Environment environment, String liveEndpointUrlPrefix, String applicationName) {
6064

6165
this.config = new Config();
6266
this.config.setUsername(username);
6367
this.config.setPassword(password);
64-
this.setEnvironment(environment);
68+
this.setEnvironment(environment, liveEndpointUrlPrefix);
6569
this.config.setApplicationName(applicationName);
6670
}
6771

72+
/**
73+
* @deprecated As of library version 1.6.1, timeouts should be set by {@link #setTimeouts(int connectionTimeoutMillis, int readTimeoutMillis)} or directly by {@link com.adyen.Config#setConnectionTimeoutMillis(int connectionTimeoutMillis)}.
74+
*/
75+
@Deprecated
6876
public Client(String username, String password, Environment environment, int connectionTimeoutMillis) {
6977

70-
this.config = new Config();
71-
this.config.setUsername(username);
72-
this.config.setPassword(password);
73-
this.setEnvironment(environment);
78+
this(username, password, environment, null);
7479
this.config.setConnectionTimeoutMillis(connectionTimeoutMillis);
7580
}
7681

77-
public Client(String apiKey, Environment environment) {
82+
/**
83+
* @deprecated As of library version 1.6.1, timeouts should be set by {@link #setTimeouts(int connectionTimeoutMillis, int readTimeoutMillis)} or directly by {@link com.adyen.Config#setConnectionTimeoutMillis(int connectionTimeoutMillis)}.
84+
*/
85+
@Deprecated
86+
public Client(String username, String password, Environment environment, int connectionTimeoutMillis, String liveEndpointUrlPrefix) {
7887

79-
this.config = new Config();
80-
this.config.setApiKey(apiKey);
81-
this.setEnvironment(environment);
88+
this(username, password, environment, liveEndpointUrlPrefix, null);
89+
this.config.setConnectionTimeoutMillis(connectionTimeoutMillis);
90+
}
91+
92+
public Client(String apiKey, Environment environment) {
93+
this(apiKey, environment, null);
8294
}
8395

8496
public Client(String apiKey, Environment environment, String liveEndpointUrlPrefix) {
@@ -87,28 +99,23 @@ public Client(String apiKey, Environment environment, String liveEndpointUrlPref
8799
this.setEnvironment(environment, liveEndpointUrlPrefix);
88100
}
89101

102+
/**
103+
* @deprecated As of library version 1.6.1, timeouts should be set by {@link #setTimeouts(int connectionTimeoutMillis, int readTimeoutMillis)} or directly by {@link com.adyen.Config#setConnectionTimeoutMillis(int connectionTimeoutMillis)}.
104+
*/
105+
@Deprecated
90106
public Client(String apiKey, Environment environment, int connectionTimeoutMillis) {
91107

92-
this.config = new Config();
93-
this.config.setApiKey(apiKey);
94-
this.setEnvironment(environment);
95-
this.config.setConnectionTimeoutMillis(connectionTimeoutMillis);
96-
}
97-
98-
public Client(String username, String password, Environment environment, int connectionTimeoutMillis, String liveEndpointUrlPrefix) {
99-
100-
this.config = new Config();
101-
this.config.setUsername(username);
102-
this.config.setPassword(password);
103-
this.setEnvironment(environment, liveEndpointUrlPrefix);
108+
this(apiKey, environment);
104109
this.config.setConnectionTimeoutMillis(connectionTimeoutMillis);
105110
}
106111

112+
/**
113+
* @deprecated As of library version 1.6.1, timeouts should be set by {@link #setTimeouts(int connectionTimeoutMillis, int readTimeoutMillis)} or directly by {@link com.adyen.Config#setConnectionTimeoutMillis(int connectionTimeoutMillis)}.
114+
*/
115+
@Deprecated
107116
public Client(String apiKey, Environment environment, int connectionTimeoutMillis, String liveEndpointUrlPrefix) {
108117

109-
this.config = new Config();
110-
this.config.setApiKey(apiKey);
111-
this.setEnvironment(environment, liveEndpointUrlPrefix);
118+
this(apiKey, environment, liveEndpointUrlPrefix);
112119
this.config.setConnectionTimeoutMillis(connectionTimeoutMillis);
113120
}
114121

@@ -176,4 +183,9 @@ public void setApplicationName(String applicationName) {
176183
this.config.setApplicationName(applicationName);
177184
}
178185

186+
public void setTimeouts(int connectionTimeoutMillis, int readTimeoutMillis) {
187+
this.config.setConnectionTimeoutMillis(connectionTimeoutMillis);
188+
this.config.setReadTimeoutMillis(readTimeoutMillis);
189+
}
190+
179191
}

src/main/java/com/adyen/Config.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class Config {
3232
protected String applicationName;
3333
protected String apiKey;
3434
protected int connectionTimeoutMillis;
35+
protected int readTimeoutMillis;
3536

3637
//HPP specific
3738
protected String hppEndpoint;
@@ -153,4 +154,12 @@ public void setConnectionTimeoutMillis(int connectionTimeoutMillis) {
153154
this.connectionTimeoutMillis = connectionTimeoutMillis;
154155
}
155156

157+
public int getReadTimeoutMillis() {
158+
return readTimeoutMillis;
159+
}
160+
161+
public void setReadTimeoutMillis(int readTimeoutMillis) {
162+
this.readTimeoutMillis = readTimeoutMillis;
163+
}
164+
156165
}

src/main/java/com/adyen/httpclient/HttpURLConnectionClient.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,18 @@ public String request(String endpoint, String json, Config config, boolean isApi
6767
@Override
6868
public String request(String requestUrl, String requestBody, Config config, boolean isApiKeyRequired, RequestOptions requestOptions) throws IOException, HTTPClientException {
6969
HttpURLConnection httpConnection = createRequest(requestUrl, config.getApplicationName(), requestOptions);
70+
7071
String apiKey = config.getApiKey();
71-
int connectionTimeoutMillis = config.getConnectionTimeoutMillis();
7272
// Use Api key if required or if provided
7373
if (isApiKeyRequired || (apiKey != null && ! apiKey.isEmpty())) {
7474
setApiKey(httpConnection, apiKey);
7575
} else {
7676
setBasicAuthentication(httpConnection, config.getUsername(), config.getPassword());
7777
}
7878

79-
httpConnection.setConnectTimeout(connectionTimeoutMillis);
79+
httpConnection.setConnectTimeout(config.getConnectionTimeoutMillis());
80+
httpConnection.setReadTimeout(config.getReadTimeoutMillis());
81+
8082
setContentType(httpConnection, APPLICATION_JSON_TYPE);
8183

8284
return doPostRequest(httpConnection, requestBody);
@@ -150,7 +152,7 @@ private HttpURLConnection createRequest(String requestUrl, String applicationNam
150152
httpConnection.setRequestMethod(METHOD_POST);
151153

152154
httpConnection.setRequestProperty(ACCEPT_CHARSET, CHARSET);
153-
httpConnection.setRequestProperty(USER_AGENT, String.format("%s %s%s", applicationName, Client.USER_AGENT_SUFFIX, Client.LIB_VERSION));
155+
httpConnection.setRequestProperty(USER_AGENT, String.format("%s %s/%s", applicationName, Client.LIB_NAME, Client.LIB_VERSION));
154156
if (requestOptions != null && requestOptions.getIdempotencyKey() != null) {
155157
httpConnection.setRequestProperty(IDEMPOTENCY_KEY, requestOptions.getIdempotencyKey());
156158
}

src/main/java/com/adyen/model/PaymentRequest.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@
2727
import com.adyen.model.additionalData.InvoiceLine;
2828
import com.adyen.model.additionalData.SplitPayment;
2929
import com.adyen.model.additionalData.SplitPaymentItem;
30+
import com.adyen.model.applicationinfo.ApplicationInfo;
31+
import com.adyen.model.applicationinfo.CommonField;
3032
import com.google.gson.annotations.SerializedName;
33+
import static com.adyen.Client.LIB_NAME;
34+
import static com.adyen.Client.LIB_VERSION;
3135

3236
/**
3337
* PaymentRequest
@@ -47,6 +51,18 @@ public class PaymentRequest extends AbstractPaymentRequest<PaymentRequest> {
4751
@SerializedName("store")
4852
private String store = null;
4953

54+
@SerializedName("applicationInfo")
55+
private ApplicationInfo applicationInfo;
56+
57+
public PaymentRequest() {
58+
CommonField adyenLibrary = new CommonField();
59+
adyenLibrary.setName(LIB_NAME);
60+
adyenLibrary.setVersion(LIB_VERSION);
61+
62+
this.applicationInfo = new ApplicationInfo();
63+
this.applicationInfo.setAdyenLibrary(adyenLibrary);
64+
}
65+
5066
/**
5167
* how the shopper interacts with the system
5268
*/
@@ -287,6 +303,19 @@ public void setStore(String store) {
287303
this.store = store;
288304
}
289305

306+
public ApplicationInfo getApplicationInfo() {
307+
return applicationInfo;
308+
}
309+
310+
public void setApplicationInfo(ApplicationInfo applicationInfo) {
311+
this.applicationInfo = applicationInfo;
312+
}
313+
314+
public PaymentRequest applicationInfo(ApplicationInfo applicationInfo) {
315+
this.applicationInfo = applicationInfo;
316+
return this;
317+
}
318+
290319
@Override
291320
public boolean equals(Object o) {
292321
if (this == o) {
@@ -299,7 +328,9 @@ public boolean equals(Object o) {
299328
return super.equals(paymentRequest)
300329
&& Objects.equals(this.card, paymentRequest.card)
301330
&& Objects.equals(this.mpiData, paymentRequest.mpiData)
302-
&& Objects.equals(this.bankAccount, paymentRequest.bankAccount)
331+
&& Objects.equals(this.bankAccount,
332+
paymentRequest.bankAccount)
333+
&& Objects.equals(this.applicationInfo, paymentRequest.applicationInfo)
303334
&& Objects.equals(this.store, paymentRequest.store);
304335
}
305336

@@ -317,6 +348,7 @@ public String toString() {
317348
sb.append(" mpiData: ").append(toIndentedString(mpiData)).append("\n");
318349
sb.append(" bankAccount: ").append(toIndentedString(bankAccount)).append("\n");
319350
sb.append(" recurringProcessingModel: ").append(toIndentedString(recurringProcessingModel)).append("\n");
351+
sb.append(" applicationInfo: ").append(toIndentedString(applicationInfo)).append("\n");
320352
sb.append("}");
321353
return sb.toString();
322354
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
/*
2+
* ######
3+
* ######
4+
* ############ ####( ###### #####. ###### ############ ############
5+
* ############# #####( ###### #####. ###### ############# #############
6+
* ###### #####( ###### #####. ###### ##### ###### ##### ######
7+
* ###### ###### #####( ###### #####. ###### ##### ##### ##### ######
8+
* ###### ###### #####( ###### #####. ###### ##### ##### ######
9+
* ############# ############# ############# ############# ##### ######
10+
* ############ ############ ############# ############ ##### ######
11+
* ######
12+
* #############
13+
* ############
14+
*
15+
* Adyen Java API Library
16+
*
17+
* Copyright (c) 2017 Adyen B.V.
18+
* This file is open source and available under the MIT license.
19+
* See the LICENSE file for more info.
20+
*/
21+
package com.adyen.model.applicationinfo;
22+
23+
import com.google.gson.annotations.SerializedName;
24+
25+
public class ApplicationInfo {
26+
@SerializedName("adyenLibrary")
27+
private CommonField adyenLibrary;
28+
29+
@SerializedName("adyenPaymentSource")
30+
private CommonField adyenPaymentSource;
31+
32+
@SerializedName("merchantApplication")
33+
private CommonField merchantApplication;
34+
35+
@SerializedName("merchantDevice")
36+
private MerchantDevice merchantDevice;
37+
38+
@SerializedName("externalPlatform")
39+
private ExternalPlatform externalPlatform;
40+
41+
@SerializedName("shopperInteractionDevice")
42+
private ShopperInteractionDevice shopperInteractionDevice;
43+
44+
public CommonField getAdyenLibrary() {
45+
return adyenLibrary;
46+
}
47+
48+
public void setAdyenLibrary(CommonField adyenLibrary) {
49+
this.adyenLibrary = adyenLibrary;
50+
}
51+
52+
public CommonField getAdyenPaymentSource() {
53+
return adyenPaymentSource;
54+
}
55+
56+
public void setAdyenPaymentSource(CommonField adyenPaymentSource) {
57+
this.adyenPaymentSource = adyenPaymentSource;
58+
}
59+
60+
public CommonField getMerchantApplication() {
61+
return merchantApplication;
62+
}
63+
64+
public void setMerchantApplication(CommonField merchantApplication) {
65+
this.merchantApplication = merchantApplication;
66+
}
67+
68+
public MerchantDevice getMerchantDevice() {
69+
return merchantDevice;
70+
}
71+
72+
public void setMerchantDevice(MerchantDevice merchantDevice) {
73+
this.merchantDevice = merchantDevice;
74+
}
75+
76+
public ExternalPlatform getExternalPlatform() {
77+
return externalPlatform;
78+
}
79+
80+
public void setExternalPlatform(ExternalPlatform externalPlatform) {
81+
this.externalPlatform = externalPlatform;
82+
}
83+
84+
public ShopperInteractionDevice getShopperInteractionDevice() {
85+
return shopperInteractionDevice;
86+
}
87+
88+
public void setShopperInteractionDevice(ShopperInteractionDevice shopperInteractionDevice) {
89+
this.shopperInteractionDevice = shopperInteractionDevice;
90+
}
91+
92+
@Override
93+
public String toString() {
94+
return "ApplicationInfo{"
95+
+ "adyenLibrary="
96+
+ adyenLibrary
97+
+ ", adyenPaymentSource="
98+
+ adyenPaymentSource
99+
+ ", merchantApplication="
100+
+ merchantApplication
101+
+ ", merchantDevice="
102+
+ merchantDevice
103+
+ ", externalPlatform="
104+
+ externalPlatform
105+
+ ", shopperInteractionDevice="
106+
+ shopperInteractionDevice
107+
+ '}';
108+
}
109+
}

0 commit comments

Comments
 (0)